diff --git a/src/component/CCharacterComponent.cpp b/src/component/CCharacterComponent.cpp index 2beb51a..1e3d4fd 100644 --- a/src/component/CCharacterComponent.cpp +++ b/src/component/CCharacterComponent.cpp @@ -122,6 +122,21 @@ HTEXTURE CCharacterComponent::CreateTexture(const char* fileName, CStatus* statu return TextureCreate(fileName, texFlags, status, 0); } +GEOCOMPONENTLINKS CCharacterComponent::GetSheatheLink(SHEATHE_TYPE sheatheType, bool a2) { + switch (sheatheType) { + case SHEATHE_1: + return a2 ? ATTACH_SHEATH_MAINHAND : ATTACH_SHEATH_OFFHAND; + case SHEATHE_2: + return a2 ? ATTACH_LARGEWEAPONLEFT : ATTACH_LARGEWEAPONRIGHT; + case SHEATHE_3: + return a2 ? ATTACH_HIPWEAPONLEFT : ATTACH_HIPWEAPONRIGHT; + case SHEATHE_4: + return ATTACH_SHEATH_SHIELD; + default: + return ATTACH_NONE; + } +} + void CCharacterComponent::Initialize() { // TODO diff --git a/src/component/CCharacterComponent.hpp b/src/component/CCharacterComponent.hpp index ce41b0e..fe59107 100644 --- a/src/component/CCharacterComponent.hpp +++ b/src/component/CCharacterComponent.hpp @@ -50,6 +50,7 @@ class CCharacterComponent { static void AddHandItem(CM2Model* model, const ItemDisplayInfoRec* displayRec, INVENTORY_SLOTS invSlot, SHEATHE_TYPE sheatheType, bool a5, bool a6, bool a7, int32_t a8); static CCharacterComponent* AllocComponent(); static HTEXTURE CreateTexture(const char* fileName, CStatus* status); + static GEOCOMPONENTLINKS GetSheatheLink(SHEATHE_TYPE sheatheType, bool a2); static void Initialize(); static void Initialize(EGxTexFormat textureFormat, uint32_t textureLevel, int32_t thread, int32_t compress); static void InitDbData(); diff --git a/src/component/Types.hpp b/src/component/Types.hpp index 8046c0b..eb58240 100644 --- a/src/component/Types.hpp +++ b/src/component/Types.hpp @@ -52,6 +52,24 @@ enum COMPONENT_VARIATIONS { NUM_COMPONENT_VARIATIONS }; +enum GEOCOMPONENTLINKS { + // TODO + ATTACH_HANDR = 1, + ATTACH_HANDL = 2, + // TODO + ATTACH_SHEATH_MAINHAND = 26, + ATTACH_SHEATH_OFFHAND = 27, + ATTACH_SHEATH_SHIELD = 28, + // TODO + ATTACH_LARGEWEAPONLEFT = 30, + ATTACH_LARGEWEAPONRIGHT = 31, + // TODO + ATTACH_HIPWEAPONLEFT = 32, + ATTACH_HIPWEAPONRIGHT = 33, + // TODO + ATTACH_NONE = 0xFFFFFFFF, +}; + enum ITEM_SLOT { ITEMSLOT_0 = 0, ITEMSLOT_1 = 1, diff --git a/src/object/Types.hpp b/src/object/Types.hpp index be72edc..9db5ede 100644 --- a/src/object/Types.hpp +++ b/src/object/Types.hpp @@ -40,6 +40,10 @@ enum INVENTORY_SLOTS { enum SHEATHE_TYPE { SHEATHE_0 = 0, + SHEATHE_1 = 1, + SHEATHE_2 = 2, + SHEATHE_3 = 3, + SHEATHE_4 = 4, NUM_SHEATHE_TYPES };