diff options
| author | Ibot02 <jtp.jtp@gmx.de> | 2021-01-18 16:39:53 +0100 |
|---|---|---|
| committer | Ibot02 <jtp.jtp@gmx.de> | 2021-01-18 16:39:53 +0100 |
| commit | bbfd8348559edf9afbd71d0d01013a523997258c (patch) | |
| tree | 829af553e5779f054b13b399f51572f6795f29a2 /src/manager | |
| parent | 0dab5bbc99ea7cb82e443a9d9d7b639c44616bad (diff) | |
manager28.c: split out rodata and rename functions
Diffstat (limited to 'src/manager')
| -rw-r--r-- | src/manager/manager28.c | 53 |
1 files changed, 33 insertions, 20 deletions
diff --git a/src/manager/manager28.c b/src/manager/manager28.c index 44b33b08..3ea38f38 100644 --- a/src/manager/manager28.c +++ b/src/manager/manager28.c @@ -9,33 +9,46 @@ typedef struct { Entity* unk_20[8]; } Manager28; -extern void (* const gUnk_08108D28[])(Manager28*); - -void sub_0805C934(Manager28*); -void sub_0805C94C(Manager28*); +void Manager28_Main(Manager28*); +void Manager28_Init(Manager28*); void sub_0805C9BC(Manager28*); -u32 sub_0805CA6C(Manager28*); -Entity* sub_0805CAF0(EntityData*); -void sub_0805CB48(Manager28*); +u32 Manager28_FindMatchingEntities(Manager28*); +Entity* Manager28_FindMatchingEntity(EntityData*); +void Manager28_RemoveDeletedEntities(Manager28*); + +void (* const gUnk_08108D28[])(Manager28*) = { + Manager28_Init, + Manager28_Main +}; + +enum Manager28_Action { + Init = 0, + Main = 1 +}; + +enum Manager28_InitState { + DoInit = 0, + DoNotInit = 1 +}; -void sub_0805C934(Manager28* this) { +void Manager28_Entry(Manager28* this) { gUnk_08108D28[this->manager.action](this); } -NONMATCH("asm/non_matching/manager28/sub_0805C94C.inc", void sub_0805C94C(Manager28* this)) { - if (!this->manager.unk_0a) { +NONMATCH("asm/non_matching/manager28/Manager28_Init.inc", void Manager28_Init(Manager28* this)) { + if (this->manager.unk_0a == DoInit) { s32 tmp2; int tmp4; for (tmp4 = 0; tmp4 < 8; tmp4++) { this->unk_20[tmp4] = 0; } - tmp2 = sub_0805CA6C(this);//maybe 2 params? + tmp2 = Manager28_FindMatchingEntities(this); if (tmp2 > 1) { Manager28* tmp3 = (Manager28*) GetEmptyManager(); if (tmp3) { tmp3->manager.type = 9; tmp3->manager.subtype = 0x28; - tmp3->manager.unk_0a = 1; + tmp3->manager.unk_0a = DoNotInit; tmp3->manager.unk_0e = tmp2; for (tmp4 = 0; tmp4 < 8; tmp4++) { tmp3->unk_20[tmp4] = this->unk_20[tmp4]; @@ -45,18 +58,18 @@ NONMATCH("asm/non_matching/manager28/sub_0805C94C.inc", void sub_0805C94C(Manage } DeleteManager(&this->manager); } else { - this->manager.action = 1; + this->manager.action = Main; this->manager.unk_0f = 0; } } END_NONMATCH -void sub_0805C9BC(Manager28* this) { +void Manager28_Main(Manager28* this) { s32 n; s32 i; s32 j; Entity* tmp; - sub_0805CB48(this); + Manager28_RemoveDeletedEntities(this); n = this->manager.unk_0e - 1; if ((this->manager.unk_0f++) & 1) { for (i = 0; i < n; i++) { @@ -75,7 +88,7 @@ void sub_0805C9BC(Manager28* this) { } } -u32 sub_0805CA6C(Manager28* this) { +u32 Manager28_FindMatchingEntities(Manager28* this) { u32 re = 0; EntityData * tmp = GetCurrentRoomProperty(this->manager.unk_0b); if (!tmp) return 0; @@ -83,7 +96,7 @@ u32 sub_0805CA6C(Manager28* this) { Entity* tmp2; u32 i; if (tmp->type != 3) continue; - tmp2 = sub_0805CAF0(tmp); + tmp2 = Manager28_FindMatchingEntity(tmp); if (!tmp2) continue; for (i = 0; i < re; i++) { if (this->unk_20[i] == tmp2) break; @@ -95,7 +108,7 @@ u32 sub_0805CA6C(Manager28* this) { return re; } -Entity* sub_0805CAF0(EntityData* unk1) { +Entity* Manager28_FindMatchingEntity(EntityData* unk1) { u32 x, y; Entity* i; LinkedList* tmp; @@ -114,12 +127,12 @@ Entity* sub_0805CAF0(EntityData* unk1) { return 0; } -void sub_0805CB48(Manager28* this) { +void Manager28_RemoveDeletedEntities(Manager28* this) { s32 i; for (i = 0; i < this->manager.unk_0e; i++) { if (this->unk_20[i]->next == 0) { if (this->manager.unk_0e-1 == i) { - this->unk_20[i] = this->unk_20[i]->next; + this->unk_20[i] = 0; } else { this->unk_20[i] = this->unk_20[this->manager.unk_0e-1]; } |
