1
0
mirror of https://github.com/0O0o0oOoO00/Alas.git synced 2026-05-20 15:19:29 +08:00

fix: handle battle verify for global speedup of hook

This commit is contained in:
0O0o0oOoO00
2025-05-12 15:40:49 +08:00
parent 190294e2da
commit e63d9326f1
6 changed files with 58 additions and 10 deletions

View File

@@ -246,19 +246,45 @@ void Cracker::disable_all() {
disable_global_speedup();
}
void Cracker::enable_global_speedup(float rate) {
// IS_ENABLED(GLOBAL_SPEEDUP)
void Cracker::enable_global_speedup() {
IS_ENABLED(GLOBAL_SPEEDUP)
m_global_speedup_timer.stop();
m_global_speedup_timer.setInterval([rate]() {
get_Time_set_timeScale()(rate);
m_global_speedup_timer.setInterval([this]() {
get_Time_set_timeScale()(m_global_speedup_rate);
}, 500);
auto gen_new_total_time = [this](double total_time) -> double {
return total_time / m_global_speedup_rate;
};
m_original.GetBattleCheckResult = m_state["GetBattleCheckResult"];
m_state["GetBattleCheckResult"] = [this, gen_new_total_time](sol::this_state L, Lua::VariadicArgs args) {
double total_time = args[2];
std::vector<Lua::Object> new_args(args.begin(), args.end());
new_args[2] = sol::make_object(L, gen_new_total_time(total_time));
return m_original.GetBattleCheckResult(sol::as_args(new_args));
};
m_original.FinishStageCommand_GeneralPackage = m_state["FinishStageCommand"]["GeneralPackage"];
m_state["FinishStageCommand"]["GeneralPackage"] = [this, gen_new_total_time](sol::this_state L, Lua::VariadicArgs args) -> Lua::Table {
Lua::Table ret = m_original.FinishStageCommand_GeneralPackage(args);
double total_time = ret["total_time"];
ret["total_time"] = gen_new_total_time(total_time);
return ret;
};
ENABLE(GLOBAL_SPEEDUP)
}
void Cracker::update_global_speedup_rate(float rate) {
m_global_speedup_rate = rate;
}
void Cracker::disable_global_speedup() {
// IS_DISABLED(GLOBAL_SPEEDUP)
IS_DISABLED(GLOBAL_SPEEDUP)
m_global_speedup_timer.stop();
get_Time_set_timeScale()(1.0);
m_state["GetBattleCheckResult"] = m_original.GetBattleCheckResult;
m_state["FinishStageCommand"]["GeneralPackage"] = m_original.FinishStageCommand_GeneralPackage;
DISABLE(GLOBAL_SPEEDUP)
}