Clean up overlay_manager.c

This commit is contained in:
Rachel 2024-04-02 21:50:16 -07:00
parent 334472411b
commit b8cfc8c384
2 changed files with 53 additions and 52 deletions

View File

@ -4,11 +4,12 @@
#include <nitro/fs.h>
#include "constants/heap.h"
#include "heap.h"
#define FS_OVERLAY_ID_NONE -1
typedef struct OverlayManager OverlayManager;
typedef int (*OverlayFunc)(OverlayManager *ovyManager, int *state);
typedef BOOL (*OverlayFunc)(OverlayManager *ovyManager, int *state);
typedef struct OverlayManagerTemplate {
OverlayFunc init;

View File

@ -1,93 +1,93 @@
#include <nitro.h>
#include <string.h>
#include "heap.h"
#include "game_overlay.h"
#include "overlay_manager.h"
#include "heap.h"
OverlayManager * OverlayManager_New (const OverlayManagerTemplate * param0, void * param1, const enum HeapId param2)
OverlayManager* OverlayManager_New(const OverlayManagerTemplate *template, void *args, const enum HeapId heapID)
{
OverlayManager * v0;
OverlayManager *ovyManager = Heap_AllocFromHeap(heapID, sizeof(OverlayManager));
v0 = Heap_AllocFromHeap(param2, sizeof(OverlayManager));
ovyManager->template= *template;
ovyManager->execState = 0;
ovyManager->procState = 0;
ovyManager->args = args;
ovyManager->data = NULL;
ovyManager->parent = NULL;
ovyManager->child = NULL;
v0->template= *param0;
v0->execState = 0;
v0->procState = 0;
v0->args = param1;
v0->data = NULL;
v0->parent = NULL;
v0->child = NULL;
return v0;
return ovyManager;
}
void OverlayManager_Free (OverlayManager * param0)
void OverlayManager_Free(OverlayManager *ovyManager)
{
Heap_FreeToHeap(param0);
Heap_FreeToHeap(ovyManager);
}
void * OverlayManager_NewData (OverlayManager * param0, u32 param1, enum HeapId param2)
void* OverlayManager_NewData(OverlayManager *ovyManager, u32 size, enum HeapId heapID)
{
param0->data = Heap_AllocFromHeap(param2, param1);
return param0->data;
ovyManager->data = Heap_AllocFromHeap(heapID, size);
return ovyManager->data;
}
void * OverlayManager_Data (OverlayManager * param0)
void* OverlayManager_Data(OverlayManager *ovyManager)
{
return param0->data;
return ovyManager->data;
}
void OverlayManager_FreeData (OverlayManager * param0)
void OverlayManager_FreeData(OverlayManager *ovyManager)
{
Heap_FreeToHeap(param0->data);
param0->data = NULL;
Heap_FreeToHeap(ovyManager->data);
ovyManager->data = NULL;
}
void * OverlayManager_Args (OverlayManager * param0)
void* OverlayManager_Args(OverlayManager *ovyManager)
{
return param0->args;
return ovyManager->args;
}
BOOL OverlayManager_Exec (OverlayManager * param0)
{
int v0;
enum OverlayExecState {
OVERLAY_EXEC_LOAD = 0,
OVERLAY_EXEC_INIT,
OVERLAY_EXEC_MAIN,
OVERLAY_EXEC_EXIT,
};
switch (param0->execState) {
case 0:
if (param0->template.overlayID != 0xffffffff) {
Overlay_LoadByID(param0->template.overlayID, 2);
BOOL OverlayManager_Exec(OverlayManager *ovyManager)
{
switch (ovyManager->execState) {
case OVERLAY_EXEC_LOAD:
if (ovyManager->template.overlayID != FS_OVERLAY_ID_NONE) {
Overlay_LoadByID(ovyManager->template.overlayID, 2);
}
param0->execState = 1;
case 1:
v0 = param0->template.init(param0, &param0->procState);
ovyManager->execState = OVERLAY_EXEC_INIT;
if (v0 == 1) {
param0->execState = 2;
param0->procState = 0;
case OVERLAY_EXEC_INIT:
if (ovyManager->template.init(ovyManager, &ovyManager->procState) == TRUE) {
ovyManager->execState = OVERLAY_EXEC_MAIN;
ovyManager->procState = 0;
}
break;
case 2:
v0 = param0->template.main(param0, &param0->procState);
if (v0 == 1) {
param0->execState = 3;
param0->procState = 0;
case OVERLAY_EXEC_MAIN:
if (ovyManager->template.main(ovyManager, &ovyManager->procState) == TRUE) {
ovyManager->execState = OVERLAY_EXEC_EXIT;
ovyManager->procState = 0;
}
break;
case 3:
v0 = param0->template.exit(param0, &param0->procState);
if (v0 == 1) {
if (param0->template.overlayID != 0xffffffff) {
Overlay_UnloadByID(param0->template.overlayID);
case OVERLAY_EXEC_EXIT:
if (ovyManager->template.exit(ovyManager, &ovyManager->procState) == TRUE) {
if (ovyManager->template.overlayID != FS_OVERLAY_ID_NONE) {
Overlay_UnloadByID(ovyManager->template.overlayID);
}
return 1;
return TRUE;
}
break;
}
return 0;
return FALSE;
}