summaryrefslogtreecommitdiff
path: root/src/code
diff options
context:
space:
mode:
authorRoman971 <32455037+Roman971@users.noreply.github.com>2020-05-04 21:02:51 +0200
committerGitHub <noreply@github.com>2020-05-04 15:02:51 -0400
commitf114df8929e4bf4dbe74d106e8c101bb660bc442 (patch)
tree41a0e33c3fef8d5c81bbb2e2db32c4c5813d6556 /src/code
parent8efddb0fe07edbb2902a41cab55cc9b67bf424ae (diff)
More actor cleanup Part 2 (#116)
* Change all main actor functions to take a 'Actor* thisx' argument * Change all actor callbacks to also take a 'Actor* thisx' argument
Diffstat (limited to 'src/code')
-rw-r--r--src/code/z_en_a_keep.c118
-rw-r--r--src/code/z_en_item00.c29
-rw-r--r--src/code/z_player_call.c40
3 files changed, 95 insertions, 92 deletions
diff --git a/src/code/z_en_a_keep.c b/src/code/z_en_a_keep.c
index ba371daa2..9dc0e35bf 100644
--- a/src/code/z_en_a_keep.c
+++ b/src/code/z_en_a_keep.c
@@ -31,6 +31,13 @@ typedef struct {
#define FLAGS 0x00000010
+#define THIS ((EnAObj*)thisx)
+
+void EnAObj_Init(Actor* thisx, GlobalContext* globalCtx);
+void EnAObj_Destroy(Actor* thisx, GlobalContext* globalCtx);
+void EnAObj_Update(Actor* thisx, GlobalContext* globalCtx);
+void EnAObj_Draw(Actor* thisx, GlobalContext* globalCtx);
+
void func_8001D204(EnAObj* this, GlobalContext* globalCtx);
void func_8001D25C(EnAObj* this, GlobalContext* globalCtx);
void func_8001D360(EnAObj* this, GlobalContext* globalCtx);
@@ -42,11 +49,6 @@ void func_8001D310(EnAObj* this, s16 params);
void func_8001D480(EnAObj* this, s16 params);
void func_8001D5C8(EnAObj* this, s16 params);
-void EnAObj_Init(EnAObj* this, GlobalContext* globalCtx);
-void EnAObj_Destroy(EnAObj* this, GlobalContext* globalCtx);
-void EnAObj_Update(EnAObj* this, GlobalContext* globalCtx);
-void EnAObj_Draw(EnAObj* this, GlobalContext* globalCtx);
-
const ActorInit En_A_Obj_InitVars = {
ACTOR_EN_A_OBJ,
ACTORTYPE_PROP,
@@ -68,119 +70,118 @@ void EnAObj_SetupAction(EnAObj* this, ActorFunc actionFunc) {
this->actionFunc = actionFunc;
}
-void EnAObj_Init(EnAObj* this, GlobalContext* globalCtx) {
- u32 sp34;
+void EnAObj_Init(Actor* thisx, GlobalContext* globalCtx) {
+ u32 sp34 = 0;
s32 pad;
- EnAObj* this2 = this;
+ EnAObj* this = THIS;
f32 sp28;
- sp34 = 0;
sp28 = 6.0f;
- this->textId = (this->dyna.actor.params >> 8) & 0xFF;
- this->dyna.actor.params &= 0xFF;
+ this->textId = (thisx->params >> 8) & 0xFF;
+ thisx->params &= 0xFF;
- switch (this->dyna.actor.params) {
+ switch (thisx->params) {
case A_OBJ_BLOCK_SMALL:
- Actor_SetScale(&this->dyna.actor, 0.025f);
+ Actor_SetScale(thisx, 0.025f);
break;
case A_OBJ_BLOCK_LARGE:
- Actor_SetScale(&this->dyna.actor, 0.05f);
+ Actor_SetScale(thisx, 0.05f);
break;
case A_OBJ_BLOCK_HUGE:
case A_OBJ_CUBE_SMALL:
case A_OBJ_UNKNOWN_6:
- Actor_SetScale(&this->dyna.actor, 0.1f);
+ Actor_SetScale(thisx, 0.1f);
break;
case A_OBJ_BLOCK_SMALL_ROT:
- Actor_SetScale(&this->dyna.actor, 0.005f);
+ Actor_SetScale(thisx, 0.005f);
break;
case A_OBJ_BLOCK_LARGE_ROT:
default:
- Actor_SetScale(&this->dyna.actor, 0.01f);
+ Actor_SetScale(thisx, 0.01f);
break;
}
- if (this->dyna.actor.params >= 9) {
+ if (thisx->params >= 9) {
sp28 = 12.0f;
}
- ActorShape_Init(&this->dyna.actor.shape, 0.0f, ActorShadow_DrawFunc_Circle, sp28);
+ ActorShape_Init(&thisx->shape, 0.0f, ActorShadow_DrawFunc_Circle, sp28);
- this->dyna.actor.posRot2.pos = this->dyna.actor.posRot.pos;
+ thisx->posRot2.pos = thisx->posRot.pos;
this->dyna.dynaPolyId = -1;
this->dyna.unk_160 = 0;
this->dyna.unk_15C = 0;
- this->dyna.actor.unk_FC = 1200.0f;
- this->dyna.actor.unk_F8 = 200.0f;
+ thisx->unk_FC = 1200.0f;
+ thisx->unk_F8 = 200.0f;
- switch (this->dyna.actor.params) {
+ switch (thisx->params) {
case A_OBJ_BLOCK_LARGE:
case A_OBJ_BLOCK_HUGE:
- this2->dyna.dynaPolyId = 1;
- Actor_ChangeType(globalCtx, &globalCtx->actorCtx, &this->dyna.actor, ACTORTYPE_BG);
- func_8001D5C8(this2, this->dyna.actor.params);
+ this->dyna.dynaPolyId = 1;
+ Actor_ChangeType(globalCtx, &globalCtx->actorCtx, thisx, ACTORTYPE_BG);
+ func_8001D5C8(this, thisx->params);
break;
case A_OBJ_BLOCK_SMALL_ROT:
case A_OBJ_BLOCK_LARGE_ROT:
- this2->dyna.dynaPolyId = 3;
- Actor_ChangeType(globalCtx, &globalCtx->actorCtx, &this->dyna.actor, ACTORTYPE_BG);
- func_8001D310(this2, this->dyna.actor.params);
+ this->dyna.dynaPolyId = 3;
+ Actor_ChangeType(globalCtx, &globalCtx->actorCtx, thisx, ACTORTYPE_BG);
+ func_8001D310(this, thisx->params);
break;
case A_OBJ_UNKNOWN_6:
// clang-format off
- this->dyna.actor.flags |= 0x1; this2->dyna.dynaPolyId = 5; this2->unk_178 = 10.0f;
+ thisx->flags |= 0x1; this->dyna.dynaPolyId = 5; this->unk_178 = 10.0f;
// clang-format on
- this->dyna.actor.gravity = -2.0f;
- func_8001D234(this2, this->dyna.actor.params);
+ thisx->gravity = -2.0f;
+ func_8001D234(this, thisx->params);
break;
case A_OBJ_GRASS_CLUMP:
case A_OBJ_TREE_STUMP:
- this2->dyna.dynaPolyId = 0;
- func_8001D234(this2, this->dyna.actor.params);
+ this->dyna.dynaPolyId = 0;
+ func_8001D234(this, thisx->params);
break;
case A_OBJ_SIGNPOST_OBLONG:
case A_OBJ_SIGNPOST_ARROW:
- this->dyna.actor.textId = (this2->textId & 0xFF) | 0x300;
+ thisx->textId = (this->textId & 0xFF) | 0x300;
// clang-format off
- this->dyna.actor.flags |= 0x1 | 0x8; this->dyna.actor.unk_4C = 500.0f;
+ thisx->flags |= 0x1 | 0x8; thisx->unk_4C = 500.0f;
// clang-format on
- this2->unk_178 = 45.0f;
- func_8001D234(this2, this->dyna.actor.params);
- Collider_InitCylinder(globalCtx, &this2->collider);
- Collider_SetCylinder(globalCtx, &this2->collider, &this->dyna.actor, &D_80115440);
- this->dyna.actor.colChkInfo.mass = 0xFF;
- this->dyna.actor.unk_1F = 0;
+ this->unk_178 = 45.0f;
+ func_8001D234(this, thisx->params);
+ Collider_InitCylinder(globalCtx, &this->collider);
+ Collider_SetCylinder(globalCtx, &this->collider, thisx, &D_80115440);
+ thisx->colChkInfo.mass = 0xFF;
+ thisx->unk_1F = 0;
break;
case A_OBJ_KNOB:
- this->dyna.actor.gravity = -1.5f;
- func_8001D480(this2, this->dyna.actor.params);
+ thisx->gravity = -1.5f;
+ func_8001D480(this, thisx->params);
break;
default:
- this->dyna.actor.gravity = -2.0f;
- func_8001D234(this2, this->dyna.actor.params);
+ thisx->gravity = -2.0f;
+ func_8001D234(this, thisx->params);
break;
}
- if (this->dyna.actor.params < 5) {
- this->dyna.actor.colChkInfo.mass = 0xFF;
+ if (thisx->params < 5) {
+ thisx->colChkInfo.mass = 0xFF;
}
if (this->dyna.dynaPolyId != -1) {
DynaPolyInfo_Alloc(D_8011546C[this->dyna.dynaPolyId], &sp34);
- this->dyna.dynaPolyId = DynaPolyInfo_RegisterActor(globalCtx, &globalCtx->colCtx.dyna, &this->dyna.actor, sp34);
+ this->dyna.dynaPolyId = DynaPolyInfo_RegisterActor(globalCtx, &globalCtx->colCtx.dyna, thisx, sp34);
}
}
-void EnAObj_Destroy(EnAObj* this, GlobalContext* globalCtx) {
- ColliderCylinder* collider = &this->collider;
+void EnAObj_Destroy(Actor* thisx, GlobalContext* globalCtx) {
+ EnAObj* this = THIS;
DynaPolyInfo_Free(globalCtx, &globalCtx->colCtx.dyna, this->dyna.dynaPolyId);
switch (this->dyna.actor.params) {
case A_OBJ_SIGNPOST_OBLONG:
case A_OBJ_SIGNPOST_ARROW:
- Collider_DestroyCylinder(globalCtx, collider);
+ Collider_DestroyCylinder(globalCtx, &this->collider);
}
}
@@ -308,8 +309,8 @@ void func_8001D608(EnAObj* this, GlobalContext* globalCtx) {
this->dyna.unk_150 = 0.0f;
}
-void EnAObj_Update(EnAObj* this, GlobalContext* globalCtx) {
- Collider* collider;
+void EnAObj_Update(Actor* thisx, GlobalContext* globalCtx) {
+ EnAObj* this = THIS;
this->actionFunc(this, globalCtx);
Actor_MoveForward(&this->dyna.actor);
@@ -328,14 +329,13 @@ void EnAObj_Update(EnAObj* this, GlobalContext* globalCtx) {
switch (this->dyna.actor.params) {
case A_OBJ_SIGNPOST_OBLONG:
case A_OBJ_SIGNPOST_ARROW:
- collider = (Collider*)&this->collider;
Collider_CylinderUpdate(&this->dyna.actor, &this->collider);
- CollisionCheck_SetOC(globalCtx, &globalCtx->colChkCtx, collider);
+ CollisionCheck_SetOC(globalCtx, &globalCtx->colChkCtx, &this->collider);
}
}
-void EnAObj_Draw(EnAObj* this, GlobalContext* globalCtx) {
- s32 type = this->dyna.actor.params;
+void EnAObj_Draw(Actor* thisx, GlobalContext* globalCtx) {
+ s32 type = thisx->params;
GraphicsContext* gfxCtx = globalCtx->state.gfxCtx;
Gfx* dispRefs[4];
@@ -347,7 +347,7 @@ void EnAObj_Draw(EnAObj* this, GlobalContext* globalCtx) {
type = A_OBJ_KNOB;
}
- if (this->dyna.actor.params == A_OBJ_KNOB) {
+ if (thisx->params == A_OBJ_KNOB) {
gDPSetPrimColor(gfxCtx->polyOpa.p++, 0, 1, 0x3C, 0x3C, 0x3C, 0x32);
}
diff --git a/src/code/z_en_item00.c b/src/code/z_en_item00.c
index bd135bbbb..931ef11b0 100644
--- a/src/code/z_en_item00.c
+++ b/src/code/z_en_item00.c
@@ -45,10 +45,12 @@ typedef struct {
#define FLAGS 0x00000000
-void EnItem00_Init(EnItem00* this, GlobalContext* globalCtx);
-void EnItem00_Destroy(EnItem00* this, GlobalContext* globalCtx);
-void EnItem00_Update(EnItem00* this, GlobalContext* globalCtx);
-void EnItem00_Draw(EnItem00* this, GlobalContext* globalCtx);
+#define THIS ((EnItem00*)thisx)
+
+void EnItem00_Init(Actor* thisx, GlobalContext* globalCtx);
+void EnItem00_Destroy(Actor* thisx, GlobalContext* globalCtx);
+void EnItem00_Update(Actor* thisx, GlobalContext* globalCtx);
+void EnItem00_Draw(Actor* thisx, GlobalContext* globalCtx);
void func_8001DFC8(EnItem00* this, GlobalContext* globalCtx);
void func_8001E1C8(EnItem00* this, GlobalContext* globalCtx);
@@ -85,8 +87,8 @@ void EnItem00_SetupAction(EnItem00* this, ActorFunc actionFunc) {
this->actionFunc = actionFunc;
}
-void EnItem00_Init(EnItem00* this, GlobalContext* globalCtx) {
- s32 pad1;
+void EnItem00_Init(Actor* thisx, GlobalContext* globalCtx) {
+ EnItem00* this = THIS;
s32 pad2;
f32 sp34;
f32 sp30;
@@ -312,9 +314,10 @@ void EnItem00_Init(EnItem00* this, GlobalContext* globalCtx) {
this->actionFunc(this, globalCtx);
}
-void EnItem00_Destroy(EnItem00* this, GlobalContext* globalCtx) {
- ColliderCylinder* collider = &this->collider;
- Collider_DestroyCylinder(globalCtx, collider);
+void EnItem00_Destroy(Actor* thisx, GlobalContext* globalCtx) {
+ EnItem00* this = THIS;
+
+ Collider_DestroyCylinder(globalCtx, &this->collider);
}
void func_8001DFC8(EnItem00* this, GlobalContext* globalCtx) {
@@ -480,8 +483,8 @@ extern s32 D_80157D90;
extern u32 D_80157D90_; // these must be defined separately for EnItem00_Update to match
extern s16 D_80157D94;
-void EnItem00_Update(EnItem00* this, GlobalContext* globalCtx) {
- s32 pad;
+void EnItem00_Update(Actor* thisx, GlobalContext* globalCtx) {
+ EnItem00* this = THIS;
s16* params;
s32 getItemId;
s16 sp3A;
@@ -700,8 +703,8 @@ void func_8001F080(EnItem00* this, GlobalContext* globalCtx);
void func_8001F1F4(EnItem00* this, GlobalContext* globalCtx);
void func_8001F334(EnItem00* this, GlobalContext* globalCtx);
-void EnItem00_Draw(EnItem00* this, GlobalContext* globalCtx) {
- s32 pad;
+void EnItem00_Draw(Actor* thisx, GlobalContext* globalCtx) {
+ EnItem00* this = THIS;
f32 unkFloat;
if (!(this->unk_156 & this->unk_158)) {
diff --git a/src/code/z_player_call.c b/src/code/z_player_call.c
index 6b8238195..f352be424 100644
--- a/src/code/z_player_call.c
+++ b/src/code/z_player_call.c
@@ -1,19 +1,19 @@
#include <global.h>
-void (*sPlayerCallInitFunc)(void*, GlobalContext*);
-void (*sPlayerCallDestroyFunc)(void*, GlobalContext*);
-void (*sPlayerCallUpdateFunc)(void*, GlobalContext*);
-void (*sPlayerCallDrawFunc)(void*, GlobalContext*);
+void (*sPlayerCallInitFunc)(Actor* thisx, GlobalContext* globalCtx);
+void (*sPlayerCallDestroyFunc)(Actor* thisx, GlobalContext* globalCtx);
+void (*sPlayerCallUpdateFunc)(Actor* thisx, GlobalContext* globalCtx);
+void (*sPlayerCallDrawFunc)(Actor* thisx, GlobalContext* globalCtx);
-void func_80846CD8(Player*, GlobalContext*);
-void func_8084AB54(Player*, GlobalContext*);
-void func_80849EA8(Player*, GlobalContext*);
-void func_8084A5C4(Player*, GlobalContext*);
+void func_80846CD8(Actor* thisx, GlobalContext* globalCtx);
+void func_8084AB54(Actor* thisx, GlobalContext* globalCtx);
+void func_80849EA8(Actor* thisx, GlobalContext* globalCtx);
+void func_8084A5C4(Actor* thisx, GlobalContext* globalCtx);
-void PlayerCall_Init(Player* player, GlobalContext* globalCtx);
-void PlayerCall_Destroy(Player* player, GlobalContext* globalCtx);
-void PlayerCall_Update(Player* player, GlobalContext* globalCtx);
-void PlayerCall_Draw(Player* player, GlobalContext* globalCtx);
+void PlayerCall_Init(Actor* thisx, GlobalContext* globalCtx);
+void PlayerCall_Destroy(Actor* thisx, GlobalContext* globalCtx);
+void PlayerCall_Update(Actor* thisx, GlobalContext* globalCtx);
+void PlayerCall_Draw(Actor* thisx, GlobalContext* globalCtx);
const ActorInit Player_InitVars = {
ACTOR_PLAYER,
@@ -34,23 +34,23 @@ void PlayerCall_InitFuncPtrs() {
sPlayerCallDrawFunc = KaleidoManager_GetRamAddr(func_8084A5C4);
}
-void PlayerCall_Init(Player* player, GlobalContext* globalCtx) {
+void PlayerCall_Init(Actor* thisx, GlobalContext* globalCtx) {
KaleidoScopeCall_LoadPlayer();
PlayerCall_InitFuncPtrs();
- sPlayerCallInitFunc(player, globalCtx);
+ sPlayerCallInitFunc(thisx, globalCtx);
}
-void PlayerCall_Destroy(Player* player, GlobalContext* globalCtx) {
+void PlayerCall_Destroy(Actor* thisx, GlobalContext* globalCtx) {
KaleidoScopeCall_LoadPlayer();
- sPlayerCallDestroyFunc(player, globalCtx);
+ sPlayerCallDestroyFunc(thisx, globalCtx);
}
-void PlayerCall_Update(Player* player, GlobalContext* globalCtx) {
+void PlayerCall_Update(Actor* thisx, GlobalContext* globalCtx) {
KaleidoScopeCall_LoadPlayer();
- sPlayerCallUpdateFunc(player, globalCtx);
+ sPlayerCallUpdateFunc(thisx, globalCtx);
}
-void PlayerCall_Draw(Player* player, GlobalContext* globalCtx) {
+void PlayerCall_Draw(Actor* thisx, GlobalContext* globalCtx) {
KaleidoScopeCall_LoadPlayer();
- sPlayerCallDrawFunc(player, globalCtx);
+ sPlayerCallDrawFunc(thisx, globalCtx);
}