This commit is contained in:
GreenComfyTea
2022-02-07 18:21:24 +02:00
parent 9298c94b1d
commit 4e045be5eb
14 changed files with 437 additions and 63 deletions

View File

@@ -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

View File

@@ -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",

View File

@@ -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,

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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 = {};

View File

@@ -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;

View File

@@ -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

View File

@@ -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;

View File

@@ -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);

View File

@@ -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);

View File

@@ -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);

View File

@@ -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