diff options
| author | Roman971 <32455037+Roman971@users.noreply.github.com> | 2020-05-06 00:53:15 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-05-05 18:53:15 -0400 |
| commit | 1425678d8a995bfa68527ec5043b93529f0a85df (patch) | |
| tree | 99ddc44cff0fcaf41c8eb3d470186b27f89b98d8 /src/code | |
| parent | f114df8929e4bf4dbe74d106e8c101bb660bc442 (diff) | |
More actor cleanup Part 3 (#118)
* Add custom types for actor specific functions (like actions)
* Add a forward struct declaration for all other actors
Diffstat (limited to 'src/code')
| -rw-r--r-- | src/code/z_en_a_keep.c | 20 | ||||
| -rw-r--r-- | src/code/z_en_item00.c | 26 |
2 files changed, 27 insertions, 19 deletions
diff --git a/src/code/z_en_a_keep.c b/src/code/z_en_a_keep.c index 9dc0e35bf..3358876b9 100644 --- a/src/code/z_en_a_keep.c +++ b/src/code/z_en_a_keep.c @@ -16,9 +16,13 @@ typedef enum { /* 0x0B */ A_OBJ_KNOB } AObjType; -typedef struct { +struct EnAObj; + +typedef void (*EnAObjActionFunc)(struct EnAObj*, GlobalContext*); + +typedef struct EnAObj { /* 0x000 */ DynaPolyActor dyna; - /* 0x164 */ ActorFunc actionFunc; + /* 0x164 */ EnAObjActionFunc actionFunc; /* 0x168 */ s32 unk_168; /* 0x16C */ s16 textId; /* 0x16E */ s16 unk_16E; @@ -66,7 +70,7 @@ extern ColliderCylinderInit D_80115440; extern u32 D_8011546C[]; extern u32 D_80115484[]; -void EnAObj_SetupAction(EnAObj* this, ActorFunc actionFunc) { +void EnAObj_SetupAction(EnAObj* this, EnAObjActionFunc actionFunc) { this->actionFunc = actionFunc; } @@ -192,7 +196,7 @@ void func_8001D204(EnAObj* this, GlobalContext* globalCtx) { } void func_8001D234(EnAObj* this, s16 params) { - EnAObj_SetupAction(this, (ActorFunc)func_8001D25C); + EnAObj_SetupAction(this, func_8001D25C); } void func_8001D25C(EnAObj* this, GlobalContext* globalCtx) { @@ -202,7 +206,7 @@ void func_8001D25C(EnAObj* this, GlobalContext* globalCtx) { var = this->dyna.actor.rotTowardsLinkY - this->dyna.actor.shape.rot.y; if ((ABS(var) < 0x2800) || ((this->dyna.actor.params == 0xA) && (ABS(var) > 0x5800))) { if (func_8002F194(&this->dyna.actor, globalCtx)) { - EnAObj_SetupAction(this, (ActorFunc)func_8001D204); + EnAObj_SetupAction(this, func_8001D204); } else { func_8002F2F4(&this->dyna.actor, globalCtx); } @@ -215,7 +219,7 @@ void func_8001D310(EnAObj* this, s16 params) { this->unk_168 = 10; this->dyna.actor.posRot.rot.y = 0; this->dyna.actor.shape.rot = this->dyna.actor.posRot.rot; - EnAObj_SetupAction(this, (ActorFunc)func_8001D360); + EnAObj_SetupAction(this, func_8001D360); } void func_8001D360(EnAObj* this, GlobalContext* globalCtx) { @@ -258,7 +262,7 @@ void func_8001D360(EnAObj* this, GlobalContext* globalCtx) { } void func_8001D480(EnAObj* this, s16 params) { - EnAObj_SetupAction(this, (ActorFunc)func_8001D4A8); + EnAObj_SetupAction(this, func_8001D4A8); } void func_8001D4A8(EnAObj* this, GlobalContext* globalCtx) { @@ -288,7 +292,7 @@ void func_8001D4A8(EnAObj* this, GlobalContext* globalCtx) { void func_8001D5C8(EnAObj* this, s16 params) { this->dyna.actor.unk_FC = 1200.0f; this->dyna.actor.unk_F8 = 720.0f; - EnAObj_SetupAction(this, (ActorFunc)func_8001D608); + EnAObj_SetupAction(this, func_8001D608); } void func_8001D608(EnAObj* this, GlobalContext* globalCtx) { diff --git a/src/code/z_en_item00.c b/src/code/z_en_item00.c index 931ef11b0..9cc105dd1 100644 --- a/src/code/z_en_item00.c +++ b/src/code/z_en_item00.c @@ -30,9 +30,13 @@ typedef enum { /* 0x19 */ ITEM00_BOMBS_SPECIAL } Item00Type; -typedef struct { +struct EnItem00; + +typedef void (*EnItem00ActionFunc)(struct EnItem00*, GlobalContext*); + +typedef struct EnItem00 { /* 0x000 */ Actor actor; - /* 0x14C */ ActorFunc actionFunc; + /* 0x14C */ EnItem00ActionFunc actionFunc; /* 0x150 */ s16 collectibleFlag; /* 0x152 */ s16 unk_152; /* 0x154 */ s16 unk_154; @@ -83,7 +87,7 @@ extern u8 D_80115664[]; // Internal Actor Functions -void EnItem00_SetupAction(EnItem00* this, ActorFunc actionFunc) { +void EnItem00_SetupAction(EnItem00* this, EnItem00ActionFunc actionFunc) { this->actionFunc = actionFunc; } @@ -228,7 +232,7 @@ void EnItem00_Init(Actor* thisx, GlobalContext* globalCtx) { this->unk_152 = 0; if (!spawnParam8000) { - EnItem00_SetupAction(this, (ActorFunc)func_8001DFC8); + EnItem00_SetupAction(this, func_8001DFC8); this->unk_15A = -1; return; } @@ -310,7 +314,7 @@ void EnItem00_Init(Actor* thisx, GlobalContext* globalCtx) { func_8002F554(&this->actor, globalCtx, getItemId); } - EnItem00_SetupAction(this, (ActorFunc)func_8001E5C8); + EnItem00_SetupAction(this, func_8001E5C8); this->actionFunc(this, globalCtx); } @@ -362,7 +366,7 @@ void func_8001DFC8(EnItem00* this, GlobalContext* globalCtx) { } if ((this->actor.gravity != 0.0f) && !(this->actor.bgCheckFlags & 0x0001)) { - EnItem00_SetupAction(this, (ActorFunc)func_8001E1C8); + EnItem00_SetupAction(this, func_8001E1C8); } } @@ -384,7 +388,7 @@ void func_8001E1C8(EnItem00* this, GlobalContext* globalCtx) { if (this->actor.bgCheckFlags & 0x0003) { originalVelocity = this->actor.velocity.y; if (originalVelocity > -2.0f) { - EnItem00_SetupAction(this, (ActorFunc)func_8001DFC8); + EnItem00_SetupAction(this, func_8001DFC8); this->actor.velocity.y = 0.0f; } else { this->actor.velocity.y = originalVelocity * -0.8f; @@ -440,7 +444,7 @@ void func_8001E304(EnItem00* this, GlobalContext* globalCtx) { } if (this->actor.bgCheckFlags & 0x0003) { - EnItem00_SetupAction(this, (ActorFunc)func_8001DFC8); + EnItem00_SetupAction(this, func_8001DFC8); this->actor.shape.rot.z = 0; this->actor.velocity.y = 0.0f; this->actor.speedXZ = 0.0f; @@ -694,7 +698,7 @@ void EnItem00_Update(Actor* thisx, GlobalContext* globalCtx) { Actor_SetScale(&this->actor, this->unk_15C); this->unk_152 = 0; - EnItem00_SetupAction(this, (ActorFunc)func_8001E5C8); + EnItem00_SetupAction(this, func_8001E5C8); } // Draw Function prototypes (used in EnItem00_Draw) @@ -939,7 +943,7 @@ Actor* Item_DropCollectible(GlobalContext* globalCtx, Vec3f* spawnPos, s16 param spawnedActor->actor.gravity = -0.9f; spawnedActor->actor.posRot.rot.y = Math_Rand_CenteredFloat(65536.0f); Actor_SetScale(&spawnedActor->actor, 0.0f); - EnItem00_SetupAction(spawnedActor, (ActorFunc)func_8001E304); + EnItem00_SetupAction(spawnedActor, func_8001E304); spawnedActor->unk_15A = 220; if ((spawnedActor->actor.params != ITEM00_SMALL_KEY) && (spawnedActor->actor.params != ITEM00_HEART_PIECE) && @@ -1090,7 +1094,7 @@ void Item_DropCollectibleRandom(GlobalContext* globalCtx, Actor* fromActor, Vec3 spawnedActor->actor.gravity = -0.9f; spawnedActor->actor.posRot.rot.y = Math_Rand_ZeroOne() * 40000.0f; Actor_SetScale(&spawnedActor->actor, 0.0f); - EnItem00_SetupAction(spawnedActor, (ActorFunc)func_8001E304); + EnItem00_SetupAction(spawnedActor, func_8001E304); spawnedActor->actor.flags |= 0x0010; if ((spawnedActor->actor.params != ITEM00_SMALL_KEY) && (spawnedActor->actor.params != ITEM00_HEART_PIECE) && |
