From 4e045be5eb2043fa0930a01b82c4a27b2ac5ff07 Mon Sep 17 00:00:00 2001 From: GreenComfyTea Date: Mon, 7 Feb 2022 18:21:24 +0200 Subject: [PATCH] ? --- MHR_Overlay.lua | 27 +- MHR_Overlay/Misc/config.lua | 66 ++++- MHR_Overlay/Monsters/body_part.lua | 2 + MHR_Overlay/Monsters/large_monster.lua | 107 +++++++- MHR_Overlay/Monsters/small_monster.lua | 3 + MHR_Overlay/UI/Modules/damage_meter_UI.lua | 9 +- MHR_Overlay/UI/Modules/large_monster_UI.lua | 6 +- MHR_Overlay/UI/Modules/small_monster_UI.lua | 3 +- .../UI/UI_Entities/body_part_UI_entity.lua | 9 +- .../UI/UI_Entities/damage_UI_entity.lua | 2 + .../UI/UI_Entities/health_UI_entity.lua | 7 +- MHR_Overlay/UI/UI_Entities/rage_UI_entity.lua | 7 +- .../UI/UI_Entities/stamina_UI_entity.lua | 7 +- MHR_Overlay/UI/customization_menu.lua | 245 ++++++++++++++++-- 14 files changed, 437 insertions(+), 63 deletions(-) diff --git a/MHR_Overlay.lua b/MHR_Overlay.lua index c1ede96..db9e341 100644 --- a/MHR_Overlay.lua +++ b/MHR_Overlay.lua @@ -85,7 +85,7 @@ re.on_frame(function() end); re.on_frame(function() - --draw.text("x: " .. tostring(x), 450, 50, 0xFFFFFFFF); + draw.text("x: " .. tostring(x), 450, 50, 0xFFFFFFFF); end); -- #endregion --------------------------RE_IMGUI--------------------------- @@ -106,8 +106,11 @@ end, function() quest_status.update_is_training_area(); if quest_status.is_training_area then - if (config.current_config.large_monster_UI.dynamic.enabled or config.current_config.large_monster_UI.static.enabled) and config.current_config.global_settings.module_visibility.training_area.large_monster_UI then - large_monster_UI.draw(); + local dynamic_enabled = config.current_config.large_monster_UI.dynamic.enabled and config.current_config.global_settings.module_visibility.training_area.large_monster_dynamic_UI; + local static_enabled = config.current_config.large_monster_UI.static.enabled and config.current_config.global_settings.module_visibility.training_area.large_monster_static_UI; + + if dynamic_enabled or static_enabled then + large_monster_UI.draw(dynamic_enabled, static_enabled); end if config.current_config.damage_meter_UI.enabled and config.current_config.global_settings.module_visibility.training_area.damage_meter_UI then @@ -120,8 +123,11 @@ end, function() small_monster_UI.draw(); end - if (config.current_config.large_monster_UI.dynamic.enabled or config.current_config.large_monster_UI.static.enabled) and config.current_config.global_settings.module_visibility.during_quest.large_monster_UI then - large_monster_UI.draw(); + local dynamic_enabled = config.current_config.large_monster_UI.dynamic.enabled and config.current_config.global_settings.module_visibility.during_quest.large_monster_dynamic_UI; + local static_enabled = config.current_config.large_monster_UI.static.enabled and config.current_config.global_settings.module_visibility.during_quest.large_monster_static_UI; + + if dynamic_enabled or static_enabled then + large_monster_UI.draw(dynamic_enabled, static_enabled); end if config.current_config.time_UI.enabled and config.current_config.global_settings.module_visibility.during_quest.time_UI then @@ -132,6 +138,17 @@ end, function() damage_meter_UI.draw(); end elseif quest_status.index > 2 then + if config.current_config.small_monster_UI.enabled and config.current_config.global_settings.module_visibility.quest_summary_screen.small_monster_UI then + small_monster_UI.draw(); + end + + local dynamic_enabled = config.current_config.large_monster_UI.dynamic.enabled and config.current_config.global_settings.module_visibility.quest_summary_screen.large_monster_dynamic_UI; + local static_enabled = config.current_config.large_monster_UI.static.enabled and config.current_config.global_settings.module_visibility.quest_summary_screen.large_monster_static_UI; + + if dynamic_enabled or static_enabled then + large_monster_UI.draw(dynamic_enabled, static_enabled); + end + if config.current_config.time_UI.enabled and config.current_config.global_settings.module_visibility.quest_summary_screen.time_UI then time_UI.draw(); end diff --git a/MHR_Overlay/Misc/config.lua b/MHR_Overlay/Misc/config.lua index 3cf6d67..589dd40 100644 --- a/MHR_Overlay/Misc/config.lua +++ b/MHR_Overlay/Misc/config.lua @@ -9,18 +9,23 @@ config.default_config = { module_visibility = { during_quest = { small_monster_UI = true, - large_monster_UI = true, + large_monster_dynamic_UI = true, + large_monster_static_UI = true, time_UI = true, damage_meter_UI = true }, - quest_summary_Screen = { + quest_summary_screen = { + small_monster_UI = false, + large_monster_dynamic_UI = false, + large_monster_static_UI = true, time_UI = true, damage_meter_UI = true }, training_area = { - large_monster_UI = true, + large_monster_dynamic_UI = true, + large_monster_static_UI = true, damage_meter_UI = true } }, @@ -94,6 +99,8 @@ config.default_config = { }, health = { + visibility = true, + text_label = { visibility = false, text = "HP:", @@ -173,8 +180,10 @@ config.default_config = { }, stamina = { + visibility = true, + text_label = { - visibility = false, + visibility = true, text = "Stamina:", offset = { x = 15, @@ -193,7 +202,7 @@ config.default_config = { }, value_label = { - visibility = false, + visibility = true, text = "%.0f/%.0f", -- current_health/max_health offset = { x = 15, @@ -232,7 +241,7 @@ config.default_config = { }, bar = { - visibility = false, + visibility = true, offset = { x = 10, y = 54 @@ -299,6 +308,8 @@ config.default_config = { }, health = { + visibility = true, + text_label = { visibility = false, text = "HP:", @@ -381,6 +392,8 @@ config.default_config = { }, stamina = { + visibility = true, + text_label = { visibility = true, text = "Stamina:", @@ -459,6 +472,8 @@ config.default_config = { }, rage = { + visibility = true, + text_label = { visibility = true, text = "Rage:", @@ -537,19 +552,29 @@ config.default_config = { }, parts = { + visibility = false, + offset = { x = 0, y = 50 }, - spacing = { x = 0, y = 24, }, + + settings = { + hide_undamaged_parts = true, + }, + + sorting = { + type = "Normal", + reversed_order = false + }, part_name_label = { - visibility = false, + visibility = true, text = "%s", include = { @@ -593,7 +618,7 @@ config.default_config = { }, value_label = { - visibility = false, + visibility = true, text = "%.0f/%.0f", -- current_health/max_health offset = { x = 55, @@ -632,7 +657,7 @@ config.default_config = { }, bar = { - visibility = false, + visibility = true, offset = { x = 10, y = 78 @@ -702,6 +727,8 @@ config.default_config = { }, health = { + visibility = true, + text_label = { visibility = false, text = "HP:", @@ -784,6 +811,8 @@ config.default_config = { }, stamina = { + visibility = true, + text_label = { visibility = true, text = "Stamina:", @@ -862,6 +891,8 @@ config.default_config = { }, rage = { + visibility = true, + text_label = { visibility = true, text = "Rage:", @@ -940,16 +971,28 @@ config.default_config = { }, parts = { + visibility = true, + + + offset = { x = 0, y = 50 }, - spacing = { x = 0, y = 24, }, + + settings = { + hide_undamaged_parts = true, + }, + + sorting = { + type = "Normal", + reversed_order = false + }, part_name_label = { visibility = true, @@ -1111,6 +1154,7 @@ config.default_config = { hide_module_if_total_damage_is_zero = false, hide_player_if_player_damage_is_zero = false, + hide_total_if_total_damage_is_zero = false, total_damage_offset_is_relative = true, highlighted_bar = "Me", diff --git a/MHR_Overlay/Monsters/body_part.lua b/MHR_Overlay/Monsters/body_part.lua index f6b4be3..537b653 100644 --- a/MHR_Overlay/Monsters/body_part.lua +++ b/MHR_Overlay/Monsters/body_part.lua @@ -34,6 +34,7 @@ end function body_part.init_dynamic_UI(part) part.body_part_dynamic_UI = body_part_UI_entity.new( + config.current_config.large_monster_UI.dynamic.parts.visibility, config.current_config.large_monster_UI.dynamic.parts.bar, config.current_config.large_monster_UI.dynamic.parts.part_name_label, config.current_config.large_monster_UI.dynamic.parts.text_label, @@ -44,6 +45,7 @@ end function body_part.init_static_UI(part) part.body_part_static_UI = body_part_UI_entity.new( + config.current_config.large_monster_UI.static.parts.visibility, config.current_config.large_monster_UI.static.parts.bar, config.current_config.large_monster_UI.static.parts.part_name_label, config.current_config.large_monster_UI.static.parts.text_label, diff --git a/MHR_Overlay/Monsters/large_monster.lua b/MHR_Overlay/Monsters/large_monster.lua index 4073d94..e4f7c85 100644 --- a/MHR_Overlay/Monsters/large_monster.lua +++ b/MHR_Overlay/Monsters/large_monster.lua @@ -56,6 +56,7 @@ function large_monster.new(enemy) large_monster.init_static_UI(monster); large_monster.init_dynamic_UI(monster); + if large_monster.list[enemy] == nil then large_monster.list[enemy] = monster; end @@ -123,6 +124,7 @@ function large_monster.init_static_UI(monster) monster.static_name_label = table_helpers.deep_copy(config.current_config.large_monster_UI.static.monster_name_label); monster.health_static_UI = health_UI_entity.new( + config.current_config.large_monster_UI.static.health.visibility, config.current_config.large_monster_UI.static.health.bar, config.current_config.large_monster_UI.static.health.text_label, config.current_config.large_monster_UI.static.health.value_label, @@ -130,6 +132,7 @@ function large_monster.init_static_UI(monster) ); monster.stamina_static_UI = stamina_UI_entity.new( + config.current_config.large_monster_UI.static.stamina.visibility, config.current_config.large_monster_UI.static.stamina.bar, config.current_config.large_monster_UI.static.stamina.text_label, config.current_config.large_monster_UI.static.stamina.value_label, @@ -137,6 +140,7 @@ function large_monster.init_static_UI(monster) ); monster.rage_static_UI = rage_UI_entity.new( + config.current_config.large_monster_UI.static.rage.visibility, config.current_config.large_monster_UI.static.rage.bar, config.current_config.large_monster_UI.static.rage.text_label, config.current_config.large_monster_UI.static.rage.value_label, @@ -152,6 +156,7 @@ function large_monster.init_dynamic_UI(monster) monster.dynamic_name_label = table_helpers.deep_copy(config.current_config.large_monster_UI.dynamic.monster_name_label); monster.health_dynamic_UI = health_UI_entity.new( + config.current_config.large_monster_UI.dynamic.health.visibility, config.current_config.large_monster_UI.dynamic.health.bar, config.current_config.large_monster_UI.dynamic.health.text_label, config.current_config.large_monster_UI.dynamic.health.value_label, @@ -159,6 +164,7 @@ function large_monster.init_dynamic_UI(monster) ); monster.stamina_dynamic_UI = stamina_UI_entity.new( + config.current_config.large_monster_UI.dynamic.stamina.visibility, config.current_config.large_monster_UI.dynamic.stamina.bar, config.current_config.large_monster_UI.dynamic.stamina.text_label, config.current_config.large_monster_UI.dynamic.stamina.value_label, @@ -166,6 +172,7 @@ function large_monster.init_dynamic_UI(monster) ); monster.rage_dynamic_UI = rage_UI_entity.new( + config.current_config.large_monster_UI.dynamic.rage.visibility, config.current_config.large_monster_UI.dynamic.rage.bar, config.current_config.large_monster_UI.dynamic.rage.text_label, config.current_config.large_monster_UI.dynamic.rage.value_label, @@ -414,16 +421,56 @@ function large_monster.draw_dynamic(monster, position_on_screen, opacity_scale) stamina_UI_entity.draw(monster, monster.stamina_dynamic_UI, position_on_screen, opacity_scale); rage_UI_entity.draw(monster, monster.rage_dynamic_UI, position_on_screen, opacity_scale); - local j = 0; + --sort parts here + local displayed_parts = {}; for REpart, part in pairs(monster.parts) do + if config.current_config.large_monster_UI.dynamic.parts.settings.hide_undamaged_parts and part.health == part.max_health and part.break_count == 0 then + goto continue; + end + + table.insert(displayed_parts, part); + ::continue:: + end + + if config.current_config.large_monster_UI.dynamic.parts.sorting.type == "Normal" then + if config.current_config.large_monster_UI.dynamic.parts.sorting.reversed_order then + table.sort(displayed_parts, function(left, right) + return left.id > right.id; + end); + else + table.sort(displayed_parts, function(left, right) + return left.id < right.id; + end); + end + elseif config.current_config.large_monster_UI.dynamic.parts.sorting.type == "Health" then + if config.current_config.large_monster_UI.dynamic.parts.sorting.reversed_order then + table.sort(displayed_parts, function(left, right) + return left.health > right.health; + end); + else + table.sort(displayed_parts, function(left, right) + return left.health < right.health; + end); + end + elseif config.current_config.large_monster_UI.dynamic.parts.sorting.type == "Health Percentage" then + if config.current_config.large_monster_UI.dynamic.parts.sorting.reversed_order then + table.sort(displayed_parts, function(left, right) + return left.health_percentage > right.health_percentage; + end); + else + table.sort(displayed_parts, function(left, right) + return left.health_percentage < right.health_percentage; + end); + end + end + + for j, part in ipairs(displayed_parts) do local part_position_on_screen = { - x = position_on_screen.x + config.current_config.large_monster_UI.dynamic.parts.offset.x + config.current_config.large_monster_UI.dynamic.parts.spacing.x * j, - y = position_on_screen.y + config.current_config.large_monster_UI.dynamic.parts.offset.y + config.current_config.large_monster_UI.dynamic.parts.spacing.y * j; + x = position_on_screen.x + config.current_config.large_monster_UI.dynamic.parts.offset.x + config.current_config.large_monster_UI.dynamic.parts.spacing.x * (j - 1), + y = position_on_screen.y + config.current_config.large_monster_UI.dynamic.parts.offset.y + config.current_config.large_monster_UI.dynamic.parts.spacing.y * (j - 1); } body_part.draw_dynamic(part, part_position_on_screen, opacity_scale); - - j = j + 1; end end @@ -451,16 +498,56 @@ function large_monster.draw_static(monster, position_on_screen, opacity_scale) stamina_UI_entity.draw(monster, monster.stamina_static_UI, position_on_screen, opacity_scale); rage_UI_entity.draw(monster, monster.rage_static_UI, position_on_screen, opacity_scale); - local j = 0; + --sort parts here + local displayed_parts = {}; for REpart, part in pairs(monster.parts) do + if config.current_config.large_monster_UI.static.parts.settings.hide_undamaged_parts and part.health == part.max_health and part.break_count == 0 then + goto continue; + end + + table.insert(displayed_parts, part); + ::continue:: + end + + if config.current_config.large_monster_UI.static.parts.sorting.type == "Normal" then + if config.current_config.large_monster_UI.static.parts.sorting.reversed_order then + table.sort(displayed_parts, function(left, right) + return left.id > right.id; + end); + else + table.sort(displayed_parts, function(left, right) + return left.id < right.id; + end); + end + elseif config.current_config.large_monster_UI.static.parts.sorting.type == "Health" then + if config.current_config.large_monster_UI.static.parts.sorting.reversed_order then + table.sort(displayed_parts, function(left, right) + return left.health > right.health; + end); + else + table.sort(displayed_parts, function(left, right) + return left.health < right.health; + end); + end + elseif config.current_config.large_monster_UI.static.parts.sorting.type == "Health Percentage" then + if config.current_config.large_monster_UI.static.parts.sorting.reversed_order then + table.sort(displayed_parts, function(left, right) + return left.health_percentage > right.health_percentage; + end); + else + table.sort(displayed_parts, function(left, right) + return left.health_percentage < right.health_percentage; + end); + end + end + + for j, part in ipairs(displayed_parts) do local part_position_on_screen = { - x = position_on_screen.x + config.current_config.large_monster_UI.static.parts.offset.x + config.current_config.large_monster_UI.static.parts.spacing.x * j, - y = position_on_screen.y + config.current_config.large_monster_UI.static.parts.offset.y + config.current_config.large_monster_UI.static.parts.spacing.y * j; + x = position_on_screen.x + config.current_config.large_monster_UI.static.parts.offset.x + config.current_config.large_monster_UI.static.parts.spacing.x * (j - 1), + y = position_on_screen.y + config.current_config.large_monster_UI.static.parts.offset.y + config.current_config.large_monster_UI.static.parts.spacing.y * (j - 1); } body_part.draw_static(part, part_position_on_screen, opacity_scale); - - j = j + 1; end end diff --git a/MHR_Overlay/Monsters/small_monster.lua b/MHR_Overlay/Monsters/small_monster.lua index 476cc28..c40259b 100644 --- a/MHR_Overlay/Monsters/small_monster.lua +++ b/MHR_Overlay/Monsters/small_monster.lua @@ -63,6 +63,7 @@ function small_monster.init_UI(monster) monster.name_label = table_helpers.deep_copy(config.current_config.small_monster_UI.monster_name_label); monster.health_UI = health_UI_entity.new( + config.current_config.small_monster_UI.health.visibility, config.current_config.small_monster_UI.health.bar, config.current_config.small_monster_UI.health.text_label, config.current_config.small_monster_UI.health.value_label, @@ -70,6 +71,7 @@ function small_monster.init_UI(monster) ); monster.stamina_UI = stamina_UI_entity.new( + config.current_config.small_monster_UI.stamina.visibility, config.current_config.small_monster_UI.stamina.bar, config.current_config.small_monster_UI.stamina.text_label, config.current_config.small_monster_UI.stamina.value_label, @@ -176,6 +178,7 @@ end function small_monster.draw(monster, position_on_screen, opacity_scale) drawing.draw_label(monster.name_label, position_on_screen, opacity_scale, monster.name); + health_UI_entity.draw(monster, monster.health_UI, position_on_screen, opacity_scale); stamina_UI_entity.draw(monster, monster.stamina_UI, position_on_screen, opacity_scale); end diff --git a/MHR_Overlay/UI/Modules/damage_meter_UI.lua b/MHR_Overlay/UI/Modules/damage_meter_UI.lua index 9d7bb17..055541f 100644 --- a/MHR_Overlay/UI/Modules/damage_meter_UI.lua +++ b/MHR_Overlay/UI/Modules/damage_meter_UI.lua @@ -56,9 +56,13 @@ function damage_meter_UI.draw() myself_hunter_rank = 0; end + x = singletons.lobby_manager:get_field("_myselfIndex"); + if player.list[player.myself_id] == nil then player.list[player.myself_id] = player.new(player.myself_id, myself_player_name, myself_hunter_rank); player.myself = player.list[player.myself_id]; + else + end local quest_players = {}; @@ -87,7 +91,6 @@ function damage_meter_UI.draw() local player_id = player_info:get_field("_memberIndex"); if player_id == nil then - goto continue end @@ -176,6 +179,10 @@ function damage_meter_UI.draw() end -- draw total damage + if config.current_config.damage_meter_UI.settings.hide_total_if_total_damage_is_zero and player.total.display.total_damage == 0 then + return; + end + if not config.current_config.damage_meter_UI.settings.total_damage_offset_is_relative then position_on_screen = screen.calculate_absolute_coordinates(config.current_config.damage_meter_UI.position); end diff --git a/MHR_Overlay/UI/Modules/large_monster_UI.lua b/MHR_Overlay/UI/Modules/large_monster_UI.lua index 77bcfe4..b00b72b 100644 --- a/MHR_Overlay/UI/Modules/large_monster_UI.lua +++ b/MHR_Overlay/UI/Modules/large_monster_UI.lua @@ -11,7 +11,7 @@ local health_UI_entity; local stamina_UI_entity; local rage_UI_entity; -function large_monster_UI.draw() +function large_monster_UI.draw(dynamic_enabled, static_enabled) if singletons.enemy_manager == nil then return; end @@ -39,7 +39,7 @@ function large_monster_UI.draw() table.insert(displayed_monsters, monster); end - if config.current_config.large_monster_UI.dynamic.enabled then + if dynamic_enabled then local i = 0; for _, monster in ipairs(displayed_monsters) do @@ -77,7 +77,7 @@ function large_monster_UI.draw() end end - if config.current_config.large_monster_UI.static.enabled then + if static_enabled then -- sort here if config.current_config.large_monster_UI.static.sorting.type == "Normal" and config.current_config.large_monster_UI.static.sorting.reversed_order then local reversed_monsters = {}; diff --git a/MHR_Overlay/UI/Modules/small_monster_UI.lua b/MHR_Overlay/UI/Modules/small_monster_UI.lua index 4ab524a..8e35b69 100644 --- a/MHR_Overlay/UI/Modules/small_monster_UI.lua +++ b/MHR_Overlay/UI/Modules/small_monster_UI.lua @@ -110,13 +110,12 @@ function small_monster_UI.draw() if distance > config.current_config.small_monster_UI.dynamic_positioning.max_distance then goto continue; end - + if config.current_config.small_monster_UI.dynamic_positioning.opacity_falloff then opacity_scale = 1 - (distance / config.current_config.small_monster_UI.dynamic_positioning.max_distance); end end - small_monster.draw(monster, position_on_screen, opacity_scale); i = i + 1; diff --git a/MHR_Overlay/UI/UI_Entities/body_part_UI_entity.lua b/MHR_Overlay/UI/UI_Entities/body_part_UI_entity.lua index f71a721..82abf2f 100644 --- a/MHR_Overlay/UI/UI_Entities/body_part_UI_entity.lua +++ b/MHR_Overlay/UI/UI_Entities/body_part_UI_entity.lua @@ -3,9 +3,10 @@ local config; local table_helpers; local drawing; -function body_part_UI_entity.new(bar, name_label, text_label, value_label, percentage_label) +function body_part_UI_entity.new(visibility, bar, name_label, text_label, value_label, percentage_label) local entity = {}; + entity.visibility = visibility; entity.bar = table_helpers.deep_copy(bar); entity.name_label = table_helpers.deep_copy(name_label); entity.text_label = table_helpers.deep_copy(text_label); @@ -16,6 +17,9 @@ function body_part_UI_entity.new(bar, name_label, text_label, value_label, perce end function body_part_UI_entity.draw_dynamic(part, position_on_screen, opacity_scale) + if not part.body_part_dynamic_UI.visibility then + return; + end local part_name = ""; if config.current_config.large_monster_UI.dynamic.parts.part_name_label.include.part_name then @@ -34,6 +38,9 @@ function body_part_UI_entity.draw_dynamic(part, position_on_screen, opacity_scal end function body_part_UI_entity.draw_static(part, position_on_screen, opacity_scale) + if not part.body_part_static_UI.visibility then + return; + end local part_name = ""; if config.current_config.large_monster_UI.static.parts.part_name_label.include.part_name then diff --git a/MHR_Overlay/UI/UI_Entities/damage_UI_entity.lua b/MHR_Overlay/UI/UI_Entities/damage_UI_entity.lua index df99709..4856dbb 100644 --- a/MHR_Overlay/UI/UI_Entities/damage_UI_entity.lua +++ b/MHR_Overlay/UI/UI_Entities/damage_UI_entity.lua @@ -7,6 +7,7 @@ local player; function damage_UI_entity.new(bar, highlighted_bar, player_name_label, value_label, percentage_label) local entity = {}; + --entity.visibility = visibility; entity.bar = table_helpers.deep_copy(bar); entity.highlighted_bar = table_helpers.deep_copy(highlighted_bar); entity.player_name_label = table_helpers.deep_copy(player_name_label); @@ -17,6 +18,7 @@ function damage_UI_entity.new(bar, highlighted_bar, player_name_label, value_lab end function damage_UI_entity.draw(_player, position_on_screen, opacity_scale, top_damage) + local player_include = config.current_config.damage_meter_UI.player_name_label.include.others; if _player.id == _player.myself_id then player_include = config.current_config.damage_meter_UI.player_name_label.include.myself; diff --git a/MHR_Overlay/UI/UI_Entities/health_UI_entity.lua b/MHR_Overlay/UI/UI_Entities/health_UI_entity.lua index 8af44bf..0351c99 100644 --- a/MHR_Overlay/UI/UI_Entities/health_UI_entity.lua +++ b/MHR_Overlay/UI/UI_Entities/health_UI_entity.lua @@ -2,9 +2,10 @@ local health_UI_entity = {}; local table_helpers; local drawing; -function health_UI_entity.new(bar, text_label, value_label, percentage_label) +function health_UI_entity.new(visibility, bar, text_label, value_label, percentage_label) local entity = {}; + entity.visibility = visibility; entity.bar = table_helpers.deep_copy(bar); entity.text_label = table_helpers.deep_copy(text_label); entity.value_label = table_helpers.deep_copy(value_label); @@ -14,6 +15,10 @@ function health_UI_entity.new(bar, text_label, value_label, percentage_label) end function health_UI_entity.draw(monster, health_UI, position_on_screen, opacity_scale) + if not health_UI.visibility then + x = health_UI.visibility + return; + end drawing.draw_bar(health_UI.bar, position_on_screen, opacity_scale, monster.health_percentage); diff --git a/MHR_Overlay/UI/UI_Entities/rage_UI_entity.lua b/MHR_Overlay/UI/UI_Entities/rage_UI_entity.lua index a638e2c..d805f2b 100644 --- a/MHR_Overlay/UI/UI_Entities/rage_UI_entity.lua +++ b/MHR_Overlay/UI/UI_Entities/rage_UI_entity.lua @@ -2,9 +2,10 @@ local rage_UI_entity = {}; local table_helpers; local drawing; -function rage_UI_entity.new(bar, text_label, value_label, percentage_label) +function rage_UI_entity.new(visibility, bar, text_label, value_label, percentage_label) local entity = {}; + entity.visibility = visibility; entity.bar = table_helpers.deep_copy(bar); entity.text_label = table_helpers.deep_copy(text_label); entity.value_label = table_helpers.deep_copy(value_label); @@ -16,6 +17,10 @@ function rage_UI_entity.new(bar, text_label, value_label, percentage_label) end function rage_UI_entity.draw(monster, rage_UI, position_on_screen, opacity_scale) + if not rage_UI.visibility then + return; + end + if monster.is_in_rage then drawing.draw_bar(rage_UI.bar, position_on_screen, opacity_scale, monster.rage_timer_percentage); diff --git a/MHR_Overlay/UI/UI_Entities/stamina_UI_entity.lua b/MHR_Overlay/UI/UI_Entities/stamina_UI_entity.lua index fe470e0..7fd0d96 100644 --- a/MHR_Overlay/UI/UI_Entities/stamina_UI_entity.lua +++ b/MHR_Overlay/UI/UI_Entities/stamina_UI_entity.lua @@ -2,9 +2,10 @@ local stamina_UI_entity = {}; local table_helpers; local drawing; -function stamina_UI_entity.new(bar, text_label, value_label, percentage_label) +function stamina_UI_entity.new(visibility, bar, text_label, value_label, percentage_label) local entity = {}; + entity.visibility = visibility; entity.bar = table_helpers.deep_copy(bar); entity.text_label = table_helpers.deep_copy(text_label); entity.value_label = table_helpers.deep_copy(value_label); @@ -14,6 +15,10 @@ function stamina_UI_entity.new(bar, text_label, value_label, percentage_label) end function stamina_UI_entity.draw(monster, stamina_UI, position_on_screen, opacity_scale) + if not stamina_UI.visibility then + return; + end + drawing.draw_bar(stamina_UI.bar, position_on_screen, opacity_scale, monster.stamina_percentage); drawing.draw_label(stamina_UI.text_label, position_on_screen, opacity_scale); diff --git a/MHR_Overlay/UI/customization_menu.lua b/MHR_Overlay/UI/customization_menu.lua index dc2cac9..21815fb 100644 --- a/MHR_Overlay/UI/customization_menu.lua +++ b/MHR_Overlay/UI/customization_menu.lua @@ -15,7 +15,8 @@ customization_menu.color_picker_flags = 327680; customization_menu.orientation_types = {"Horizontal", "Vertical"}; customization_menu.anchor_types = {"Top-left", "Top-Right", "Bottom-Left", "Bottom-Right"}; -customization_menu.monster_UI_sorting_types = {"Normal", "Health", "Health Percentage"}; +customization_menu.monster_UI_sorting_types = {"Normal", "Health", "Health Percentage", "Distance"}; +customization_menu.large_monster_UI_parts_sorting_types = {"Normal", "Health", "Health Percentage"}; customization_menu.damage_meter_UI_highlighted_bar_types = {"Me", "Top Damage", "None"}; customization_menu.damage_meter_UI_damage_bar_relative_types = {"Total Damage", "Top Damage"}; @@ -34,8 +35,14 @@ customization_menu.fonts = {"Arial", "Arial Black", "Bahnschrift", "Calibri", "C "Segoe UI Symbol", "SimSun", "Sitka", "Sylfaen", "Symbol", "Tahoma", "Times New Roman", "Trebuchet MS", "Verdana", "Webdings", "Wingdings", "Yu Gothic"}; -customization_menu.monster_UI_orientation_index = 0; -customization_menu.monster_UI_sorting_type_index = 0; +customization_menu.small_monster_UI_orientation_index = 0; +customization_menu.small_monster_UI_sorting_type_index = 0; + +customization_menu.large_monster_UI_orientation_index = 0; +customization_menu.large_monster_UI_sorting_type_index = 0; + +customization_menu.large_monster_dynamic_UI_parts_sorting_type_index = 0; +customization_menu.large_monster_static_UI_parts_sorting_type_index = 0; customization_menu.damage_meter_UI_orientation_index = 0; customization_menu.damage_meter_UI_sorting_type_index = 0; @@ -43,15 +50,26 @@ customization_menu.damage_meter_UI_highlighted_bar_index = 0; customization_menu.damage_meter_UI_damage_bar_relative_index = 0; customization_menu.damage_meter_UI_my_damage_bar_location_index = 0; +customization_menu.small_monster_UI_anchor_index = 0; +customization_menu.large_monster_UI_anchor_index = 0; +customization_menu.time_UI_anchor_index = 0; +customization_menu.damage_meter_UI_anchor_index = 0; + customization_menu.selected_font_index = 9; function customization_menu.init() - customization_menu.monster_UI_orientation_index = table_helpers.find_index(customization_menu.orientation_types, + customization_menu.large_monster_UI_orientation_index = table_helpers.find_index(customization_menu.orientation_types, config.current_config.large_monster_UI.static.settings.orientation, false); - customization_menu.monster_UI_sorting_type_index = table_helpers.find_index( + customization_menu.large_monster_UI_sorting_type_index = table_helpers.find_index( customization_menu.monster_UI_sorting_types, config.current_config.large_monster_UI.static.sorting.type, false); + customization_menu.large_monster_dynamic_UI_parts_sorting_type_index = table_helpers.find_index( + customization_menu.large_monster_UI_parts_sorting_types, config.current_config.large_monster_UI.dynamic.parts.sorting.type, false); + + customization_menu.large_monster_static_UI_parts_sorting_type_index = table_helpers.find_index( + customization_menu.large_monster_UI_parts_sorting_types, config.current_config.large_monster_UI.static.parts.sorting.type, false); + customization_menu.damage_meter_UI_orientation_index = table_helpers.find_index(customization_menu.orientation_types, config.current_config.damage_meter_UI.settings.orientation, false); @@ -72,6 +90,18 @@ function customization_menu.init() customization_menu.selected_font_index = table_helpers.find_index(customization_menu.fonts, config.current_config.global_settings.font.family, false); + + customization_menu.small_monster_UI_anchor_index = table_helpers.find_index(customization_menu.anchor_types, + config.current_config.small_monster_UI.static_position.anchor, false); + + customization_menu.large_monster_UI_anchor_index = table_helpers.find_index(customization_menu.anchor_types, + config.current_config.large_monster_UI.static.position.anchor, false); + + customization_menu.time_UI_anchor_index = table_helpers.find_index(customization_menu.anchor_types, + config.current_config.time_UI.position.anchor, false); + + customization_menu.damage_meter_UI_anchor_index = table_helpers.find_index(customization_menu.anchor_types, + config.current_config.damage_meter_UI.position.anchor, false); end function customization_menu.draw() @@ -91,16 +121,16 @@ function customization_menu.draw() changed, config.current_config.small_monster_UI.enabled = imgui.checkbox("Small Monster UI", config.current_config .small_monster_UI.enabled); config_changed = config_changed or changed; + + changed, config.current_config.large_monster_UI.dynamic.enabled = + imgui.checkbox("Large Monster Dynamic UI", config.current_config.large_monster_UI.dynamic.enabled); + config_changed = config_changed or changed; imgui.same_line(); changed, config.current_config.large_monster_UI.static.enabled = imgui.checkbox("Large Monster Static UI", config.current_config.large_monster_UI.static.enabled); config_changed = config_changed or changed; - changed, config.current_config.large_monster_UI.static.enabled = - imgui.checkbox("Large Monster Dynamic UI", config.current_config.large_monster_UI.static.enabled); - config_changed = config_changed or changed; - changed, config.current_config.time_UI.enabled = imgui.checkbox("Time UI", config.current_config.time_UI.enabled); config_changed = config_changed or changed; imgui.same_line(); @@ -119,10 +149,14 @@ function customization_menu.draw() changed, config.current_config.global_settings.module_visibility.during_quest.small_monster_UI = imgui.checkbox( "Small Monster UI", config.current_config.global_settings.module_visibility.during_quest.small_monster_UI); config_changed = config_changed or changed; + + changed, config.current_config.global_settings.module_visibility.during_quest.large_monster_dynamic_UI = imgui.checkbox( + "Large Monster Dynamic UI", config.current_config.global_settings.module_visibility.during_quest.large_monster_dynamic_UI); + config_changed = config_changed or changed; imgui.same_line(); - changed, config.current_config.global_settings.module_visibility.during_quest.large_monster_UI = imgui.checkbox( - "Large Monster UI", config.current_config.global_settings.module_visibility.during_quest.large_monster_UI); + changed, config.current_config.global_settings.module_visibility.during_quest.large_monster_static_UI = imgui.checkbox( + "Large Monster Static UI", config.current_config.global_settings.module_visibility.during_quest.large_monster_static_UI); config_changed = config_changed or changed; changed, config.current_config.global_settings.module_visibility.during_quest.time_UI = imgui.checkbox("Time UI", @@ -138,25 +172,38 @@ function customization_menu.draw() end if imgui.tree_node("Quest Summary Screen") then - changed, config.current_config.global_settings.module_visibility.quest_summary_screen.time_UI = imgui.checkbox( - "Time UI", config.current_config.global_settings.module_visibility.quest_summary_screen.time_UI); + changed, config.current_config.global_settings.module_visibility.quest_summary_screen.small_monster_UI = imgui.checkbox( + "Small Monster UI", config.current_config.global_settings.module_visibility.quest_summary_screen.small_monster_UI); + config_changed = config_changed or changed; + + changed, config.current_config.global_settings.module_visibility.quest_summary_screen.large_monster_dynamic_UI = imgui.checkbox( + "Large Monster Dynamic UI", config.current_config.global_settings.module_visibility.quest_summary_screen.large_monster_dynamic_UI); config_changed = config_changed or changed; imgui.same_line(); - changed, config.current_config.global_settings.module_visibility.quest_summary_screen.damage_meter_UI = - imgui.checkbox("Damage Meter UI", - config.current_config.global_settings.module_visibility.quest_summary_screen.damage_meter_UI); + changed, config.current_config.global_settings.module_visibility.quest_summary_screen.large_monster_static_UI = imgui.checkbox("Large Monster Static UI", config.current_config.global_settings.module_visibility.quest_summary_screen.large_monster_static_UI); + config_changed = config_changed or changed; + + changed, config.current_config.global_settings.module_visibility.quest_summary_screen.time_UI = imgui.checkbox("Time UI", config.current_config.global_settings.module_visibility.quest_summary_screen.time_UI); + config_changed = config_changed or changed; + imgui.same_line(); + + changed, config.current_config.global_settings.module_visibility.quest_summary_screen.damage_meter_UI = imgui.checkbox("Damage Meter UI", config.current_config.global_settings.module_visibility.quest_summary_screen.damage_meter_UI); config_changed = config_changed or changed; imgui.tree_pop(); end if imgui.tree_node("Training Area") then - changed, config.current_config.global_settings.module_visibility.training_area.large_monster_UI = imgui.checkbox( - "Large Monster UI", config.current_config.global_settings.module_visibility.training_area.large_monster_UI); + changed, config.current_config.global_settings.module_visibility.training_area.large_monster_dynamic_UI = imgui.checkbox( + "Large Monster Dynamic UI", config.current_config.global_settings.module_visibility.training_area.large_monster_dynamic_UI); config_changed = config_changed or changed; imgui.same_line(); + changed, config.current_config.global_settings.module_visibility.training_area.large_monster_static_UI = imgui.checkbox( + "Large Monster Static UI", config.current_config.global_settings.module_visibility.training_area.large_monster_static_UI); + config_changed = config_changed or changed; + changed, config.current_config.global_settings.module_visibility.training_area.damage_meter_UI = imgui.checkbox( "Damage Meter UI", config.current_config.global_settings.module_visibility.training_area.damage_meter_UI); config_changed = config_changed or changed; @@ -202,12 +249,12 @@ function customization_menu.draw() config_changed = config_changed or changed; if imgui.tree_node("Settings") then - changed, customization_menu.monster_UI_orientation_index = imgui.combo("Static Orientation", - customization_menu.monster_UI_orientation_index, customization_menu.orientation_types); + changed, customization_menu.small_monster_UI_orientation_index = imgui.combo("Static Orientation", + customization_menu.small_monster_UI_orientation_index, customization_menu.orientation_types); config_changed = config_changed or changed; if changed then config.current_config.small_monster_UI.settings.orientation = - customization_menu.orientation_types[customization_menu.monster_UI_orientation_index]; + customization_menu.orientation_types[customization_menu.small_monster_UI_orientation_index]; end imgui.tree_pop(); @@ -269,6 +316,14 @@ function customization_menu.draw() imgui.drag_float("Y", config.current_config.small_monster_UI.static_position.y, 0.1, 0, screen.height, "%.1f"); config_changed = config_changed or changed; + changed, customization_menu.small_monster_UI_anchor_index = imgui.combo("Anchor", + customization_menu.small_monster_UI_anchor_index, customization_menu.anchor_types); + config_changed = config_changed or changed; + if changed then + config.current_config.small_monster_UI.static_position.anchor = + customization_menu.anchor_types[customization_menu.small_monster_UI_anchor_index]; + end + imgui.tree_pop(); end @@ -287,12 +342,12 @@ function customization_menu.draw() end if imgui.tree_node("Static Sorting") then - changed, customization_menu.monster_UI_sort_type_index = imgui.combo("Type", - customization_menu.monster_UI_sort_type_index, customization_menu.monster_UI_sorting_types); + changed, customization_menu.small_monster_UI_sorting_type_index = imgui.combo("Type", + customization_menu.small_monster_UI_sorting_type_index, customization_menu.monster_UI_sorting_types); config_changed = config_changed or changed; if changed then config.current_config.small_monster_UI.static_sorting.type = - customization_menu.monster_UI_sorting_types[customization_menu.monster_UI_sort_type_index]; + customization_menu.monster_UI_sorting_types[customization_menu.small_monster_UI_sorting_type_index]; end changed, config.current_config.small_monster_UI.static_sorting.reversed_order = @@ -367,6 +422,11 @@ function customization_menu.draw() end if imgui.tree_node("Health") then + changed, config.current_config.small_monster_UI.health.visibility = imgui.checkbox("Visible", + config.current_config.small_monster_UI.health.visibility); + config_changed = config_changed or changed; + small_monster_UI_changed = small_monster_UI_changed or changed; + if imgui.tree_node("Text Label") then changed, config.current_config.small_monster_UI.health.text_label.visibility = imgui.checkbox("Visible", config.current_config.small_monster_UI.health.text_label.visibility); @@ -629,6 +689,11 @@ function customization_menu.draw() end if imgui.tree_node("Stamina (Pointless: small monsters don't get tired)") then + changed, config.current_config.small_monster_UI.stamina.visibility = imgui.checkbox("Visible", + config.current_config.small_monster_UI.stamina.visibility); + config_changed = config_changed or changed; + small_monster_UI_changed = small_monster_UI_changed or changed; + if imgui.tree_node("Text Label") then changed, config.current_config.small_monster_UI.stamina.text_label.visibility = imgui.checkbox("Visible", config.current_config.small_monster_UI.stamina.text_label.visibility); @@ -1047,6 +1112,11 @@ function customization_menu.draw() end if imgui.tree_node("Health") then + changed, config.current_config.large_monster_UI.dynamic.health.visibility = imgui.checkbox("Visible", + config.current_config.large_monster_UI.dynamic.health.visibility); + config_changed = config_changed or changed; + large_monster_dynamic_UI_changed = large_monster_dynamic_UI_changed or changed; + if imgui.tree_node("Text Label") then changed, config.current_config.large_monster_UI.dynamic.health.text_label.visibility = imgui.checkbox("Visible", config.current_config.large_monster_UI.dynamic.health.text_label.visibility); @@ -1330,6 +1400,11 @@ function customization_menu.draw() end if imgui.tree_node("Stamina") then + changed, config.current_config.large_monster_UI.dynamic.stamina.visibility = imgui.checkbox("Visible", + config.current_config.large_monster_UI.dynamic.stamina.visibility); + config_changed = config_changed or changed; + large_monster_dynamic_UI_changed = large_monster_dynamic_UI_changed or changed; + if imgui.tree_node("Text Label") then changed, config.current_config.large_monster_UI.dynamic.stamina.text_label.visibility = imgui.checkbox("Visible", config.current_config.large_monster_UI.dynamic.stamina.text_label.visibility); @@ -1596,6 +1671,11 @@ function customization_menu.draw() end if imgui.tree_node("Rage") then + changed, config.current_config.large_monster_UI.dynamic.rage.visibility = imgui.checkbox("Visible", + config.current_config.large_monster_UI.dynamic.rage.visibility); + config_changed = config_changed or changed; + large_monster_dynamic_UI_changed = large_monster_dynamic_UI_changed or changed; + if imgui.tree_node("Text Label") then changed, config.current_config.large_monster_UI.dynamic.rage.text_label.visibility = imgui.checkbox("Visible", config.current_config.large_monster_UI.dynamic.rage.text_label.visibility); @@ -1860,6 +1940,11 @@ function customization_menu.draw() end if imgui.tree_node("Body Parts") then + changed, config.current_config.large_monster_UI.dynamic.parts.visibility = imgui.checkbox( + "Visible", config.current_config.large_monster_UI.dynamic.parts.visibility); + config_changed = config_changed or changed; + large_monster_dynamic_UI_changed = large_monster_dynamic_UI_changed or changed; + if imgui.tree_node("Offset") then changed, config.current_config.large_monster_UI.dynamic.parts.offset.x = imgui.drag_float("X", config.current_config.large_monster_UI.dynamic.parts.offset.x, 0.1, -screen.width, screen.width, "%.1f"); @@ -1888,6 +1973,33 @@ function customization_menu.draw() imgui.tree_pop(); end + if imgui.tree_node("Settings") then + changed, config.current_config.large_monster_UI.dynamic.parts.settings.hide_undamaged_parts = + imgui.checkbox("Hide Undamaged Parts", config.current_config.large_monster_UI.dynamic.parts.settings.hide_undamaged_parts); + config_changed = config_changed or changed; + large_monster_dynamic_UI_changed = large_monster_dynamic_UI_changed or changed; + + imgui.tree_pop(); + end + + if imgui.tree_node("Sorting") then + changed, customization_menu.large_monster_dynamic_UI_parts_sorting_type_index = imgui.combo("Type", + customization_menu.large_monster_dynamic_UI_parts_sorting_type_index, customization_menu.large_monster_UI_parts_sorting_types); + config_changed = config_changed or changed; + large_monster_dynamic_UI_changed = large_monster_dynamic_UI_changed or changed; + if changed then + config.current_config.large_monster_UI.dynamic.parts.sorting.type = + customization_menu.large_monster_UI_parts_sorting_types[customization_menu.large_monster_dynamic_UI_parts_sorting_type_index]; + end + + changed, config.current_config.large_monster_UI.dynamic.parts.sorting.reversed_order = + imgui.checkbox("Reversed Order", config.current_config.large_monster_UI.dynamic.parts.sorting.reversed_order); + config_changed = config_changed or changed; + large_monster_dynamic_UI_changed = large_monster_dynamic_UI_changed or changed; + + imgui.tree_pop(); + end + if imgui.tree_node("Part Name Label") then changed, config.current_config.large_monster_UI.dynamic.parts.part_name_label.visibility = imgui.checkbox( "Visible", config.current_config.large_monster_UI.dynamic.parts.part_name_label.visibility); @@ -2239,6 +2351,7 @@ function customization_menu.draw() end end + imgui.tree_pop(); end if imgui.tree_node("Statically Positioned") then @@ -2251,13 +2364,13 @@ function customization_menu.draw() if imgui.tree_node("Settings") then - changed, customization_menu.monster_UI_orientation_index = imgui.combo("Orientation", - customization_menu.monster_UI_orientation_index, customization_menu.orientation_types); + changed, customization_menu.large_monster_UI_orientation_index = imgui.combo("Orientation", + customization_menu.large_monster_UI_orientation_index, customization_menu.orientation_types); config_changed = config_changed or changed; large_monster_static_UI_changed = large_monster_static_UI_changed or changed; if changed then config.current_config.large_monster_UI.static.settings.orientation = - customization_menu.orientation_types[customization_menu.monster_UI_orientation_index]; + customization_menu.orientation_types[customization_menu.large_monster_UI_orientation_index]; end imgui.tree_pop(); @@ -2274,6 +2387,14 @@ function customization_menu.draw() config_changed = config_changed or changed; large_monster_static_UI_changed = large_monster_static_UI_changed or changed; + changed, customization_menu.large_monster_UI_anchor_index = imgui.combo("Anchor", + customization_menu.large_monster_UI_anchor_index, customization_menu.anchor_types); + config_changed = config_changed or changed; + if changed then + config.current_config.large_monster_UI.static.position.anchor = + customization_menu.anchor_types[customization_menu.large_monster_UI_anchor_index]; + end + imgui.tree_pop(); end @@ -2403,6 +2524,11 @@ function customization_menu.draw() end if imgui.tree_node("Health") then + changed, config.current_config.large_monster_UI.static.health.visibility = imgui.checkbox("Visible", + config.current_config.large_monster_UI.static.health.visibility); + config_changed = config_changed or changed; + large_monster_static_UI_changed = large_monster_static_UI_changed or changed; + if imgui.tree_node("Text Label") then changed, config.current_config.large_monster_UI.static.health.text_label.visibility = imgui.checkbox("Visible", config.current_config.large_monster_UI.static.health.text_label.visibility); @@ -2686,6 +2812,11 @@ function customization_menu.draw() end if imgui.tree_node("Stamina") then + changed, config.current_config.large_monster_UI.static.stamina.visibility = imgui.checkbox("Visible", + config.current_config.large_monster_UI.static.stamina.visibility); + config_changed = config_changed or changed; + large_monster_static_UI_changed = large_monster_static_UI_changed or changed; + if imgui.tree_node("Text Label") then changed, config.current_config.large_monster_UI.static.stamina.text_label.visibility = imgui.checkbox("Visible", config.current_config.large_monster_UI.static.stamina.text_label.visibility); @@ -2951,6 +3082,11 @@ function customization_menu.draw() end if imgui.tree_node("Rage") then + changed, config.current_config.large_monster_UI.static.rage.visibility = imgui.checkbox("Visible", + config.current_config.large_monster_UI.static.rage.visibility); + config_changed = config_changed or changed; + large_monster_static_UI_changed = large_monster_static_UI_changed or changed; + if imgui.tree_node("Text Label") then changed, config.current_config.large_monster_UI.static.rage.text_label.visibility = imgui.checkbox("Visible", config.current_config.large_monster_UI.static.rage.text_label.visibility); @@ -3214,6 +3350,11 @@ function customization_menu.draw() end if imgui.tree_node("Body Parts") then + changed, config.current_config.large_monster_UI.static.parts.visibility = imgui.checkbox("Visible", + config.current_config.large_monster_UI.static.parts.visibility); + config_changed = config_changed or changed; + large_monster_static_UI_changed = large_monster_static_UI_changed or changed; + if imgui.tree_node("Offset") then changed, config.current_config.large_monster_UI.static.parts.offset.x = imgui.drag_float("X", config.current_config.large_monster_UI.static.parts.offset.x, 0.1, -screen.width, screen.width, "%.1f"); @@ -3242,6 +3383,33 @@ function customization_menu.draw() imgui.tree_pop(); end + if imgui.tree_node("Settings") then + changed, config.current_config.large_monster_UI.static.parts.settings.hide_undamaged_parts = + imgui.checkbox("Hide Undamaged Parts", config.current_config.large_monster_UI.static.parts.settings.hide_undamaged_parts); + config_changed = config_changed or changed; + large_monster_static_UI_changed = large_monster_static_UI_changed or changed; + + imgui.tree_pop(); + end + + if imgui.tree_node("Sorting") then + changed, customization_menu.large_monster_static_UI_parts_sorting_type_index = imgui.combo("Type", + customization_menu.large_monster_static_UI_parts_sorting_type_index, customization_menu.large_monster_UI_parts_sorting_types); + config_changed = config_changed or changed; + large_monster_static_UI_changed = large_monster_static_UI_changed or changed; + if changed then + config.current_config.large_monster_UI.static.parts.sorting.type = + customization_menu.large_monster_UI_parts_sorting_types[customization_menu.large_monster_static_UI_parts_sorting_type_index]; + end + + changed, config.current_config.large_monster_UI.static.parts.sorting.reversed_order = + imgui.checkbox("Reversed Order", config.current_config.large_monster_UI.static.parts.sorting.reversed_order); + config_changed = config_changed or changed; + large_monster_static_UI_changed = large_monster_static_UI_changed or changed; + + imgui.tree_pop(); + end + if imgui.tree_node("Part Name Label") then changed, config.current_config.large_monster_UI.static.parts.part_name_label.visibility = imgui.checkbox("Visible", config.current_config.large_monster_UI.static.parts.part_name_label.visibility); @@ -3591,6 +3759,7 @@ function customization_menu.draw() end end + imgui.tree_pop(); end imgui.tree_pop(); @@ -3609,6 +3778,14 @@ function customization_menu.draw() 0.1, 0, screen.height, "%.1f"); config_changed = config_changed or changed; + changed, customization_menu.time_UI_anchor_index = imgui.combo("Anchor", + customization_menu.time_UI_anchor_index, customization_menu.anchor_types); + config_changed = config_changed or changed; + if changed then + config.current_config.time_UI.position.anchor = + customization_menu.anchor_types[customization_menu.time_UI_anchor_index]; + end + imgui.tree_pop(); end @@ -3688,6 +3865,12 @@ function customization_menu.draw() config.current_config.damage_meter_UI.settings.hide_player_if_player_damage_is_zero); config_changed = config_changed or changed; + changed, config.current_config.damage_meter_UI.settings.hide_total_if_total_damage_is_zero = imgui.checkbox( + "Hide Total if Total Damage is 0", + config.current_config.damage_meter_UI.settings.hide_total_if_total_damage_is_zero); + config_changed = config_changed or changed; + + changed, config.current_config.damage_meter_UI.settings.total_damage_offset_is_relative = imgui.checkbox( "Total Damage Offset is Relative", config.current_config.damage_meter_UI.settings.total_damage_offset_is_relative); config_changed = config_changed or changed; @@ -3815,6 +3998,14 @@ function customization_menu.draw() imgui.drag_float("Y", config.current_config.damage_meter_UI.position.y, 0.1, 0, screen.height, "%.1f"); config_changed = config_changed or changed; + changed, customization_menu.damage_meter_UI_anchor_index = imgui.combo("Anchor", + customization_menu.damage_meter_UI_anchor_index, customization_menu.anchor_types); + config_changed = config_changed or changed; + if changed then + config.current_config.damage_meter_UI.position.anchor = + customization_menu.anchor_types[customization_menu.damage_meter_UI_anchor_index]; + end + imgui.tree_pop(); end