mirror of
https://github.com/zeldaret/tww.git
synced 2026-07-25 22:18:35 -04:00
105 lines
2.6 KiB
C++
105 lines
2.6 KiB
C++
/**
|
|
* f_op_overlap_mng.cpp
|
|
* Overlap Process Manager
|
|
*/
|
|
|
|
#include "f_op/f_op_overlap_mng.h"
|
|
#include "SSystem/SComponent/c_request.h"
|
|
#include "f_op/f_op_overlap_req.h"
|
|
#include "f_op/f_op_scene_pause.h"
|
|
#include "f_pc/f_pc_executor.h"
|
|
#include "JSystem/JUtility/JUTAssert.h"
|
|
|
|
// making it not an array put it in .bss
|
|
static request_base_class* l_fopOvlpM_overlap[1] = {NULL};
|
|
|
|
int fopOvlpM_SceneIsStop() {
|
|
if (l_fopOvlpM_overlap[0]) {
|
|
return fopScnPause_Enable(
|
|
(scene_class*)fpcEx_SearchByID(l_fopOvlpM_overlap[0]->field_0x20[0x32]));
|
|
} else {
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
int fopOvlpM_SceneIsStart() {
|
|
if (l_fopOvlpM_overlap[0]) {
|
|
return fopScnPause_Disable(
|
|
(scene_class*)fpcEx_SearchByID(l_fopOvlpM_overlap[0]->field_0x20[0x32]));
|
|
} else {
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
int fopOvlpM_IsOutReq(overlap_task_class* pTaskClass) {
|
|
return (pTaskClass->field_0xc4 & 0x3F) == 2;
|
|
}
|
|
|
|
void fopOvlpM_Done(overlap_task_class* pTaskClass) {
|
|
cReq_Done((request_base_class*)&pTaskClass->field_0xc4);
|
|
}
|
|
|
|
void fopOvlpM_ToldAboutID(unsigned int param_1) {
|
|
l_fopOvlpM_overlap[0] ? l_fopOvlpM_overlap[0]->field_0x20[0x32] = param_1 : 0;
|
|
}
|
|
|
|
int fopOvlpM_IsPeek() {
|
|
return l_fopOvlpM_overlap[0] ? l_fopOvlpM_overlap[0]->field_0x8 : 0;
|
|
}
|
|
|
|
int fopOvlpM_IsDone() {
|
|
return l_fopOvlpM_overlap[0] ? cReq_Is_Done(l_fopOvlpM_overlap[0]) : 0;
|
|
}
|
|
|
|
int fopOvlpM_IsDoingReq() {
|
|
if (l_fopOvlpM_overlap[0] && l_fopOvlpM_overlap[0]->field_0x4 == 1) {
|
|
return 1;
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
int fopOvlpM_ClearOfReq() {
|
|
return l_fopOvlpM_overlap[0] ?
|
|
fopOvlpReq_OverlapClr((overlap_request_class*)l_fopOvlpM_overlap[0]) :
|
|
0;
|
|
}
|
|
|
|
static overlap_request_class l_fopOvlpM_Request;
|
|
|
|
request_base_class* fopOvlpM_Request(s16 param_1, u16 param_2) {
|
|
if (!l_fopOvlpM_overlap[0]) {
|
|
request_base_class* tmp = fopOvlpReq_Request(&l_fopOvlpM_Request, param_1, param_2);
|
|
l_fopOvlpM_overlap[0] = tmp;
|
|
return tmp;
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
void fopOvlpM_Management() {
|
|
if (l_fopOvlpM_overlap[0]) {
|
|
int tmp = fopOvlpReq_Handler((overlap_request_class*)l_fopOvlpM_overlap[0]);
|
|
if (6 <= tmp || 3 > tmp) {
|
|
return;
|
|
}
|
|
l_fopOvlpM_overlap[0] = NULL;
|
|
}
|
|
}
|
|
|
|
int fopOvlpM_Cancel() {
|
|
if (!l_fopOvlpM_overlap[0]) {
|
|
return 1;
|
|
}
|
|
|
|
if (fopOvlpReq_Cancel((overlap_request_class*)l_fopOvlpM_overlap[0]) == true) {
|
|
l_fopOvlpM_overlap[0] = NULL;
|
|
JUT_WARN(331, "%s", "fopOvlpM_Cancel SUCCESSED");
|
|
return 1;
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
void fopOvlpM_Init() {}
|