mirror of
https://github.com/TwilitRealm/dusklight
synced 2026-06-02 01:30:00 -04:00
df0ffcd87c
* f_op debug 1 * f_op debug 2 * f_op debug 3 * f_op debug 4 * f_op debug 5 * f_op_debug fix build * f_op linking * remove goto in fopac_create * fix regressions * fix regressions * pr comments
121 lines
2.9 KiB
C++
121 lines
2.9 KiB
C++
/**
|
|
* f_op_overlap_mng.cpp
|
|
* Overlap Process Manager
|
|
*/
|
|
|
|
#include "SSystem/SComponent/c_request.h"
|
|
#include "m_Do/m_Do_controller_pad.h"
|
|
#include "f_op/f_op_overlap_mng.h"
|
|
#include "f_op/f_op_overlap_req.h"
|
|
#include "f_op/f_op_scene_mng.h"
|
|
#include "f_op/f_op_scene_pause.h"
|
|
|
|
// making it not an array put it in .bss
|
|
static overlap_request_class* l_fopOvlpM_overlap[1] = {NULL};
|
|
|
|
int fopOvlpM_SceneIsStop() {
|
|
if (l_fopOvlpM_overlap[0] != NULL) {
|
|
fpc_ProcID scene_id = l_fopOvlpM_overlap[0]->overlap_task->scene_id;
|
|
scene_class* cls = (scene_class*)fpcM_SearchByID(scene_id);
|
|
return fopScnM_PauseEnable(cls);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
int fopOvlpM_SceneIsStart() {
|
|
if (l_fopOvlpM_overlap[0] != NULL) {
|
|
fpc_ProcID scene_id = l_fopOvlpM_overlap[0]->overlap_task->scene_id;
|
|
scene_class* cls = (scene_class*)fpcM_SearchByID(scene_id);
|
|
return fopScnM_PauseDisable(cls);
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
int fopOvlpM_IsOutReq(overlap_task_class* i_overlap_task) {
|
|
return i_overlap_task->request.flag2 == 2;
|
|
}
|
|
|
|
void fopOvlpM_Done(overlap_task_class* i_overlap_task) {
|
|
cReq_Done(&i_overlap_task->request);
|
|
}
|
|
|
|
void fopOvlpM_ToldAboutID(fpc_ProcID i_sceneId) {
|
|
if (l_fopOvlpM_overlap[0] != NULL) {
|
|
l_fopOvlpM_overlap[0]->overlap_task->scene_id = i_sceneId;
|
|
}
|
|
}
|
|
|
|
int fopOvlpM_IsPeek() {
|
|
if (l_fopOvlpM_overlap[0] != NULL) {
|
|
return l_fopOvlpM_overlap[0]->field_0x8;
|
|
}
|
|
return FALSE;
|
|
}
|
|
|
|
int fopOvlpM_IsDone() {
|
|
if (l_fopOvlpM_overlap[0] != NULL) {
|
|
return cReq_Is_Done(&l_fopOvlpM_overlap[0]->base);
|
|
}
|
|
return FALSE;
|
|
}
|
|
|
|
int fopOvlpM_IsDoingReq() {
|
|
if (l_fopOvlpM_overlap[0] != NULL && l_fopOvlpM_overlap[0]->field_0x4 == 1) {
|
|
return 1;
|
|
}
|
|
return FALSE;
|
|
}
|
|
|
|
int fopOvlpM_ClearOfReq() {
|
|
if (l_fopOvlpM_overlap[0] != NULL) {
|
|
return fopOvlpReq_OverlapClr(l_fopOvlpM_overlap[0]);
|
|
}
|
|
return FALSE;
|
|
}
|
|
|
|
static overlap_request_class l_fopOvlpM_Request;
|
|
|
|
overlap_request_class* fopOvlpM_Request(s16 i_procname, u16 i_peektime) {
|
|
if (l_fopOvlpM_overlap[0] == NULL) {
|
|
l_fopOvlpM_overlap[0] = fopOvlpReq_Request(&l_fopOvlpM_Request, i_procname, i_peektime);
|
|
return l_fopOvlpM_overlap[0];
|
|
}
|
|
|
|
return NULL;
|
|
}
|
|
|
|
void fopOvlpM_Management() {
|
|
if (l_fopOvlpM_overlap[0] != NULL) {
|
|
switch (fopOvlpReq_Handler(l_fopOvlpM_overlap[0])) {
|
|
case cPhs_UNK3_e:
|
|
case cPhs_COMPLEATE_e:
|
|
case cPhs_ERROR_e:
|
|
l_fopOvlpM_overlap[0] = NULL;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
int fopOvlpM_Cancel() {
|
|
if (l_fopOvlpM_overlap[0] == NULL) {
|
|
return 1;
|
|
}
|
|
|
|
if (fopOvlpReq_Cancel(l_fopOvlpM_overlap[0]) == true) {
|
|
l_fopOvlpM_overlap[0] = NULL;
|
|
#if DEBUG
|
|
BOOL state = mDoCPd_c::isConnect(PAD_3);
|
|
if (state) {
|
|
JUT_WARN(336, "%s", "fopOvlpM_Cancel SUCCESSED");
|
|
}
|
|
#endif
|
|
return 1;
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
void fopOvlpM_Init() {}
|