1
0
mirror of https://github.com/0O0o0oOoO00/Alas.git synced 2026-05-14 11:49:26 +08:00

add: pause lua state when setting better global speedup rate

This commit is contained in:
0O0o0oOoO00
2025-11-21 17:42:16 +08:00
parent e94bb9895e
commit fdda0b1e8c
4 changed files with 38 additions and 4 deletions

View File

@@ -641,6 +641,10 @@ void Cracker::print_value(std::vector<std::string>& path) {
}
}
void Cracker::better_global_speedup_pause(bool is_need) {
m_better_global_speedup_need_pause.store(is_need);
}
void Cracker::load_lua_resources() {
SPDLOG_INFO("Load lua resources");
@@ -966,6 +970,7 @@ void Cracker::hook_all_lua_functions() {
m_state["ys"]["Battle"]["BattleState"]["ExitBattle"] = [this](sol::this_state L, Lua::VariadicArgs args) {
m_original.ys_Battle_BattleState_ExitBattle(L, args);
if (IS_ENABLED(BETTER_GLOBAL_SPEEDUP)) {
better_global_speedup_pause(false);
better_global_speedup_set_rate(m_better_global_speedup_rate.load());
}
};
@@ -973,6 +978,7 @@ void Cracker::hook_all_lua_functions() {
m_state["ys"]["Battle"]["BattleState"]["ScaleTimer"] = [this](sol::this_state L, Lua::VariadicArgs args) {
m_original.ys_Battle_BattleState_ScaleTimer(L, args);
if (IS_ENABLED(BETTER_GLOBAL_SPEEDUP)) {
better_global_speedup_pause(false);
better_global_speedup_set_rate(m_better_global_speedup_rate.load());
}
};
@@ -1452,6 +1458,20 @@ void Cracker::hook_all_lua_functions() {
}
void Cracker::better_global_speedup_set_rate(double rate) {
if (m_better_global_speedup_need_pause.load()) {
better_global_speedup_set_rate_with_pause(rate);
} else {
better_global_speedup_set_rate_without_pause(rate);
}
}
void Cracker::better_global_speedup_set_rate_with_pause(double rate) {
LUA_STATUS_PAUSER_GUARD();
m_state["ys"]["Battle"]["BattleConfig"]["BASIC_TIME_SCALE"] = rate;
m_state["Time"]["timeScale"] = rate;
}
void Cracker::better_global_speedup_set_rate_without_pause(double rate) {
m_state["ys"]["Battle"]["BattleConfig"]["BASIC_TIME_SCALE"] = rate;
m_state["Time"]["timeScale"] = rate;
}