Obj_Tokei_Turret OK (#820)

* actor fully matched

* named collision parameters]

* fixed spec reloc.o

* Addressing Review Comments!

* Addressing Additional Review Comments

* fixing enum names

Co-authored-by: MrPolymorph <{ID}+{username}@users.noreply.github.com>
This commit is contained in:
Kristopher Early
2022-06-19 03:08:42 +01:00
committed by GitHub
parent b3104f898b
commit e3c0c5c3fa
5 changed files with 70 additions and 36 deletions
@@ -5,6 +5,7 @@
*/
#include "z_obj_tokei_turret.h"
#include "objects/object_tokei_turret/object_tokei_turret.h"
#define FLAGS 0x00000000
@@ -15,7 +16,6 @@ void ObjTokeiTurret_Destroy(Actor* thisx, GlobalContext* globalCtx);
void ObjTokeiTurret_Update(Actor* thisx, GlobalContext* globalCtx);
void ObjTokeiTurret_Draw(Actor* thisx, GlobalContext* globalCtx);
#if 0
const ActorInit Obj_Tokei_Turret_InitVars = {
ACTOR_OBJ_TOKEI_TURRET,
ACTORCAT_BG,
@@ -28,23 +28,59 @@ const ActorInit Obj_Tokei_Turret_InitVars = {
(ActorFunc)ObjTokeiTurret_Draw,
};
// static InitChainEntry sInitChain[] = {
static InitChainEntry D_80B91EC0[] = {
static InitChainEntry sInitChain[] = {
ICHAIN_F32(uncullZoneForward, 1200, ICHAIN_CONTINUE),
ICHAIN_VEC3F_DIV1000(scale, 100, ICHAIN_STOP),
};
#endif
void ObjTokeiTurret_Init(Actor* thisx, GlobalContext* globalCtx) {
s32 pad;
ObjTokeiTurret* this = THIS;
s32 tier;
extern InitChainEntry D_80B91EC0[];
tier = OBJ_TOKEI_TURRET_TIER_TYPE(thisx);
Actor_ProcessInitChain(&this->dyna.actor, sInitChain);
DynaPolyActor_Init(&this->dyna, 0);
extern UNK_TYPE D_060026A0;
extern UNK_TYPE D_06002A88;
if ((tier == TURRET_TIER_BASE) || (tier == TURRET_TIER_TOP)) {
this->dyna.actor.uncullZoneDownward = this->dyna.actor.uncullZoneScale = 240.0f;
#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Obj_Tokei_Turret/ObjTokeiTurret_Init.s")
if (tier == TURRET_TIER_BASE) {
DynaPolyActor_LoadMesh(globalCtx, &this->dyna, &gClockTownTurretBaseCol);
} else {
DynaPolyActor_LoadMesh(globalCtx, &this->dyna, &gClockTownTurretPlatformCol);
}
} else {
this->dyna.actor.uncullZoneDownward = this->dyna.actor.uncullZoneScale = 1300.0;
}
}
#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Obj_Tokei_Turret/ObjTokeiTurret_Destroy.s")
void ObjTokeiTurret_Destroy(Actor* thisx, GlobalContext* globalCtx) {
ObjTokeiTurret* this = THIS;
#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Obj_Tokei_Turret/ObjTokeiTurret_Update.s")
DynaPoly_DeleteBgActor(globalCtx, &globalCtx->colCtx.dyna, this->dyna.bgId);
}
#pragma GLOBAL_ASM("asm/non_matchings/overlays/ovl_Obj_Tokei_Turret/ObjTokeiTurret_Draw.s")
void ObjTokeiTurret_Update(Actor* thisx, GlobalContext* globalCtx) {
}
void ObjTokeiTurret_Draw(Actor* thisx, GlobalContext* globalCtx) {
ObjTokeiTurret* this = THIS;
Gfx* gfx;
if (OBJ_TOKEI_TURRET_TIER_TYPE(thisx) == TURRET_TIER_TOP) {
OPEN_DISPS(globalCtx->state.gfxCtx);
gfx = POLY_OPA_DISP;
gSPDisplayList(gfx++, &sSetupDL[6 * 25]);
gSPMatrix(gfx++, Matrix_NewMtx(globalCtx->state.gfxCtx), G_MTX_MODELVIEW | G_MTX_LOAD);
gSPDisplayList(gfx++, gClockTownTurretPlatformTopDL);
POLY_OPA_DISP = gfx;
CLOSE_DISPS(globalCtx->state.gfxCtx);
} else if (OBJ_TOKEI_TURRET_TIER_TYPE(thisx) == TURRET_TIER_BASE) {
Gfx_DrawDListOpa(globalCtx, gClockTownTurretPlatformBaseDL);
} else {
Gfx_DrawDListOpa(globalCtx, gClockTownFlagsDL);
}
}
@@ -3,11 +3,17 @@
#include "global.h"
#define OBJ_TOKEI_TURRET_TIER_TYPE(thisx) ((thisx)->params & 3)
typedef enum {
/* 0 */ TURRET_TIER_BASE,
/* 1 */ TURRET_TIER_TOP,
} TurretTierType;
struct ObjTokeiTurret;
typedef struct ObjTokeiTurret {
/* 0x000 */ Actor actor;
/* 0x144 */ char unk_144[0x18];
/* 0x000 */ DynaPolyActor dyna;
} ObjTokeiTurret; // size = 0x15C
extern const ActorInit Obj_Tokei_Turret_InitVars;