mirror of https://github.com/zeldaret/tmc.git
73 lines
1.6 KiB
C
73 lines
1.6 KiB
C
#include "manager.h"
|
|
#include "flags.h"
|
|
#include "room.h"
|
|
#include "functions.h"
|
|
|
|
typedef struct {
|
|
Manager manager;
|
|
u8 field_0x20;
|
|
u8 field_0x21;
|
|
u8 field_0x22;
|
|
u8 field_0x23;
|
|
u8 field_0x24;
|
|
u8 field_0x25;
|
|
u8 field_0x26;
|
|
u8 field_0x27;
|
|
u16 field_0x28;
|
|
u8 field_0x2a;
|
|
u8 field_0x2b;
|
|
u8 field_0x2c;
|
|
u8 field_0x2d;
|
|
u8 field_0x2e;
|
|
u8 field_0x2f;
|
|
u16* field_0x30;
|
|
u8 field_0x34;
|
|
u8 field_0x35;
|
|
u8 field_0x36;
|
|
u8 field_0x37;
|
|
u16 field_0x38;
|
|
u16 field_0x3a;
|
|
u8 field_0x3c;
|
|
u8 field_0x3d;
|
|
u16 field_0x3e;
|
|
} ManagerD;
|
|
|
|
extern void (*const gUnk_08108308[])(ManagerD*);
|
|
|
|
extern u16* GetLayerByIndex(u32);
|
|
|
|
void ManagerD_Main(ManagerD* this) {
|
|
gUnk_08108308[this->manager.action](this);
|
|
}
|
|
|
|
void sub_08058DE8(ManagerD* this) {
|
|
u16* puVar2;
|
|
u16* puVar3;
|
|
if (CheckFlags(this->field_0x3e) != 0) {
|
|
DeleteThisEntity();
|
|
} else {
|
|
this->manager.action = 1;
|
|
puVar2 = GetLayerByIndex(this->field_0x3a);
|
|
puVar3 = (this->field_0x38 + 2) + puVar2;
|
|
this->field_0x30 = puVar3;
|
|
this->field_0x28 = *puVar3;
|
|
}
|
|
}
|
|
|
|
void sub_08058E18(ManagerD* this) {
|
|
if (this->field_0x28 != *this->field_0x30) {
|
|
this->manager.action += 1;
|
|
this->manager.unk_0e = 0xf;
|
|
}
|
|
}
|
|
|
|
void sub_08058E34(ManagerD* this) {
|
|
if (--this->manager.unk_0e == 0) {
|
|
SetFlag(this->field_0x3e);
|
|
if (this->manager.unk_0a != 0) {
|
|
LoadRoomEntityList((EntityData*)GetCurrentRoomProperty(this->manager.unk_0a));
|
|
}
|
|
DeleteManager((Manager*)this);
|
|
}
|
|
}
|