From 182a8b8a12df8ebb83ff43f5b8de5da9fb5a2089 Mon Sep 17 00:00:00 2001 From: A-xeset Date: Sun, 4 Jan 2026 14:07:02 +0700 Subject: [PATCH] VerbIconData update --- .../SourceCode/Editors/VerbIconData.cpp | 18 ++++ Spore ModAPI/Spore ModAPI.vcxproj.filters | 3 + Spore ModAPI/Spore/Editors/VerbIconData.h | 102 +++++++++++++++--- 3 files changed, 110 insertions(+), 13 deletions(-) create mode 100644 Spore ModAPI/SourceCode/Editors/VerbIconData.cpp diff --git a/Spore ModAPI/SourceCode/Editors/VerbIconData.cpp b/Spore ModAPI/SourceCode/Editors/VerbIconData.cpp new file mode 100644 index 00000000..2edce048 --- /dev/null +++ b/Spore ModAPI/SourceCode/Editors/VerbIconData.cpp @@ -0,0 +1,18 @@ +#ifndef MODAPI_DLL_EXPORT +#include + + +namespace Editors +{ + auto_METHOD_VIRTUAL_(VerbIconData, VerbIconData, int, AddRef); + auto_METHOD_VIRTUAL_(VerbIconData, VerbIconData, int, Release); + auto_METHOD_VIRTUAL_(VerbIconData, VerbIconData, void*, Dispose); + auto_METHOD_VIRTUAL(VerbIconData, VerbIconData, void*, AsInterface, Args(Editors::VerbIconData::InterfaceId interfaceID), Args(interfaceID)); + auto_METHOD_VIRTUAL_VOID(VerbIconData, VerbIconData, Init, Args(App::PropertyList* abilityProp), Args(abilityProp)); + auto_METHOD_VIRTUAL_VOID_(VerbIconData, VerbIconData, Shutdown); + auto_METHOD_VIRTUAL_VOID(VerbIconData, VerbIconData, SetArrayIndex, Args(int arrayIndex), Args(arrayIndex)); + auto_METHOD_VIRTUAL_VOID(VerbIconData, VerbIconData, SetHotKey, Args(int verbIconTriggerKey), Args(verbIconTriggerKey)); + auto_METHOD_VIRTUAL(VerbIconData, VerbIconData, eastl::string16, GetIconName, Args(eastl::string16* iconName, bool includeLevel), Args(iconName, includeLevel)); + auto_METHOD_VIRTUAL(VerbIconData, VerbIconData, eastl::string16, GetIconDescription, Args(eastl::string16* iconDesc), Args(iconDesc)); +} +#endif \ No newline at end of file diff --git a/Spore ModAPI/Spore ModAPI.vcxproj.filters b/Spore ModAPI/Spore ModAPI.vcxproj.filters index 1bfe6d18..aee18790 100644 --- a/Spore ModAPI/Spore ModAPI.vcxproj.filters +++ b/Spore ModAPI/Spore ModAPI.vcxproj.filters @@ -2738,6 +2738,9 @@ Source Files + + Source Files + diff --git a/Spore ModAPI/Spore/Editors/VerbIconData.h b/Spore ModAPI/Spore/Editors/VerbIconData.h index a43b1773..d4398441 100644 --- a/Spore ModAPI/Spore/Editors/VerbIconData.h +++ b/Spore ModAPI/Spore/Editors/VerbIconData.h @@ -11,33 +11,94 @@ namespace Editors { class VerbIconData - : public Object - , public DefaultRefCounted + //: public Object + : public DefaultRefCounted { public: static const uint32_t TYPE = 0x4AA0ACD; + + enum InterfaceId + { + kIIDMin = 0, + kIIDFactory = 1, + kIIDMax = 0xffffffff, + }; - /* 10h */ virtual void ParseProp(App::PropertyList* propList); - /// Resets mpPropList - /* 14h */ virtual void ClearPropList(); - /* 18h */ virtual void func18h(int); + /* 00h */ virtual int AddRef(); + /* 04h */ virtual int Release(); + /* 08h */ virtual void* Dispose(); + /* 0Ch */ virtual void* AsInterface(InterfaceId propList); + /* 10h */ virtual void Init(App::PropertyList* propList); + /* 14h */ virtual void Shutdown(); + /* 18h */ virtual void SetArrayIndex(int arrayIndex); /// Used to generate text - /* 20h */ virtual void SetKey(int verbIconTriggerKey); - /* 24h */ virtual eastl::string16 GetName(bool includeLevel); - /* 28h */ virtual eastl::string16 GetDescription(); + /* 1Ch */ virtual void SetHotKey(int verbIconTriggerKey); + /* 20h */ virtual eastl::string16 GetIconName(eastl::string16* iconName,bool includeLevel); + /* 24h */ virtual eastl::string16 GetIconDescription(eastl::string16* iconDesc); + + enum eVerbIconCategory + { + kVerbCategoryNULL = 0, + kVerbCategoryTribeAttack = 180661997, + kVerbCategoryVehiclePower = 360359141, + kVerbCategorySpeed = 640949982, + kVerbCategoryTribeArmor = 662199250, + kVerbCategoryHerbivore = 771444639, + kVerbCategorySpit = 823131355, + kVerbCategoryCellCilia = 835506386, + kVerbCategoryVehicleDefense = 886488350, + kVerbCategoryCellJaw = 1101458518, + kVerbCategoryCellJet = 1168568857, + kVerbCategorySprint = 1296465089, + kVerbCategoryCellOmnivore = 1377441237, + kVerbCategoryCellElectric = 1470348634, + kVerbCategoryVehicleSpeed = 1501155019, + kVerbCategoryOmnivore = 1557282664, + kVerbCategoryTribeSocial = 1589650888, + kVerbCategoryCellPoison = 1601154124, + kVerbCategoryBite = 1645043423, + kVerbCategoryDance = 1924791374, + kVerbCategoryStarvivore = 2095425492, + kVerbCategoryCellFlagella = 2165516464, + kVerbCategoryGesture = 2167648234, + kVerbCategoryPower = 2391494160, + kVerbCategoryDefense = 2564315215, + kVerbCategoryCarnivore = 2726979560, + kVerbCategoryStealth = 2909291642, + kVerbCategoryPosture = 2909789983, + kVerbCategoryCellHealth = 2964572918, + kVerbCategoryGlide = 2968795556, + kVerbCategoryCellPoker = 3013574067, + kVerbCategoryCellFilter = 3020374546, + kVerbCategoryTribeFishing = 3188984297, + kVerbCategoryTribeGather = 3253334812, + kVerbCategoryVocalize = 3478552014, + kVerbCategoryCellStarvivore = 3610717237, + kVerbCategoryCellSpike = 3634179486, + kVerbCategoryCellHerbivore = 3653024240, + kVerbCategoryHealth = 3677180323, + kVerbCategoryCellCarnivore = 3751859903, + kVerbCategoryCall = 3753286133, + kVerbCategoryJump = 3833651337, + kVerbCategoryBlock = 4001580976, + kVerbCategorySense = 4069948569, + kVerbCategoryStrike = 4110605575, + kVerbCategoryGrasp = 4248645338, + kVerbCategoryCharge = 4285247397 + }; public: /* 0Ch */ bool mVerbIconUseDescription; // true /* 0Dh */ bool mVerbIconShowLevel; // true /* 0Eh */ bool mPaletteItemRolloverShowLevel; // true /* 0Fh */ bool mVerbIconRolloverShowLevel; // true - /* 10h */ bool field_10; + /* 10h */ bool mShowHotKey; /* 11h */ bool mVerbIconShowZeroLevel; /* 14h */ int mVerbIconTriggerKey; // -1 - /* 18h */ int field_18; // not initialized + /* 18h */ float mVerbIconLevel; // not initialized /* 1Ch */ float mVerbIconMaxLevel; /* 20h */ int field_20; // not initialized - /* 24h */ uint32_t mVerbIconCategory; + /* 24h */ eVerbIconCategory mVerbIconCategory; /* 28h */ uint32_t mVerbIconRepresentativeAnimation; // -1 /* 2Ch */ Math::ColorRGBA mVerbIconColor; /* 3Ch */ uint32_t mVerbIconRolloverLevelImageID; @@ -61,5 +122,20 @@ namespace Editors /* B4h */ ResourceKey mVerbIconStaticLayout; /* C0h */ PropertyListPtr mpPropList; }; - ASSERT_SIZE(VerbIconData, 0xC4); + ASSERT_SIZE(VerbIconData, 0xC0); + + namespace Addresses(VerbIconData) + { + DeclareAddress(AddRef); + DeclareAddress(Release); + DeclareAddress(Dispose); + DeclareAddress(AsInterface); + DeclareAddress(Init); + DeclareAddress(Shutdown); + DeclareAddress(SetArrayIndex); + DeclareAddress(SetHotKey); + DeclareAddress(GetIconName); + DeclareAddress(OnKeyDown); + DeclareAddress(GetIconDescription); + } } \ No newline at end of file