mirror of
https://github.com/korenkonder/ReDIVA.git
synced 2026-10-04 20:58:03 +03:00
135 lines
3.4 KiB
C++
135 lines
3.4 KiB
C++
/*
|
|
by korenkonder
|
|
GitHub/GitLab: korenkonder
|
|
*/
|
|
|
|
#include "system_startup.hpp"
|
|
#include "../CRE/mdata_manager.hpp"
|
|
#include "game_state.hpp"
|
|
#include "pv_game.hpp"
|
|
|
|
system_startup_detail::TaskSystemStartup task_system_startup;
|
|
|
|
struct system_startup_struct {
|
|
int32_t state;
|
|
int32_t wait;
|
|
bool field_1D;
|
|
};
|
|
|
|
extern render_context* rctx_ptr;
|
|
|
|
system_startup_struct system_startup;
|
|
|
|
int32_t system_startup_ready;
|
|
|
|
static void task_pv_game_init_test_pv();
|
|
|
|
static bool sub_140672AD0();
|
|
|
|
namespace system_startup_detail {
|
|
TaskSystemStartup::TaskSystemStartup() {
|
|
|
|
}
|
|
|
|
TaskSystemStartup::~TaskSystemStartup() {
|
|
|
|
}
|
|
|
|
bool TaskSystemStartup::Init() {
|
|
system_startup.state = 0;
|
|
system_startup.wait = 0;
|
|
system_startup.field_1D = false;
|
|
return true;
|
|
}
|
|
|
|
bool TaskSystemStartup::Ctrl() {
|
|
system_startup_ready = 0;
|
|
switch (system_startup.state) {
|
|
case 0:
|
|
system_startup.state = 1;
|
|
case 1:
|
|
system_startup.state = 2;
|
|
break;
|
|
case 2:
|
|
mdata_manager_append_task();
|
|
system_startup.state = 3;
|
|
break;
|
|
case 3:
|
|
if (mdata_manager_get()->state == 5 ||mdata_manager_get()->state == 15)
|
|
system_startup.state = 4;
|
|
break;
|
|
case 4:
|
|
//rctx_ptr->draw_pass.enable[DRAW_PASS_3D] = false;
|
|
task_pv_game_init_test_pv();
|
|
system_startup.state = 5;
|
|
break;
|
|
case 5:
|
|
if (!task_pv_game_check_task_ready() && sub_140672AD0())
|
|
system_startup.state = 6;
|
|
break;
|
|
case 6:
|
|
system_startup.wait = 0;//120;
|
|
system_startup.state = 7;
|
|
break;
|
|
case 7:
|
|
if (system_startup.wait-- < 0)
|
|
system_startup.state = 8;
|
|
break;
|
|
case 8:
|
|
//rctx_ptr->draw_pass.enable[DRAW_PASS_3D] = true;
|
|
system_startup_ready = 1;
|
|
break;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
bool TaskSystemStartup::Dest() {
|
|
if (task_pv_game_check_task_ready() && !sub_140672AD0())
|
|
return false;
|
|
|
|
opd_make_manager_task_free();
|
|
mdata_manager_free_task();
|
|
return true;
|
|
}
|
|
}
|
|
|
|
bool task_system_startup_append_task() {
|
|
return app::TaskWork::AppendTask(&task_system_startup, "SYSTEM_STARTUP");
|
|
}
|
|
|
|
bool task_system_startup_free_task() {
|
|
return task_system_startup.SetDest();
|
|
}
|
|
|
|
static void task_pv_game_init_test_pv() {
|
|
if (test_mode_get())
|
|
return;
|
|
|
|
task_rob_manager_append_task();
|
|
TaskPvGame::InitData init_data;
|
|
init_data.data.pv_id = 999;
|
|
init_data.data.difficulty = 1;
|
|
init_data.data.field_C = 0;
|
|
init_data.data.score_percentage_clear = 50;
|
|
init_data.data.life_gauge_safety_time = 40;
|
|
init_data.data.life_gauge_border = 30;
|
|
init_data.field_190 = false;
|
|
init_data.field_191 = false;
|
|
init_data.no_fail = false;
|
|
init_data.field_193 = true;
|
|
init_data.field_194 = true;
|
|
init_data.field_195 = true;
|
|
init_data.field_198 = true;
|
|
task_pv_game_append_task(&init_data);
|
|
}
|
|
|
|
static bool sub_140672AD0() {
|
|
if (test_mode_get() || system_startup.field_1D)
|
|
return true;
|
|
|
|
task_pv_game_free_task();
|
|
if (!task_pv_game_check_task_ready() && task_rob_manager_free_task())
|
|
system_startup.field_1D = true;
|
|
return system_startup.field_1D;
|
|
}
|