Add Timer Delays Customization

This commit is contained in:
GreenComfyTea
2023-09-26 13:14:23 +03:00
parent 0951de24e2
commit e586534c4d
11 changed files with 229 additions and 84 deletions

View File

@@ -48,166 +48,166 @@ this.game_keyboard = nil;
this.scene_manager = nil;
this.game_manager = nil;
function this.init()
this.init_message_manager();
this.init_enemy_manager();
this.init_lobby_manager()
this.init_progress_manager();
this.init_quest_manager();
this.init_player_manager();
this.init_village_area_manager();
this.init_gui_manager();
this.init_game_keyboard();
this.init_scene_manager();
this.init_game_manager();
this.init_servant_manager();
this.init_otomo_manager();
this.init_long_sword_shell_manager();
this.init_light_bowgun_shell_manager();
this.init_horn_shell_manager();
function this.update()
this.update_message_manager();
this.update_enemy_manager();
this.update_lobby_manager()
this.update_progress_manager();
this.update_quest_manager();
this.update_player_manager();
this.update_village_area_manager();
this.update_gui_manager();
this.update_game_keyboard();
this.update_scene_manager();
this.update_game_manager();
this.update_servant_manager();
this.update_otomo_manager();
this.update_long_sword_shell_manager();
this.update_light_bowgun_shell_manager();
this.update_horn_shell_manager();
end
function this.init_message_manager()
function this.update_message_manager()
this.message_manager = sdk.get_managed_singleton("snow.gui.MessageManager");
if this.message_manager == nil then
error_handler.report("singletons.init_message_manager", "Failed to access Data: message_manager");
error_handler.report("singletons.update_message_manager", "Failed to access Data: message_manager");
end
return this.message_manager;
end
function this.init_enemy_manager()
function this.update_enemy_manager()
this.enemy_manager = sdk.get_managed_singleton("snow.enemy.EnemyManager");
if this.enemy_manager == nil then
error_handler.report("singletons.init_enemy_manager", "Failed to access Data: enemy_manager");
error_handler.report("singletons.update_enemy_manager", "Failed to access Data: enemy_manager");
end
return this.enemy_manager;
end
function this.init_lobby_manager()
function this.update_lobby_manager()
this.lobby_manager = sdk.get_managed_singleton("snow.LobbyManager");
if this.lobby_manager == nil then
error_handler.report("singletons.init_lobby_manager", "Failed to access Data: lobby_manager");
error_handler.report("singletons.update_lobby_manager", "Failed to access Data: lobby_manager");
return false;
end
return this.lobby_manager;
end
function this.init_progress_manager()
function this.update_progress_manager()
this.progress_manager = sdk.get_managed_singleton("snow.progress.ProgressManager");
if this.progress_manager == nil then
error_handler.report("singletons.init_lobby_manager", "Failed to access Data: progress_manager");
error_handler.report("singletons.update_progress_manager", "Failed to access Data: progress_manager");
return false;
end
return this.progress_manager;
end
function this.init_quest_manager()
function this.update_quest_manager()
this.quest_manager = sdk.get_managed_singleton("snow.QuestManager");
if this.quest_manager == nil then
error_handler.report("singletons.init_quest_manager", "Failed to access Data: quest_manager");
error_handler.report("singletons.update_quest_manager", "Failed to access Data: quest_manager");
end
return this.quest_manager;
end
function this.init_player_manager()
function this.update_player_manager()
this.player_manager = sdk.get_managed_singleton("snow.player.PlayerManager");
if this.player_manager == nil then
error_handler.report("singletons.init_player_manager", "Failed to access Data: player_manager");
error_handler.report("singletons.update_player_manager", "Failed to access Data: player_manager");
end
return this.player_manager;
end
function this.init_village_area_manager()
function this.update_village_area_manager()
this.village_area_manager = sdk.get_managed_singleton("snow.VillageAreaManager");
if this.village_area_manager == nil then
error_handler.report("singletons.init_village_area_manager", "Failed to access Data: village_area_manager");
error_handler.report("singletons.update_village_area_manager", "Failed to access Data: village_area_manager");
end
return this.village_area_manager;
end
function this.init_gui_manager()
function this.update_gui_manager()
this.gui_manager = sdk.get_managed_singleton("snow.gui.GuiManager");
if this.gui_manager == nil then
error_handler.report("singletons.init_gui_manager", "Failed to access Data: gui_manager");
error_handler.report("singletons.update_gui_manager", "Failed to access Data: gui_manager");
end
return this.gui_manager;
end
function this.init_game_keyboard()
function this.update_game_keyboard()
this.game_keyboard = sdk.get_managed_singleton("snow.GameKeyboard");
if this.game_keyboard == nil then
error_handler.report("singletons.init_game_keyboard", "Failed to access Data: game_keyboard");
error_handler.report("singletons.update_game_keyboard", "Failed to access Data: game_keyboard");
end
return this.game_keyboard;
end
function this.init_scene_manager()
function this.update_scene_manager()
this.scene_manager = sdk.get_native_singleton("via.SceneManager");
if this.scene_manager == nil then
error_handler.report("singletons.init_scene_manager", "Failed to access Data: scene_manager");
error_handler.report("singletons.update_scene_manager", "Failed to access Data: scene_manager");
end
return this.scene_manager;
end
function this.init_game_manager()
function this.update_game_manager()
this.game_manager = sdk.get_managed_singleton("snow.SnowGameManager");
if this.game_manager == nil then
error_handler.report("singletons.init_game_manager", "Failed to access Data: game_manager");
error_handler.report("singletons.update_game_manager", "Failed to access Data: game_manager");
end
return this.game_manager;
end
function this.init_servant_manager()
function this.update_servant_manager()
this.servant_manager = sdk.get_managed_singleton("snow.ai.ServantManager");
if this.servant_manager == nil then
error_handler.report("singletons.init_servant_manager", "Failed to access Data: servant_manager");
error_handler.report("singletons.update_servant_manager", "Failed to access Data: servant_manager");
end
return this.servant_manager;
end
function this.init_otomo_manager()
function this.update_otomo_manager()
this.otomo_manager = sdk.get_managed_singleton("snow.otomo.OtomoManager");
if this.otomo_manager == nil then
error_handler.report("singletons.init_otomo_manager", "Failed to access Data: otomo_manager");
error_handler.report("singletons.update_otomo_manager", "Failed to access Data: otomo_manager");
end
return this.otomo_manager;
end
function this.init_long_sword_shell_manager()
function this.update_long_sword_shell_manager()
this.long_sword_shell_manager = sdk.get_managed_singleton("snow.shell.LongSwordShellManager");
if this.long_sword_shell_manager == nil then
error_handler.report("singletons.init_long_sword_shell_manager", "Failed to access Data: long_sword_shell_manager");
error_handler.report("singletons.update_long_sword_shell_manager", "Failed to access Data: long_sword_shell_manager");
end
return this.long_sword_shell_manager;
end
function this.init_light_bowgun_shell_manager()
function this.update_light_bowgun_shell_manager()
this.light_bowgun_shell_manager = sdk.get_managed_singleton("snow.shell.LightBowgunShellManager");
if this.light_bowgun_shell_manager == nil then
error_handler.report("singletons.init_light_bowgun_shell_manager", "Failed to access Data: light_bowgun_shell_manager");
error_handler.report("singletons.update_light_bowgun_shell_manager", "Failed to access Data: light_bowgun_shell_manager");
end
return this.light_bowgun_shell_manager;
end
function this.init_horn_shell_manager()
function this.update_horn_shell_manager()
this.horn_shell_manager = sdk.get_managed_singleton("snow.shell.HornShellManager");
if this.horn_shell_manager == nil then
error_handler.report("singletons.init_horn_shell_manager", "Failed to access Data: horn_shell_manager");
error_handler.report("singletons.update_horn_shell_manager", "Failed to access Data: horn_shell_manager");
end
return this.horn_shell_manager;
@@ -221,7 +221,7 @@ function this.init_dependencies()
end
function this.init_module()
this.init();
this.update();
end
return this;

View File

@@ -99,14 +99,20 @@ function this.remove_delay_timer(delay_timer)
end
function this.init_global_timers()
this.new_timer(singletons.init, 1);
this.new_timer(screen.update_window_size, 1);
this.new_timer(quest_status.update_is_online, 1);
this.new_timer(this.update_quest_time, 1 / 60);
this.new_timer(players.update_players, 0.5);
this.new_timer(players.update_myself_position, 1);
this.new_timer(buffs.update, 0.5);
this.new_timer(player_info.update, 0.5);
local cached_config = config.current_config.global_settings.performance.timer_delays;
this.timer_list = {};
this.new_timer(singletons.update, cached_config.update_singletons_delay);
this.new_timer(screen.update_window_size, cached_config.update_window_size_delay);
this.new_timer(quest_status.update_is_online, cached_config.update_is_online_delay);
this.new_timer(this.update_quest_time, cached_config.update_quest_time_delay);
this.new_timer(players.update_players, cached_config.update_players_delay);
this.new_timer(players.update_myself_position, cached_config.update_myself_position_delay);
this.new_timer(buffs.update, cached_config.update_buffs_delay);
this.new_timer(player_info.update, cached_config.update_player_info_delay);
xy = utils.table.tostring(this.timer_list);
end
function this.update_timers()

View File

@@ -76,7 +76,17 @@ function this.init_default()
performance = {
max_monster_updates_per_tick = 2,
prioritize_large_monsters = false
prioritize_large_monsters = false,
timer_delays = {
update_singletons_delay = 1,
update_window_size_delay = 1,
update_quest_time_delay = 1 / 60,
update_is_online_delay = 1,
update_players_delay = 0.5,
update_myself_position_delay = 1,
update_player_info_delay = 0.5,
update_buffs_delay = 0.5,
}
},
renderer = {

View File

@@ -768,6 +768,16 @@ this.default_language = {
weapon_skills = "Weapon Skills",
otomo_moves = "Buddy Moves",
misc_buffs = "Misc Buffs",
timer_delays = "Timer Delays",
update_singletons_delay = "Update Singletons (seconds)",
update_window_size_delay = "Update Window Size (seconds)",
update_quest_time_delay = "Update Quest Time (seconds)",
update_is_online_delay = "Update Is Online (seconds)",
update_players_delay = "Update Players (seconds)",
update_myself_position_delay = "Update Myself Position (seconds)",
update_player_info_delay = "Update Player Info (seconds)",
update_buffs_delay = "Update Buffs (seconds)",
},
};

View File

@@ -371,6 +371,7 @@ function this.draw()
local modifiers_changed = false;
local modules_changed = false;
local global_settings_changed = false;
local timer_delays_changed = false;
local small_monster_UI_changed = false;
local large_monster_dynamic_UI_changed = false;
local large_monster_static_UI_changed = false;
@@ -405,7 +406,7 @@ function this.draw()
config_changed, apply_font_requested = this.draw_config();
modules_changed = this.draw_modules();
this.draw_hotkeys();
global_settings_changed, modifiers_changed, apply_font_requested, language_changed = this.draw_global_settings(apply_font_requested, config_changed);
global_settings_changed, modifiers_changed, timer_delays_changed, apply_font_requested, language_changed = this.draw_global_settings(apply_font_requested, config_changed);
small_monster_UI_changed = this.draw_small_monster_UI();
if imgui.tree_node(language.current_language.customization_menu.large_monster_UI) then
@@ -491,6 +492,10 @@ function this.draw()
stats_UI.init_UI();
end
if timer_delays_changed then
time.init_global_timers();
end
if this.menu_font_changed and (apply_font_requested or config_changed) then
this.menu_font_changed = false;
this.reload_font();
@@ -868,6 +873,7 @@ function this.draw_global_settings(apply_font_requested, language_changed)
local changed = false;
local config_changed = false;
local modifiers_changed = false;
local timer_delays_changed = false;
local index = 1;
@@ -1007,6 +1013,67 @@ function this.draw_global_settings(apply_font_requested, language_changed)
config_changed = config_changed or changed;
if imgui.tree_node(language.current_language.customization_menu.timer_delays) then
changed, cached_config.performance.timer_delays.update_singletons_delay = imgui.drag_float(
language.current_language.customization_menu.update_singletons_delay,
cached_config.performance.timer_delays.update_singletons_delay, 0.001, 0.001, screen.width, "%.3f");
config_changed = config_changed or changed;
timer_delays_changed = timer_delays_changed or changed;
changed, cached_config.performance.timer_delays.update_window_size_delay = imgui.drag_float(
language.current_language.customization_menu.update_window_size_delay,
cached_config.performance.timer_delays.update_window_size_delay, 0.001, 0.001, screen.width, "%.3f");
config_changed = config_changed or changed;
timer_delays_changed = timer_delays_changed or changed;
changed, cached_config.performance.timer_delays.update_quest_time_delay = imgui.drag_float(
language.current_language.customization_menu.update_quest_time_delay,
cached_config.performance.timer_delays.update_quest_time_delay, 0.001, 0.001, screen.width, "%.3f");
config_changed = config_changed or changed;
timer_delays_changed = timer_delays_changed or changed;
changed, cached_config.performance.timer_delays.update_is_online_delay = imgui.drag_float(
language.current_language.customization_menu.update_is_online_delay,
cached_config.performance.timer_delays.update_is_online_delay, 0.001, 0.001, screen.width, "%.3f");
config_changed = config_changed or changed;
timer_delays_changed = timer_delays_changed or changed;
changed, cached_config.performance.timer_delays.update_players_delay = imgui.drag_float(
language.current_language.customization_menu.update_players_delay,
cached_config.performance.timer_delays.update_players_delay, 0.001, 0.001, screen.width, "%.3f");
config_changed = config_changed or changed;
timer_delays_changed = timer_delays_changed or changed;
changed, cached_config.performance.timer_delays.update_myself_position_delay = imgui.drag_float(
language.current_language.customization_menu.update_myself_position_delay,
cached_config.performance.timer_delays.update_myself_position_delay, 0.001, 0.001, screen.width, "%.3f");
config_changed = config_changed or changed;
timer_delays_changed = timer_delays_changed or changed;
changed, cached_config.performance.timer_delays.update_player_info_delay = imgui.drag_float(
language.current_language.customization_menu.update_player_info_delay,
cached_config.performance.timer_delays.update_player_info_delay, 0.001, 0.001, screen.width, "%.3f");
config_changed = config_changed or changed;
timer_delays_changed = timer_delays_changed or changed;
changed, cached_config.performance.timer_delays.update_buffs_delay = imgui.drag_float(
language.current_language.customization_menu.update_buffs_delay,
cached_config.performance.timer_delays.update_buffs_delay, 0.001, 0.001, screen.width, "%.3f");
config_changed = config_changed or changed;
timer_delays_changed = timer_delays_changed or changed;
imgui.tree_pop();
end
imgui.tree_pop();
end
@@ -1146,7 +1213,7 @@ function this.draw_global_settings(apply_font_requested, language_changed)
imgui.tree_pop();
end
return config_changed, modifiers_changed, apply_font_requested, language_changed;
return config_changed, modifiers_changed, timer_delays_changed, apply_font_requested, language_changed;
end
function this.draw_small_monster_UI()

View File

@@ -337,6 +337,7 @@
"time_label": "Time Label",
"time_limit": "Time Limit (seconds)",
"timer": "Timer",
"timer_delays": "Timer Delays",
"timer_label": "Timer Label",
"top_buildup": "Top Buildup",
"top_damage": "Top Damage",
@@ -359,6 +360,14 @@
"tracked_damage_types": "Tracked Damage Types",
"tracked_monster_types": "Tracked Monster Types",
"type": "Type",
"update_buffs_delay": "Update Buffs (seconds)",
"update_is_online_delay": "Update Is Online (seconds)",
"update_myself_position_delay": "Update Myself Position (seconds)",
"update_player_info_delay": "Update Player Info (seconds)",
"update_players_delay": "Update Players (seconds)",
"update_quest_time_delay": "Update Quest Time (seconds)",
"update_singletons_delay": "Update Singletons (seconds)",
"update_window_size_delay": "Update Window Size (seconds)",
"use_d2d_if_available": "Use Direct2D if available",
"value": "Value",
"value_label": "Value Label",
@@ -377,7 +386,7 @@
"dango_skills": {
"dango_insurance_defense_up": "Dango Insurance Defense Up"
},
"font_name": "NotoSansCJKsc-VF",
"font_name": "",
"misc_buffs": {
"attack_up": "Attack Up",
"defense_up": "Defense Up",
@@ -477,28 +486,6 @@
"water_resistance": "Water Res"
},
"unicode_glyph_ranges": [
32,
255,
256,
383,
1024,
1327,
4352,
4607,
8192,
8303,
12288,
12543,
12592,
12687,
12784,
12799,
19968,
40879,
44032,
55215,
65280,
65519,
0
],
"weapon_skills": {

View File

@@ -225,6 +225,7 @@
"in_lobby": "In Lobby",
"in_training_area": "In Training Area",
"include": "含める情報",
"init_singletons_delay": "Init Singletons Delay (seconds)",
"inside": "Inside",
"installations": "Installations",
"italic": "イタリック",
@@ -351,7 +352,11 @@
"time_label": "タイムラベル",
"time_limit": "タイムリミット(s.)",
"timer": "Timer",
"timer_delays": "Timer Delays",
"timer_label": "タイマーラベル",
"timer_update_delays": "Timer Update Delays (seconds)",
"timers": "Timers",
"timers_info": "Update Delay in Seconds",
"top_buildup": "最高蓄積値",
"top_damage": "最高ダメージ",
"top_dps": "最高DPS",
@@ -373,6 +378,14 @@
"tracked_damage_types": "ダメージタイプでの追跡",
"tracked_monster_types": "モンスタータイプでの追跡",
"type": "タイプ",
"update_buffs_delay": "Update Buffs Delay (seconds)",
"update_is_online_delay": "Update Is Online Delay (seconds)",
"update_myself_position_delay": "Update Myself Position Delay (seconds)",
"update_player_info_delay": "Update Player Info Delay (seconds)",
"update_players_delay": "Update Players Delay (seconds)",
"update_quest_time_delay": "Update Quest Time Delay (seconds)",
"update_singletons_delay": "Update Singletons",
"update_window_size_delay": "Update Window Size Delay (seconds)",
"use_d2d_if_available": "Use Direct2D if available",
"value": "Value",
"value_label": "バリューラベル",

View File

@@ -226,6 +226,7 @@
"in_lobby": "로비 내",
"in_training_area": "훈련구역 내",
"include": "포함",
"init_singletons_delay": "Init Singletons Delay (seconds)",
"inside": "내부",
"installations": "설치",
"italic": "기울임",
@@ -352,7 +353,11 @@
"time_label": "시간 정보",
"time_limit": "시간 제한 (단위: 초)",
"timer": "타이머",
"timer_delays": "Timer Delays",
"timer_label": "타이머 정보",
"timer_update_delays": "Timer Update Delays (seconds)",
"timers": "Timers",
"timers_info": "Update Delay in Seconds",
"top_buildup": "총 누적치",
"top_damage": "최고 대미지",
"top_dps": "최고 DPS",
@@ -374,6 +379,14 @@
"tracked_damage_types": "추적할 대미지 종류",
"tracked_monster_types": "추적할 몬스터 타입",
"type": "종류",
"update_buffs_delay": "Update Buffs Delay (seconds)",
"update_is_online_delay": "Update Is Online Delay (seconds)",
"update_myself_position_delay": "Update Myself Position Delay (seconds)",
"update_player_info_delay": "Update Player Info Delay (seconds)",
"update_players_delay": "Update Players Delay (seconds)",
"update_quest_time_delay": "Update Quest Time Delay (seconds)",
"update_singletons_delay": "Update Singletons",
"update_window_size_delay": "Update Window Size Delay (seconds)",
"use_d2d_if_available": "가능한 Direct2D를 사용함",
"value": "Value",
"value_label": "값 정보",

View File

@@ -226,6 +226,7 @@
"in_lobby": "В лобби",
"in_training_area": "В тренировочной зоне",
"include": "Элементы",
"init_singletons_delay": "Init Singletons Delay (seconds)",
"inside": "Внутри",
"installations": "Установки",
"italic": "Курсив",
@@ -352,7 +353,11 @@
"time_label": "Метка времени",
"time_limit": "Ограничение по времени (cек.)",
"timer": "Таймер",
"timer_delays": "Timer Delays",
"timer_label": "Метка таймера",
"timer_update_delays": "Timer Update Delays (seconds)",
"timers": "Timers",
"timers_info": "Update Delay in Seconds",
"top_buildup": "Наибольшее накопление",
"top_damage": "Наибольший урон",
"top_dps": "Наибольший урон в секунду",
@@ -374,6 +379,14 @@
"tracked_damage_types": "Отслеживаемые типы урона",
"tracked_monster_types": "Отслеживаемые типы монстров",
"type": "Тип",
"update_buffs_delay": "Update Buffs Delay (seconds)",
"update_is_online_delay": "Update Is Online Delay (seconds)",
"update_myself_position_delay": "Update Myself Position Delay (seconds)",
"update_player_info_delay": "Update Player Info Delay (seconds)",
"update_players_delay": "Update Players Delay (seconds)",
"update_quest_time_delay": "Update Quest Time Delay (seconds)",
"update_singletons_delay": "Update Singletons",
"update_window_size_delay": "Update Window Size Delay (seconds)",
"use_d2d_if_available": "Использовать Direct2D, если доступен",
"value": "Value",
"value_label": "Метка значений",

View File

@@ -226,6 +226,7 @@
"in_lobby": "在大厅",
"in_training_area": "在修炼场",
"include": "包含",
"init_singletons_delay": "Init Singletons Delay (seconds)",
"inside": "里面",
"installations": "狩猎设备",
"italic": "斜体",
@@ -352,7 +353,11 @@
"time_label": "时间标签",
"time_limit": "时间限制(秒)",
"timer": "计时器",
"timer_delays": "Timer Delays",
"timer_label": "计时器标签",
"timer_update_delays": "Timer Update Delays (seconds)",
"timers": "Timers",
"timers_info": "Update Delay in Seconds",
"top_buildup": "最高积累值",
"top_damage": "最高伤害",
"top_dps": "最高DPS",
@@ -374,6 +379,14 @@
"tracked_damage_types": "跟踪的伤害类型",
"tracked_monster_types": "跟踪的怪物类型",
"type": "类型",
"update_buffs_delay": "Update Buffs Delay (seconds)",
"update_is_online_delay": "Update Is Online Delay (seconds)",
"update_myself_position_delay": "Update Myself Position Delay (seconds)",
"update_player_info_delay": "Update Player Info Delay (seconds)",
"update_players_delay": "Update Players Delay (seconds)",
"update_quest_time_delay": "Update Quest Time Delay (seconds)",
"update_singletons_delay": "Update Singletons",
"update_window_size_delay": "Update Window Size Delay (seconds)",
"use_d2d_if_available": "可用时使用Direct2D",
"value": "Value",
"value_label": "数字",

View File

@@ -226,6 +226,7 @@
"in_lobby": "In Lobby",
"in_training_area": "In Training Area",
"include": "細部資訊調整",
"init_singletons_delay": "Init Singletons Delay (seconds)",
"inside": "內部",
"installations": "Installations",
"italic": "斜體",
@@ -352,7 +353,11 @@
"time_label": "時間",
"time_limit": "時限 (秒)",
"timer": "Timer",
"timer_delays": "Timer Delays",
"timer_label": "計時器",
"timer_update_delays": "Timer Update Delays (seconds)",
"timers": "Timers",
"timers_info": "Update Delay in Seconds",
"top_buildup": "最高累積值",
"top_damage": "最高傷害",
"top_dps": "最高 DPS",
@@ -374,6 +379,14 @@
"tracked_damage_types": "追蹤的傷害類型",
"tracked_monster_types": "追蹤的魔物類型",
"type": "類型",
"update_buffs_delay": "Update Buffs Delay (seconds)",
"update_is_online_delay": "Update Is Online Delay (seconds)",
"update_myself_position_delay": "Update Myself Position Delay (seconds)",
"update_player_info_delay": "Update Player Info Delay (seconds)",
"update_players_delay": "Update Players Delay (seconds)",
"update_quest_time_delay": "Update Quest Time Delay (seconds)",
"update_singletons_delay": "Update Singletons",
"update_window_size_delay": "Update Window Size Delay (seconds)",
"use_d2d_if_available": "Use Direct2D if available",
"value": "Value",
"value_label": "數字",