diff options
| author | Aetias <aetias@outlook.com> | 2024-04-21 12:11:23 +0200 |
|---|---|---|
| committer | Aetias <aetias@outlook.com> | 2024-04-21 12:11:23 +0200 |
| commit | 188ac744cab319d3e340a91dec790c7bb4b81192 (patch) | |
| tree | 0cee46d453933f4997ebec4fe9c4f78c9f6b2cdd /include/Actor | |
| parent | e54e6a277cbdcd3830e9258be2577fe974e51b1a (diff) | |
Delink `ActorType`
Diffstat (limited to 'include/Actor')
| -rw-r--r-- | include/Actor/ActorType.hpp | 77 |
1 files changed, 75 insertions, 2 deletions
diff --git a/include/Actor/ActorType.hpp b/include/Actor/ActorType.hpp index b004a044..29031faf 100644 --- a/include/Actor/ActorType.hpp +++ b/include/Actor/ActorType.hpp @@ -5,13 +5,86 @@ #include "Actor/Actor.hpp" +#define __ACTOR_TYPE_ID(a,b,c,d) (((a) << 24) | ((b) << 16) | ((c) << 8) | (d)) + +typedef u32 ActorTypeId; +enum ActorTypeId_ { + ActorTypeId_Navi = __ACTOR_TYPE_ID('N','A','V','I'), + ActorTypeId_ForceNavi = __ACTOR_TYPE_ID('F','C','N','V'), + ActorTypeId_WisdomNavi = __ACTOR_TYPE_ID('W','S','N','V'), + + ActorTypeId_TreasureMap = __ACTOR_TYPE_ID('T','M','A','P'), + ActorTypeId_DigSpot = __ACTOR_TYPE_ID('D','G','T','G'), + + ActorTypeId_ShopItemBombchus = __ACTOR_TYPE_ID('I','T','B','T'), + ActorTypeId_ShopItemBombs = __ACTOR_TYPE_ID('I','T','B','M'), + ActorTypeId_ShopItemTreasure = __ACTOR_TYPE_ID('I','T','T','R'), + ActorTypeId_ShopItemHeartContainer = __ACTOR_TYPE_ID('I','T','H','U'), + ActorTypeId_ShopItemQuiver = __ACTOR_TYPE_ID('I','T','A','P'), + ActorTypeId_ShopItemBombBag = __ACTOR_TYPE_ID('I','T','B','B'), + ActorTypeId_ShopItemRedPotion = __ACTOR_TYPE_ID('I','T','P','B'), + ActorTypeId_ShopItemCourageGem = __ACTOR_TYPE_ID('I','T','S','R'), + ActorTypeId_ShopItemShield = __ACTOR_TYPE_ID('I','T','S','L'), + ActorTypeId_ShopItemSoldOut = __ACTOR_TYPE_ID('I','T','S','O'), + + ActorTypeId_Heart = __ACTOR_TYPE_ID('H','A','R','T'), + ActorTypeId_Rupee = __ACTOR_TYPE_ID('R','U','P','Y'), + + ActorTypeId_Bomb = __ACTOR_TYPE_ID('B','O','M','B'), + ActorTypeId_Arrow = __ACTOR_TYPE_ID('A','R','R','W'), + + ActorTypeId_PlayerDummy = __ACTOR_TYPE_ID('P','L','D','M'), + ActorTypeId_PushBlock = __ACTOR_TYPE_ID('P','S','B','L'), + ActorTypeId_WindBlock = __ACTOR_TYPE_ID('W','B','L','K'), + ActorTypeId_StorageDrum = __ACTOR_TYPE_ID('D','R','U','M'), + + ActorTypeId_SmallKey = __ACTOR_TYPE_ID('N','K','E','Y'), + + ActorTypeId_Sandworm = __ACTOR_TYPE_ID('M','L','D','W'), + ActorTypeId_Tektite = __ACTOR_TYPE_ID('T','E','K','T'), + ActorTypeId_PolsVoice = __ACTOR_TYPE_ID('P','L','S','V'), + ActorTypeId_Yook = __ACTOR_TYPE_ID('Y','E','T','I'), + ActorTypeId_Armos = __ACTOR_TYPE_ID('A','M','O','S'), + ActorTypeId_Stalfos = __ACTOR_TYPE_ID('S','T','L','F'), + ActorTypeId_StalfosWarrior = __ACTOR_TYPE_ID('S','T','L','W'), + ActorTypeId_ChuChu = __ACTOR_TYPE_ID('C','H','U','C'), + ActorTypeId_Gel = __ACTOR_TYPE_ID('G','E','L','L'), + ActorTypeId_Bee = __ACTOR_TYPE_ID('B','E','E','0'), + ActorTypeId_BeeHive = __ACTOR_TYPE_ID('B','E','E','H'), + ActorTypeId_Cucco = __ACTOR_TYPE_ID('K','O','K','O'), + ActorTypeId_Rope = __ACTOR_TYPE_ID('S','N','A','K'), + ActorTypeId_Octorok = __ACTOR_TYPE_ID('O','C','T','A'), + ActorTypeId_Keese = __ACTOR_TYPE_ID('K','E','T','H'), + ActorTypeId_Rat = __ACTOR_TYPE_ID('R','A','T','0'), + ActorTypeId_Beamos = __ACTOR_TYPE_ID('B','M','O','S'), + ActorTypeId_LikeLike = __ACTOR_TYPE_ID('L','K','L','K'), + ActorTypeId_Crow = __ACTOR_TYPE_ID('C','R','O','W'), + + ActorTypeId_Linebeck = __ACTOR_TYPE_ID('L','N','B','K'), + ActorTypeId_Mailbox = __ACTOR_TYPE_ID('P','O','S','T'), + ActorTypeId_Postman = __ACTOR_TYPE_ID('P','S','T','M'), +}; + typedef Actor* (*ActorCreateFunc)(); struct ActorType { - /* 00 */ char type[4]; + /* 00 */ ActorTypeId id; /* 04 */ ActorCreateFunc create; - /* 08 */ unk32 unk_08; + /* 08 */ void *unk_08; /* 0c */ unk32 unk_0c; /* 10 */ ActorType *next; /* 14 */ + + ActorType(ActorTypeId id, ActorCreateFunc create, void *unk_08); + ~ActorType(); + void func_0203e7c8(); + void Register(); + void Unregister(); + static ActorType* Find(ActorTypeId id); +}; + +struct ActorTypeList { + /* 0 */ ActorType *head; + /* 4 */ ActorType *tail; + /* 8 */ }; |
