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:
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user