mirror of
https://github.com/HarbourMasters/Shipwright.git
synced 2024-08-13 17:03:47 -04:00
39cc86c260
subrepo: subdir: "soh" merged: "ba904bbd0" upstream: origin: "https://github.com/HarbourMasters/soh.git" branch: "master" commit: "ba904bbd0" git-subrepo: version: "0.4.1" origin: "???" commit: "???"
51 lines
2.1 KiB
C
51 lines
2.1 KiB
C
#ifndef Z_EN_BOX_H
|
|
#define Z_EN_BOX_H
|
|
|
|
#include "ultra64.h"
|
|
#include "global.h"
|
|
|
|
#define ENBOX_TREASURE_FLAG_UNK_MIN 20
|
|
#define ENBOX_TREASURE_FLAG_UNK_MAX 32
|
|
|
|
struct EnBox;
|
|
|
|
typedef void (*EnBoxActionFunc)(struct EnBox*, GlobalContext*);
|
|
|
|
typedef enum {
|
|
/*
|
|
only values 1-11 are used explicitly, other values (like 0) default to another separate behavior
|
|
*/
|
|
/* 0 */ ENBOX_TYPE_BIG_DEFAULT,
|
|
/* 1 */ ENBOX_TYPE_ROOM_CLEAR_BIG, // appear on room clear, store temp clear as permanent clear
|
|
/* 2 */ ENBOX_TYPE_DECORATED_BIG, // boss key chest, different look, same as ENBOX_TYPE_BIG_DEFAULT otherwise
|
|
/* 3 */ ENBOX_TYPE_SWITCH_FLAG_FALL_BIG, // falling, appear on switch flag set
|
|
/* 4 */ ENBOX_TYPE_4, // big, drawn differently
|
|
/* 5 */ ENBOX_TYPE_SMALL, // same as ENBOX_TYPE_BIG_DEFAULT but small
|
|
/* 6 */ ENBOX_TYPE_6, // small, drawn differently
|
|
/* 7 */ ENBOX_TYPE_ROOM_CLEAR_SMALL, // use room clear, store temp clear as perm clear
|
|
/* 8 */ ENBOX_TYPE_SWITCH_FLAG_FALL_SMALL, // falling, appear on switch flag set
|
|
/* 9 */ ENBOX_TYPE_9, // big, has something more to do with player and message context?
|
|
/* 10 */ ENBOX_TYPE_10, // like 9
|
|
/* 11 */ ENBOX_TYPE_SWITCH_FLAG_BIG // big, appear on switch flag set
|
|
} EnBoxType;
|
|
|
|
typedef struct EnBox {
|
|
/* 0x0000 */ DynaPolyActor dyna;
|
|
/* 0x0164 */ SkelAnime skelanime;
|
|
/* 0x01A8 */ s32 unk_1A8; // related to animation delays for types 3 and 8
|
|
/* 0x01AC */ s32 unk_1AC;
|
|
/* 0x01B0 */ f32 unk_1B0; // 0-1, rotation-related, apparently unused (in z_en_box.c at least)
|
|
/* 0x01B4 */ EnBoxActionFunc actionFunc;
|
|
/* 0x01B8 */ Vec3s jointTable[5];
|
|
/* 0x01D6 */ Vec3s morphTable[5];
|
|
/* 0x01F4 */ s16 unk_1F4; // probably a frame count? set by player code
|
|
/* 0x01F6 */ u8 movementFlags;
|
|
/* 0x01F7 */ u8 alpha;
|
|
/* 0x01F8 */ u8 switchFlag;
|
|
/* 0x01F9 */ u8 type;
|
|
/* 0x01FA */ u8 iceSmokeTimer;
|
|
/* 0x01FB */ u8 unk_1FB;
|
|
} EnBox; // size = 0x01FC
|
|
|
|
#endif
|