Shipwright/soh/src/overlays/actors/ovl_En_Door/z_en_door.h
M4xw 39cc86c260 git subrepo clone https://github.com/HarbourMasters/soh.git
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:   "???"
2022-03-22 02:51:23 +01:00

61 lines
2.1 KiB
C

#ifndef Z_EN_DOOR_H
#define Z_EN_DOOR_H
#include "ultra64.h"
#include "global.h"
/**
* Actor Parameters
*
* | | | |
* | Transition Index | Type | Double Door | Switch Flag OR Text Id - 0x0200
* |------------------|-------|-------------|---------------------------------
* | 0 0 0 0 0 0 | 0 0 0 | 0 | 0 0 0 0 0 0
* | 6 | 3 | 1 | 6
* |
*
* Transition Index 1111110000000000 Set by the actor engine when the door is spawned
* Type 0000001110000000
* Double Door 0000000001000000
* Switch Flag 0000000000111111 For use with the `DOOR_LOCKED` type
* Text id - 0x0200 0000000000111111 For use with the `DOOR_CHECKABLE` type
*
*/
typedef struct {
/* 0x00 */ s16 sceneNum;
/* 0x02 */ u8 dListIndex;
/* 0x04 */ s16 objectId;
} EnDoorInfo;
typedef enum {
/* 0x00 */ DOOR_ROOMLOAD, // loads rooms
/* 0x01 */ DOOR_LOCKED, // small key locked door
/* 0x02 */ DOOR_ROOMLOAD2, // loads rooms
/* 0x03 */ DOOR_SCENEEXIT, // doesn't load rooms, used for doors paired with scene transition polygons
/* 0x04 */ DOOR_AJAR, // open slightly but slams shut if Link gets too close
/* 0x05 */ DOOR_CHECKABLE, // doors that display a textbox when interacting
/* 0x06 */ DOOR_EVENING, // unlocked between 18:00 and 21:00, Dampé's hut
/* 0x07 */ DOOR_ROOMLOAD7 // loads rooms
} EnDoorType;
struct EnDoor;
typedef void (*EnDoorActionFunc)(struct EnDoor*, GlobalContext*);
typedef struct EnDoor {
/* 0x0000 */ Actor actor;
/* 0x014C */ SkelAnime skelAnime;
/* 0x0190 */ u8 animStyle; // Must be at same offset as animStyle in DoorKiller due to the cast in func_80839800
/* 0x0191 */ u8 playerIsOpening; // Must be at same offset as playerIsOpening in DoorKiller due to the cast in func_80839800
/* 0x0192 */ u8 unk_192;
/* 0x0193 */ s8 requiredObjBankIndex;
/* 0x0194 */ s8 dListIndex;
/* 0x0196 */ s16 lockTimer;
/* 0x0198 */ Vec3s jointTable[5];
/* 0x01B6 */ Vec3s morphTable[5];
/* 0x01D4 */ EnDoorActionFunc actionFunc;
} EnDoor; // size = 0x01D8
#endif