From 3e121fbd1ca8d6d5ea2b4a0f3718d9f4af78221f Mon Sep 17 00:00:00 2001 From: GreenComfyTea Date: Sun, 6 Aug 2023 15:57:48 +0300 Subject: [PATCH] Add Customization Menu status, position and size to config + Customization Menu bugfixes --- reframework/autorun/MHR_Overlay.lua | 10 ++- .../autorun/MHR_Overlay/Misc/config.lua | 24 +++++++ .../UI/Customizations/bar_customization.lua | 10 ++- .../MHR_Overlay/UI/customization_menu.lua | 64 ++++++++++++++----- 4 files changed, 81 insertions(+), 27 deletions(-) diff --git a/reframework/autorun/MHR_Overlay.lua b/reframework/autorun/MHR_Overlay.lua index c117942..bc6ec16 100644 --- a/reframework/autorun/MHR_Overlay.lua +++ b/reframework/autorun/MHR_Overlay.lua @@ -361,16 +361,14 @@ end -- #region re.on_draw_ui(function() if imgui.button(language.current_language.customization_menu.mod_name .. " v" .. config.current_config.version) then - customization_menu.is_opened = not customization_menu.is_opened; + local cached_config = config.current_config.customization_menu; + cached_config.visible = not cached_config.visible; + config.save_current(); end end); re.on_frame(function() - if not reframework:is_drawing_ui() then - customization_menu.is_opened = false; - end - - if customization_menu.is_opened then + if reframework:is_drawing_ui() then pcall(customization_menu.draw); end diff --git a/reframework/autorun/MHR_Overlay/Misc/config.lua b/reframework/autorun/MHR_Overlay/Misc/config.lua index 0fa9027..f0b07ff 100644 --- a/reframework/autorun/MHR_Overlay/Misc/config.lua +++ b/reframework/autorun/MHR_Overlay/Misc/config.lua @@ -476,6 +476,11 @@ function this.init_default() x = 10, y = 40 }, + + relative_offset = { + x = 0, + y = 45 + }, spacing = { x = 0, @@ -7569,6 +7574,25 @@ function this.init_default() debug = { history_size = 64 + }, + + customization_menu = { + visible = false, + + position = { + x = 360, + y = 50 + }, + + size = { + width = 785, + height = 610 + }, + + pivot = { + x = 0, + y = 0 + } } }; end diff --git a/reframework/autorun/MHR_Overlay/UI/Customizations/bar_customization.lua b/reframework/autorun/MHR_Overlay/UI/Customizations/bar_customization.lua index 120bb67..565cdeb 100644 --- a/reframework/autorun/MHR_Overlay/UI/Customizations/bar_customization.lua +++ b/reframework/autorun/MHR_Overlay/UI/Customizations/bar_customization.lua @@ -56,7 +56,7 @@ local displayed_directions = {}; function this.init() local default = language.default_language.customization_menu; local current = language.current_language.customization_menu; - + outline_styles = { default.inside, default.center, @@ -150,15 +150,13 @@ function this.draw(bar_name, bar) bar.outline.offset, 0.1, -screen.height, screen.height, "%.1f"); bar_changed = bar_changed or changed; - changed, index = imgui.combo(cached_language.style, - utils.table.find_index(this.outline_styles, - bar.outline.style), - this.displayed_outline_styles); + utils.table.find_index(outline_styles, bar.outline.style), + displayed_outline_styles); bar_changed = bar_changed or changed; if changed then - bar.outline.style = this.outline_styles[index]; + bar.outline.style = outline_styles[index]; end imgui.tree_pop(); diff --git a/reframework/autorun/MHR_Overlay/UI/customization_menu.lua b/reframework/autorun/MHR_Overlay/UI/customization_menu.lua index f8faaf0..d0b7ab7 100644 --- a/reframework/autorun/MHR_Overlay/UI/customization_menu.lua +++ b/reframework/autorun/MHR_Overlay/UI/customization_menu.lua @@ -65,7 +65,6 @@ local package = package; this.font = nil; this.full_font_range = {0x1, 0xFFFF, 0}; -this.is_opened = false; this.window_position = Vector2f.new(480, 200); this.window_pivot = Vector2f.new(0, 0); @@ -326,21 +325,33 @@ function this.init() end function this.draw() - imgui.set_next_window_pos(this.window_position, 1 << 3, this.window_pivot); - imgui.set_next_window_size(this.window_size, 1 << 3); - - imgui.push_font(this.font); - - this.is_opened = imgui.begin_window( - language.current_language.customization_menu.mod_name .. " v" .. config.current_config.version, this.is_opened, - this.window_flags); - - if not this.is_opened then - imgui.pop_font(); - imgui.end_window(); + if not config.current_config.customization_menu.visible then return; end + local window_position = Vector2f.new(config.current_config.customization_menu.position.x, config.current_config.customization_menu.position.y); + local window_pivot = Vector2f.new(config.current_config.customization_menu.pivot.x, config.current_config.customization_menu.pivot.y); + local window_size = Vector2f.new(config.current_config.customization_menu.size.width, config.current_config.customization_menu.size.height); + + imgui.set_next_window_pos(window_position, 1 << 3, window_pivot); + imgui.set_next_window_size(window_size, 1 << 3); + + imgui.push_font(this.font); + + config.current_config.customization_menu.visible = imgui.begin_window( + string.format("%s v%s", language.current_language.customization_menu.mod_name, config.current_config.version), + config.current_config.customization_menu.visible, + this.window_flags); + + + if not config.current_config.customization_menu.visible then + imgui.pop_font(); + imgui.end_window(); + config.save_current(); + return; + end + + local window_changed = false; local config_changed = false; local language_changed = false; local modifiers_changed = false; @@ -357,6 +368,28 @@ function this.draw() local debug_changed = false; local apply_font_requested = false; + local new_window_position = imgui.get_window_pos(); + if window_position.x ~= new_window_position.x or window_position.y ~= new_window_position.y then + window_changed = window_changed or true; + + config.current_config.customization_menu.position.x = new_window_position.x; + config.current_config.customization_menu.position.y = new_window_position.y; + end + + local new_window_size = imgui.get_window_size(); + if window_size.x ~= new_window_size.x or window_size.y ~= new_window_size.y then + window_changed = window_changed or true; + + config.current_config.customization_menu.size.width = new_window_size.x; + config.current_config.customization_menu.size.height = new_window_size.y; + end + + xy = string.format("%s", utils.vec2.tostring(window_position)); + + local new_window_size = imgui.get_window_size(); + window_changed = window_changed or new_window_size.x ~= window_size.x or new_window_size.y ~= window_size.y; + xy = xy .. string.format("\n%s", utils.vec2.tostring(window_size)); + config_changed, apply_font_requested = this.draw_config(); modules_changed = this.draw_modules(); this.draw_hotkeys(); @@ -446,11 +479,12 @@ function this.draw() this.reload_font(); end - if modules_changed or global_settings_changed or small_monster_UI_changed or large_monster_dynamic_UI_changed or + if window_changed or modules_changed or global_settings_changed or small_monster_UI_changed or large_monster_dynamic_UI_changed or large_monster_static_UI_changed or large_monster_highlighted_UI_changed or time_UI_changed or damage_meter_UI_changed or endemic_life_UI_changed or buff_UI_changed or modifiers_changed or config_changed or debug_changed then config.save_current(); end + end function this.draw_config() @@ -2143,7 +2177,7 @@ function this.draw_endemic_life_UI() end changed = label_customization.draw( - language.current_language.customization_menu.creature_name_label, cached_config.creature_name_label.visibility); + language.current_language.customization_menu.creature_name_label, cached_config.creature_name_label); config_changed = config_changed or changed;