mirror of
https://github.com/zeldaret/mm.git
synced 2026-07-29 07:32:25 -04:00
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:
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user