Shipwright/soh/src/overlays/actors/ovl_Demo_Gj/z_demo_gj.h

46 lines
2.3 KiB
C

#ifndef Z_DEMO_GJ_H
#define Z_DEMO_GJ_H
#include "ultra64.h"
#include "global.h"
#include "overlays/actors/ovl_Boss_Ganon2/z_boss_ganon2.h"
struct DemoGj;
typedef struct DemoGj {
/* 0x0000 */ DynaPolyActor dyna;
/* 0x0164 */ s32 updateMode;
/* 0x0168 */ s32 drawConfig;
/* 0x016C */ Vec3s rotationVec;
/* 0x0172 */ Vec3s unk_172; // It is assigned only. @see DemoGj_SetupTranslation and @see DemoGj_SetupMovement
/* 0x0178 */ BossGanon2* ganon;
/* 0x017C */ s32 isTransformedIntoGanon; // flag
/* 0x0180 */ s32 isRotated; // flag
/* 0x0184 */ ColliderCylinder cylinders[3];
/* 0x0268 */ s32 killFlag; // This actor never sets this flag, but it reads it. If set to `true` and the actor type is DEMOGJ_TYPE_DESTRUCTABLE_RUBBLE_1, DEMOGJ_TYPE_DESTRUCTABLE_RUBBLE_2 or DEMOGJ_TYPE_DESTRUCTABLE_RUBBLE_TALL, then the actor will be killed and will drop the specified amount of collectibles.
/* 0x026C */ Vec3f unk_26C; // This actor never sets this. Specifies which direction will this actor explode when killed using `killFlag`.
} DemoGj; // size = 0x0278
/**
* The format of this actor's params is the following:
* bits 11-15: The collectible that will be dropped when killed.
* bits 8-10: The amount of collectible that will be dropped when killed.
* bits 0- 7: A value of the enum DemoGjType.
*/
typedef enum {
/* 04 */ DEMOGJ_TYPE_AROUNDARENA = 4, // This is the indestructible rubble around the arena. This actor keeps alive the whole fight.
/* 08 */ DEMOGJ_TYPE_RUBBLE_PILE_1 = 8, // DEMOGJ_TYPE_RUBBLE_PILE_X are the rubbles from where Ganondorf rises. When he transforms into Ganon these are removed from the scene (Actor_Kill).
/* 09 */ DEMOGJ_TYPE_RUBBLE_PILE_2,
/* 10 */ DEMOGJ_TYPE_RUBBLE_PILE_3,
/* 11 */ DEMOGJ_TYPE_RUBBLE_PILE_4,
/* 12 */ DEMOGJ_TYPE_RUBBLE_PILE_5,
/* 13 */ DEMOGJ_TYPE_RUBBLE_PILE_6,
/* 14 */ DEMOGJ_TYPE_RUBBLE_PILE_7,
/* 16 */ DEMOGJ_TYPE_DESTRUCTABLE_RUBBLE_1 = 16, // This three rubbles are the ones that Ganon can destroy and drop collectables.
/* 17 */ DEMOGJ_TYPE_DESTRUCTABLE_RUBBLE_2, // They are spawned as soon as the others, but they have collision and are rendered only when Ganondorf has transformed into Ganon.
/* 22 */ DEMOGJ_TYPE_DESTRUCTABLE_RUBBLE_TALL = 22 //
} DemoGjType;
#endif