tmc/src/manager/managerD.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);
}
}