9 Commits

Author SHA1 Message Date
GreenComfyTea
7ad40bbb89 Add Bar Fill Direction 2023-05-26 13:18:46 +03:00
GreenComfyTea
e2354eedcc Move combo types into their respective UI elements 2023-05-26 13:07:40 +03:00
GreenComfyTea
20dfde17d4 Fix part names not changing localization 2023-05-26 12:15:19 +03:00
GreenComfyTea
72ca959581 Formatting 2023-05-25 12:32:46 +03:00
GreenComfyTea
cd2aa12d3c Add Proper Unicode Glyph Ranges for Each Language 2023-05-25 12:18:34 +03:00
GreenComfyTea
865512f8d6 Fix Chaotic Gore Magala Wingclaws 2023-04-25 17:02:43 +03:00
GreenComfyTea
ecd150eb4d Make debug.lua a separate script 2023-04-21 13:27:34 +03:00
GreenComfyTea
585860666f Merge branch 'main' of https://github.com/GreenComfyTea/MHR-Overlay 2023-04-21 13:16:14 +03:00
GreenComfyTea
e6556e8d9b Check for debug.lua presence before requiring 2023-04-21 13:16:13 +03:00
19 changed files with 824 additions and 289 deletions

View File

@@ -30,8 +30,6 @@ local os = os;
local ValueType = ValueType; local ValueType = ValueType;
local package = package; local package = package;
local debug = require("MHR_Overlay.Misc.debug");
local keyboard = require("MHR_Overlay.Game_Handler.keyboard"); local keyboard = require("MHR_Overlay.Game_Handler.keyboard");
local quest_status = require("MHR_Overlay.Game_Handler.quest_status"); local quest_status = require("MHR_Overlay.Game_Handler.quest_status");
local screen = require("MHR_Overlay.Game_Handler.screen"); local screen = require("MHR_Overlay.Game_Handler.screen");
@@ -88,15 +86,10 @@ local body_parts_customization = require("MHR_Overlay.UI.Customizations.body_par
local ailments_customization = require("MHR_Overlay.UI.Customizations.ailments_customization"); local ailments_customization = require("MHR_Overlay.UI.Customizations.ailments_customization");
local ailment_buildups_customization = require("MHR_Overlay.UI.Customizations.ailment_buildups_customization"); local ailment_buildups_customization = require("MHR_Overlay.UI.Customizations.ailment_buildups_customization");
local module_visibility_customization = require("MHR_Overlay.UI.Customizations.module_visibility_customization"); local module_visibility_customization = require("MHR_Overlay.UI.Customizations.module_visibility_customization");
local large_monster_UI_customization = require("MHR_Overlay.UI.Customizations.large_monster_UI_customization"); local large_monster_UI_customization = require("MHR_Overlay.UI.Customizations.large_monster_UI_customization");
local drawing = require("MHR_Overlay.UI.drawing"); local drawing = require("MHR_Overlay.UI.drawing");
if debug ~= nil and debug.enabled then
xy = "";
end
------------------------INIT MODULES------------------------- ------------------------INIT MODULES-------------------------
-- #region -- #region
screen.init_module(); screen.init_module();
@@ -135,7 +128,6 @@ small_monster.init_module();
ailment_hook.init_module(); ailment_hook.init_module();
ailment_buildup.init_module(); ailment_buildup.init_module();
customization_menu.init_module();
label_customization.init_module(); label_customization.init_module();
bar_customization.init_module(); bar_customization.init_module();
line_customization.init_module(); line_customization.init_module();
@@ -150,6 +142,7 @@ body_parts_customization.init_module();
ailments_customization.init_module(); ailments_customization.init_module();
ailment_buildups_customization.init_module(); ailment_buildups_customization.init_module();
module_visibility_customization.init_module(); module_visibility_customization.init_module();
customization_menu.init_module();
drawing.init_module(); drawing.init_module();
@@ -337,33 +330,6 @@ end);
-- #endregion -- #endregion
----------------------------D2D------------------------------ ----------------------------D2D------------------------------
if debug ~= nil and debug.enabled then
if d2d ~= nil then
d2d.register(function()
end, function()
if not config.current_config.global_settings.renderer.use_d2d_if_available then
return;
end
if xy ~= "" then
d2d.text(drawing.font, "xy:\n" .. tostring(xy), 256, 71, 0xFF000000);
d2d.text(drawing.font, "xy:\n" .. tostring(xy), 255, 70, 0xFFFFFFFF);
end
end);
end
re.on_frame(function()
if d2d ~= nil and config.current_config.global_settings.renderer.use_d2d_if_available then
return;
end
if xy ~= "" then
draw.text("xy:\n" .. tostring(xy), 256, 31, 0xFF000000);
draw.text("xy:\n" .. tostring(xy), 255, 30, 0xFFFFFFFF);
end
end);
end
if imgui.begin_table == nil then if imgui.begin_table == nil then
re.msg(language.current_language.customization_menu.reframework_outdated); re.msg(language.current_language.customization_menu.reframework_outdated);
end end

View File

@@ -405,6 +405,11 @@ function this.init_default()
bar = { bar = {
visibility = true, visibility = true,
settings = {
fill_direction = "Left to Right"
},
offset = { offset = {
x = 0, x = 0,
y = 0 y = 0
@@ -597,6 +602,11 @@ function this.init_default()
bar = { bar = {
visibility = true, visibility = true,
settings = {
fill_direction = "Left to Right"
},
offset = { offset = {
x = 0, x = 0,
y = 14 y = 14
@@ -783,6 +793,11 @@ function this.init_default()
buildup_bar = { buildup_bar = {
visibility = true, visibility = true,
settings = {
fill_direction = "Left to Right"
},
offset = { offset = {
x = 0, x = 0,
y = 17 y = 17
@@ -809,6 +824,11 @@ function this.init_default()
highlighted_buildup_bar = { highlighted_buildup_bar = {
visibility = true, visibility = true,
settings = {
fill_direction = "Left to Right"
},
offset = { offset = {
x = 0, x = 0,
y = 17 y = 17
@@ -962,6 +982,11 @@ function this.init_default()
bar = { bar = {
visibility = true, visibility = true,
settings = {
fill_direction = "Left to Right"
},
offset = { offset = {
x = 0, x = 0,
y = 0 y = 0
@@ -1104,6 +1129,11 @@ function this.init_default()
bar = { bar = {
visibility = true, visibility = true,
settings = {
fill_direction = "Left to Right"
},
offset = { offset = {
x = 0, x = 0,
y = 17 y = 17
@@ -1224,6 +1254,11 @@ function this.init_default()
bar = { bar = {
visibility = true, visibility = true,
settings = {
fill_direction = "Left to Right"
},
offset = { offset = {
x = 0, x = 0,
y = 17 y = 17
@@ -1385,6 +1420,11 @@ function this.init_default()
bar = { bar = {
visibility = true, visibility = true,
settings = {
fill_direction = "Left to Right"
},
offset = { offset = {
x = 0, x = 0,
y = 6 y = 6
@@ -1486,6 +1526,11 @@ function this.init_default()
bar = { bar = {
visibility = true, visibility = true,
settings = {
fill_direction = "Left to Right"
},
offset = { offset = {
x = 0, x = 0,
y = 7 y = 7
@@ -1586,6 +1631,11 @@ function this.init_default()
bar = { bar = {
visibility = true, visibility = true,
settings = {
fill_direction = "Left to Right"
},
offset = { offset = {
x = 0, x = 0,
y = 7 y = 7
@@ -1782,6 +1832,11 @@ function this.init_default()
bar = { bar = {
visibility = true, visibility = true,
settings = {
fill_direction = "Left to Right"
},
offset = { offset = {
x = 0, x = 0,
y = 14 y = 14
@@ -1965,6 +2020,11 @@ function this.init_default()
buildup_bar = { buildup_bar = {
visibility = true, visibility = true,
settings = {
fill_direction = "Left to Right"
},
offset = { offset = {
x = 0, x = 0,
y = 17 y = 17
@@ -1991,6 +2051,11 @@ function this.init_default()
highlighted_buildup_bar = { highlighted_buildup_bar = {
visibility = true, visibility = true,
settings = {
fill_direction = "Left to Right"
},
offset = { offset = {
x = 0, x = 0,
y = 17 y = 17
@@ -2148,6 +2213,11 @@ function this.init_default()
bar = { bar = {
visibility = true, visibility = true,
settings = {
fill_direction = "Left to Right"
},
offset = { offset = {
x = 0, x = 0,
y = 0 y = 0
@@ -2289,6 +2359,11 @@ function this.init_default()
bar = { bar = {
visibility = true, visibility = true,
settings = {
fill_direction = "Left to Right"
},
offset = { offset = {
x = 0, x = 0,
y = 0 y = 0
@@ -2409,6 +2484,11 @@ function this.init_default()
bar = { bar = {
visibility = true, visibility = true,
settings = {
fill_direction = "Left to Right"
},
offset = { offset = {
x = 0, x = 0,
y = 0 y = 0
@@ -2570,6 +2650,11 @@ function this.init_default()
bar = { bar = {
visibility = true, visibility = true,
settings = {
fill_direction = "Left to Right"
},
offset = { offset = {
x = 0, x = 0,
y = 6 y = 6
@@ -2671,6 +2756,11 @@ function this.init_default()
bar = { bar = {
visibility = true, visibility = true,
settings = {
fill_direction = "Left to Right"
},
offset = { offset = {
x = 0, x = 0,
y = 7 y = 7
@@ -2771,6 +2861,11 @@ function this.init_default()
bar = { bar = {
visibility = true, visibility = true,
settings = {
fill_direction = "Left to Right"
},
offset = { offset = {
x = 0, x = 0,
y = 7 y = 7
@@ -2968,6 +3063,11 @@ function this.init_default()
bar = { bar = {
visibility = true, visibility = true,
settings = {
fill_direction = "Left to Right"
},
offset = { offset = {
x = 0, x = 0,
y = 14 y = 14
@@ -3151,6 +3251,11 @@ function this.init_default()
buildup_bar = { buildup_bar = {
visibility = true, visibility = true,
settings = {
fill_direction = "Left to Right"
},
offset = { offset = {
x = 0, x = 0,
y = 17 y = 17
@@ -3177,6 +3282,11 @@ function this.init_default()
highlighted_buildup_bar = { highlighted_buildup_bar = {
visibility = true, visibility = true,
settings = {
fill_direction = "Left to Right"
},
offset = { offset = {
x = 0, x = 0,
y = 17 y = 17
@@ -3320,6 +3430,11 @@ function this.init_default()
bar = { bar = {
visibility = true, visibility = true,
settings = {
fill_direction = "Left to Right"
},
offset = { offset = {
x = 0, x = 0,
y = 0 y = 0
@@ -3461,6 +3576,11 @@ function this.init_default()
bar = { bar = {
visibility = true, visibility = true,
settings = {
fill_direction = "Left to Right"
},
offset = { offset = {
x = 10 - 10, x = 10 - 10,
y = 17 y = 17
@@ -3581,6 +3701,11 @@ function this.init_default()
bar = { bar = {
visibility = true, visibility = true,
settings = {
fill_direction = "Left to Right"
},
offset = { offset = {
x = 0, x = 0,
y = 17 y = 17
@@ -3742,6 +3867,11 @@ function this.init_default()
bar = { bar = {
visibility = true, visibility = true,
settings = {
fill_direction = "Left to Right"
},
offset = { offset = {
x = 0, x = 0,
y = 6 y = 6
@@ -3843,6 +3973,11 @@ function this.init_default()
bar = { bar = {
visibility = true, visibility = true,
settings = {
fill_direction = "Left to Right"
},
offset = { offset = {
x = 0, x = 0,
y = 7 y = 7
@@ -3943,6 +4078,11 @@ function this.init_default()
bar = { bar = {
visibility = true, visibility = true,
settings = {
fill_direction = "Left to Right"
},
offset = { offset = {
x = 0, x = 0,
y = 7 y = 7
@@ -3967,7 +4107,6 @@ function this.init_default()
} }
} }
} }
}, },
ailments = { ailments = {
@@ -4139,6 +4278,11 @@ function this.init_default()
bar = { bar = {
visibility = true, visibility = true,
settings = {
fill_direction = "Left to Right"
},
offset = { offset = {
x = 0, x = 0,
y = 14 y = 14
@@ -4322,6 +4466,11 @@ function this.init_default()
buildup_bar = { buildup_bar = {
visibility = true, visibility = true,
settings = {
fill_direction = "Left to Right"
},
offset = { offset = {
x = 0, x = 0,
y = 17 y = 17
@@ -4348,6 +4497,11 @@ function this.init_default()
highlighted_buildup_bar = { highlighted_buildup_bar = {
visibility = true, visibility = true,
settings = {
fill_direction = "Left to Right"
},
offset = { offset = {
x = 0, x = 0,
y = 17 y = 17
@@ -4607,6 +4761,11 @@ function this.init_default()
damage_bar = { damage_bar = {
visibility = true, visibility = true,
settings = {
fill_direction = "Left to Right"
},
offset = { offset = {
x = 0, x = 0,
y = 17 y = 17
@@ -4767,6 +4926,11 @@ function this.init_default()
damage_bar = { damage_bar = {
visibility = true, visibility = true,
settings = {
fill_direction = "Left to Right"
},
offset = { offset = {
x = 0, x = 0,
y = 17 y = 17
@@ -4879,6 +5043,11 @@ function this.init_default()
damage_bar = { damage_bar = {
visibility = true, visibility = true,
settings = {
fill_direction = "Left to Right"
},
offset = { offset = {
x = 0, x = 0,
y = 17 y = 17
@@ -5012,6 +5181,11 @@ function this.init_default()
damage_bar = { damage_bar = {
visibility = true, visibility = true,
settings = {
fill_direction = "Left to Right"
},
offset = { offset = {
x = 0, x = 0,
y = 17 y = 17
@@ -5145,6 +5319,11 @@ function this.init_default()
damage_bar = { damage_bar = {
visibility = true, visibility = true,
settings = {
fill_direction = "Left to Right"
},
offset = { offset = {
x = 0, x = 0,
y = 17 y = 17
@@ -5278,6 +5457,11 @@ function this.init_default()
damage_bar = { damage_bar = {
visibility = true, visibility = true,
settings = {
fill_direction = "Left to Right"
},
offset = { offset = {
x = 0, x = 0,
y = 17 y = 17
@@ -5505,6 +5689,11 @@ function this.init_default()
damage_bar = { damage_bar = {
visibility = true, visibility = true,
settings = {
fill_direction = "Left to Right"
},
offset = { offset = {
x = 0, x = 0,
y = 17 y = 17
@@ -5639,6 +5828,11 @@ function this.init_default()
bar = { bar = {
visibility = true, visibility = true,
settings = {
fill_direction = "Left to Right"
},
offset = { offset = {
x = 0, x = 0,
y = 17 y = 17

View File

@@ -1,5 +0,0 @@
local this = {};
this.enabled = false;
return this;

View File

@@ -36,11 +36,47 @@ local package = package;
this.language_folder = "MHR Overlay\\languages\\"; this.language_folder = "MHR Overlay\\languages\\";
--[[
EXAMPLE:
unicode_glyph_ranges = {
0x0020, 0x00FF, -- Basic Latin + Latin Supplement
0x2000, 0x206F, -- General Punctuation
0x3000, 0x30FF, -- CJK Symbols and Punctuations, Hiragana, Katakana
0x31F0, 0x31FF, -- Katakana Phonetic Extensions
0x4e00, 0x9FAF, -- CJK Ideograms
0xFF00, 0xFFEF, -- Half-width characters
0
},
]]
--[[
EXAMPLE:
unicode_glyph_ranges = {
0x0020, 0x00FF, -- Basic Latin + Latin Supplement
0x0400, 0x052F, -- Cyrillic
0x2000, 0x206F, -- General Punctuation
0xFF00, 0xFFEF, -- Half-width characters
0
},
]]
--[[
EXAMPLE:
unicode_glyph_ranges = {
0x0020, 0x00FF, -- Basic Latin + Latin Supplement
0x1100, 0x11FF, -- Hangul Jamo
0x2000, 0x206F, -- General Punctuation
0x3130, 0x318F, -- Hangul Compatibility Jamo
0xAC00, 0xD7AF, -- Hangul Syllables
0xFF00, 0xFFEF, -- Half-width characters
0
},
]]
this.current_language = {}; this.current_language = {};
this.default_language = { this.default_language = {
font_name = "NotoSansKR-Bold.otf", font_name = "",
unicode_glyph_ranges = {0},
parts = { parts = {
head = "Head", head = "Head",
neck = "Neck", neck = "Neck",
@@ -505,7 +541,13 @@ this.default_language = {
filter_mode = "Filter Mode", filter_mode = "Filter Mode",
current_state = "Current State", current_state = "Current State",
default_state = "Default State" default_state = "Default State",
fill_direction = "Fill Direction",
left_to_right = "Left to Right",
right_to_left = "Right to Left",
top_to_bottom = "Top to Bottom",
bottom_to_top = "Bottom to Top",
} }
}; };

View File

@@ -826,11 +826,12 @@ function this.init()
language.current_language.parts.head, language.current_language.parts.head,
language.current_language.parts.torso, language.current_language.parts.torso,
language.current_language.parts.wings, language.current_language.parts.wings,
language.current_language.parts.wingclaws, language.current_language.parts.right_wingclaw,
language.current_language.parts.forelegs, language.current_language.parts.forelegs,
language.current_language.parts.hind_legs, language.current_language.parts.hind_legs,
language.current_language.parts.tail, language.current_language.parts.tail,
language.current_language.parts.antenna language.current_language.parts.antenna,
language.current_language.parts.left_wingclaw
}, },
[2072] = -- Risen Kushala Daora 2072 [2072] = -- Risen Kushala Daora 2072

View File

@@ -215,6 +215,14 @@ function this.number.round(value)
return math.floor(value + 0.5); return math.floor(value + 0.5);
end end
function this.number.is_odd(value)
return value % 2 ~= 0;
end
function this.number.is_even(value)
return value % 2 == 0;
end
function this.string.trim(str) function this.string.trim(str)
return str:match("^%s*(.-)%s*$"); return str:match("^%s*(.-)%s*$");
end end

View File

@@ -11,6 +11,7 @@ local screen;
local drawing; local drawing;
local part_names; local part_names;
local time; local time;
local utils;
local sdk = sdk; local sdk = sdk;
local tostring = tostring; local tostring = tostring;
@@ -73,6 +74,12 @@ function this.new(id, name)
return part; return part;
end end
function this.init_part_names(monster_id, parts)
for part_id, part in pairs(parts) do
part.name = part_names.get_part_name(monster_id, part_id);
end
end
function this.update_flinch(part, part_current, part_max) function this.update_flinch(part, part_current, part_max)
if part_current > part.health then if part_current > part.health then
part.flinch_count = part.flinch_count + 1; part.flinch_count = part.flinch_count + 1;
@@ -352,6 +359,7 @@ function this.init_module()
drawing = require("MHR_Overlay.UI.drawing"); drawing = require("MHR_Overlay.UI.drawing");
part_names = require("MHR_Overlay.Misc.part_names"); part_names = require("MHR_Overlay.Misc.part_names");
time = require("MHR_Overlay.Game_Handler.time"); time = require("MHR_Overlay.Game_Handler.time");
utils = require("MHR_Overlay.Misc.utils");
end end
return this; return this;

View File

@@ -337,6 +337,7 @@ function this.init_UI(monster, monster_UI, cached_config)
); );
ailments.init_ailment_names(monster.ailments); ailments.init_ailment_names(monster.ailments);
body_part.init_part_names(monster.id, monster.parts);
end end
local physical_param_field = enemy_character_base_type_def:get_field("<PhysicalParam>k__BackingField"); local physical_param_field = enemy_character_base_type_def:get_field("<PhysicalParam>k__BackingField");
@@ -731,7 +732,6 @@ function this.update_parts(enemy, monster, physical_param)
return; return;
end end
for i = 0, enemy_parts_info_array_length - 1 do for i = 0, enemy_parts_info_array_length - 1 do
local part_id = i + 1; local part_id = i + 1;
@@ -744,7 +744,7 @@ function this.update_parts(enemy, monster, physical_param)
if part == nil then if part == nil then
local part_name = part_names.get_part_name(monster.id, part_id); local part_name = part_names.get_part_name(monster.id, part_id);
if part_name == nil then if part_name == nil then
goto continue goto continue;
else else
part = body_part.new(part_id, part_name); part = body_part.new(part_id, part_name);
monster.parts[part_id] = part; monster.parts[part_id] = part;

View File

@@ -47,6 +47,61 @@ local os = os;
local ValueType = ValueType; local ValueType = ValueType;
local package = package; local package = package;
this.ailment_buildups_sorting_types = {};
this.displayed_ailment_buildups_sorting_types = {};
this.highlighted_buildup_bar_types = {};
this.displayed_highlighted_buildup_bar_types = {};
this.buildup_bar_relative_types = {};
this.displayed_buildup_bar_relative_types = {};
function this.init()
local default = language.default_language.customization_menu;
local current = language.current_language.customization_menu;
this.ailment_buildups_sorting_types =
{
default.normal,
default.buildup,
default.buildup_percentage
};
this.displayed_ailment_buildups_sorting_types =
{
current.normal,
current.buildup,
current.buildup_percentage
};
this.highlighted_buildup_bar_types =
{
default.me,
default.top_buildup,
default.none
};
this.displayed_highlighted_buildup_bar_types =
{
current.me,
current.top_buildup,
current.none
};
this.buildup_bar_relative_types =
{
default.total_buildup,
default.top_buildup
};
this.displayed_buildup_bar_relative_types =
{
current.total_buildup,
current.top_buildup
};
end
function this.draw(cached_config) function this.draw(cached_config)
local changed = false; local changed = false;
local config_changed = false; local config_changed = false;
@@ -103,24 +158,24 @@ function this.draw(cached_config)
if imgui.tree_node(language.current_language.customization_menu.settings) then if imgui.tree_node(language.current_language.customization_menu.settings) then
changed, index = imgui.combo( changed, index = imgui.combo(
language.current_language.customization_menu.highlighted_bar, language.current_language.customization_menu.highlighted_bar,
utils.table.find_index(customization_menu.highlighted_buildup_bar_types, cached_config.settings.highlighted_bar), utils.table.find_index(this.highlighted_buildup_bar_types, cached_config.settings.highlighted_bar),
customization_menu.displayed_highlighted_buildup_bar_types); this.displayed_highlighted_buildup_bar_types);
config_changed = config_changed or changed; config_changed = config_changed or changed;
if changed then if changed then
cached_config.settings.highlighted_bar = customization_menu.highlighted_buildup_bar_types[index]; cached_config.settings.highlighted_bar = this.highlighted_buildup_bar_types[index];
end end
changed, index = imgui.combo( changed, index = imgui.combo(
language.current_language.customization_menu.buildup_bars_are_relative_to, language.current_language.customization_menu.buildup_bars_are_relative_to,
utils.table.find_index(customization_menu.displayed_buildup_bar_relative_types, cached_config.settings.buildup_bar_relative_to), utils.table.find_index(this.displayed_buildup_bar_relative_types, cached_config.settings.buildup_bar_relative_to),
customization_menu.displayed_buildup_bar_relative_types); this.displayed_buildup_bar_relative_types);
config_changed = config_changed or changed; config_changed = config_changed or changed;
if changed then if changed then
cached_config.settings.buildup_bar_relative_to = customization_menu.displayed_buildup_bar_relative_types[index]; cached_config.settings.buildup_bar_relative_to = this.displayed_buildup_bar_relative_types[index];
end end
changed, cached_config.settings.time_limit = imgui.drag_float( changed, cached_config.settings.time_limit = imgui.drag_float(
@@ -134,13 +189,13 @@ function this.draw(cached_config)
if imgui.tree_node(language.current_language.customization_menu.sorting) then if imgui.tree_node(language.current_language.customization_menu.sorting) then
changed, index = imgui.combo( changed, index = imgui.combo(
language.current_language.customization_menu.type, language.current_language.customization_menu.type,
utils.table.find_index(customization_menu.ailment_buildups_sorting_types, cached_config.sorting.type), utils.table.find_index(this.ailment_buildups_sorting_types, cached_config.sorting.type),
customization_menu.displayed_ailment_buildups_sorting_types); this.displayed_ailment_buildups_sorting_types);
config_changed = config_changed or changed; config_changed = config_changed or changed;
if changed then if changed then
cached_config.sorting.type = customization_menu.ailment_buildups_sorting_types[index]; cached_config.sorting.type = this.ailment_buildups_sorting_types[index];
end end
changed, cached_config.sorting.reversed_order = imgui.checkbox( changed, cached_config.sorting.reversed_order = imgui.checkbox(

View File

@@ -47,6 +47,27 @@ local os = os;
local ValueType = ValueType; local ValueType = ValueType;
local package = package; local package = package;
this.ailments_sorting_types = {};
this.displayed_ailments_sorting_types = {};
function this.init()
local default = language.default_language.customization_menu;
local current = language.current_language.customization_menu;
this.ailments_sorting_types = {
default.normal,
default.buildup,
default.buildup_percentage
};
this.displayed_ailments_sorting_types = {
current.normal,
current.buildup,
current.buildup_percentage
};
end
function this.draw(cached_config) function this.draw(cached_config)
local changed = false; local changed = false;
local config_changed = false; local config_changed = false;
@@ -143,13 +164,13 @@ function this.draw(cached_config)
if imgui.tree_node(language.current_language.customization_menu.sorting) then if imgui.tree_node(language.current_language.customization_menu.sorting) then
changed, index = imgui.combo( changed, index = imgui.combo(
language.current_language.customization_menu.type, language.current_language.customization_menu.type,
utils.table.find_index(customization_menu.ailments_sorting_types, cached_config.sorting.type), utils.table.find_index(this.ailments_sorting_types, cached_config.sorting.type),
customization_menu.displayed_ailments_sorting_types); this.displayed_ailments_sorting_types);
config_changed = config_changed or changed; config_changed = config_changed or changed;
if changed then if changed then
cached_config.sorting.type = customization_menu.ailments_sorting_types[index]; cached_config.sorting.type = this.ailments_sorting_types[index];
end end
changed, cached_config.sorting.reversed_order = imgui.checkbox( changed, cached_config.sorting.reversed_order = imgui.checkbox(

View File

@@ -46,72 +46,124 @@ local os = os;
local ValueType = ValueType; local ValueType = ValueType;
local package = package; local package = package;
local outline_styles = {};
local displayed_outline_styles = {};
local directions = {};
local displayed_directions = {};
function this.init()
local default = language.default_language.customization_menu;
local current = language.current_language.customization_menu;
outline_styles = {
default.inside,
default.center,
default.outside
};
displayed_outline_styles = {
current.inside,
current.center,
current.outside
};
directions = {
default.left_to_right,
default.right_to_left,
default.top_to_bottom,
default.bottom_to_top
};
displayed_directions = {
current.left_to_right,
current.right_to_left,
current.top_to_bottom,
current.bottom_to_top
};
end
function this.draw(bar_name, bar) function this.draw(bar_name, bar)
if bar == nil then if bar == nil then
return false; return false;
end end
local cached_language = language.current_language.customization_menu;
local bar_changed = false; local bar_changed = false;
local changed = false; local changed = false;
local index = 1; local index = 1;
if imgui.tree_node(bar_name) then if imgui.tree_node(bar_name) then
changed, bar.visibility = imgui.checkbox(language.current_language.customization_menu.visible changed, bar.visibility = imgui.checkbox(cached_language.visible
, bar.visibility); , bar.visibility);
bar_changed = bar_changed or changed; bar_changed = bar_changed or changed;
if imgui.tree_node(language.current_language.customization_menu.offset) then if imgui.tree_node(cached_language.settings) then
changed, bar.offset.x = imgui.drag_float(language.current_language.customization_menu.x, local fill_direction_index = utils.table.find_index(directions, bar.settings.fill_direction);
changed, fill_direction_index = imgui.combo(cached_language.fill_direction, fill_direction_index, displayed_directions);
bar_changed = bar_changed or changed;
if changed then
bar.settings.fill_direction = directions[fill_direction_index];
end
imgui.tree_pop();
end
if imgui.tree_node(cached_language.offset) then
changed, bar.offset.x = imgui.drag_float(cached_language.x,
bar.offset.x, 0.1, -screen.width, screen.width, "%.1f"); bar.offset.x, 0.1, -screen.width, screen.width, "%.1f");
bar_changed = bar_changed or changed; bar_changed = bar_changed or changed;
changed, bar.offset.y = imgui.drag_float(language.current_language.customization_menu.y, changed, bar.offset.y = imgui.drag_float(cached_language.y,
bar.offset.y, 0.1, -screen.height, screen.height, "%.1f"); bar.offset.y, 0.1, -screen.height, screen.height, "%.1f");
bar_changed = bar_changed or changed; bar_changed = bar_changed or changed;
imgui.tree_pop(); imgui.tree_pop();
end end
if imgui.tree_node(language.current_language.customization_menu.size) then if imgui.tree_node(cached_language.size) then
changed, bar.size.width = imgui.drag_float(language.current_language.customization_menu.width, changed, bar.size.width = imgui.drag_float(cached_language.width,
bar.size.width, 0.1, 0, screen.width, "%.1f"); bar.size.width, 0.1, 0, screen.width, "%.1f");
bar_changed = bar_changed or changed; bar_changed = bar_changed or changed;
changed, bar.size.height = imgui.drag_float(language.current_language.customization_menu.height, changed, bar.size.height = imgui.drag_float(cached_language.height,
bar.size.height, 0.1, 0, screen.height, "%.1f"); bar.size.height, 0.1, 0, screen.height, "%.1f");
bar_changed = bar_changed or changed; bar_changed = bar_changed or changed;
imgui.tree_pop(); imgui.tree_pop();
end end
if imgui.tree_node(language.current_language.customization_menu.outline) then if imgui.tree_node(cached_language.outline) then
changed, bar.outline.visibility = imgui.checkbox(language.current_language.customization_menu.visible changed, bar.outline.visibility = imgui.checkbox(cached_language.visible
, bar.outline.visibility); , bar.outline.visibility);
bar_changed = bar_changed or changed; bar_changed = bar_changed or changed;
changed, bar.outline.thickness = imgui.drag_float(language.current_language.customization_menu.thickness, changed, bar.outline.thickness = imgui.drag_float(cached_language.thickness,
bar.outline.thickness, 0.1, 0, screen.width, "%.1f"); bar.outline.thickness, 0.1, 0, screen.width, "%.1f");
bar_changed = bar_changed or changed; bar_changed = bar_changed or changed;
changed, bar.outline.offset = imgui.drag_float(language.current_language.customization_menu.offset, changed, bar.outline.offset = imgui.drag_float(cached_language.offset,
bar.outline.offset, 0.1, -screen.height, screen.height, "%.1f"); bar.outline.offset, 0.1, -screen.height, screen.height, "%.1f");
bar_changed = bar_changed or changed; bar_changed = bar_changed or changed;
changed, index = imgui.combo(language.current_language.customization_menu.style, changed, index = imgui.combo(cached_language.style,
utils.table.find_index(customization_menu.outline_styles, utils.table.find_index(this.outline_styles,
bar.outline.style), bar.outline.style),
customization_menu.displayed_outline_styles); this.displayed_outline_styles);
bar_changed = bar_changed or changed; bar_changed = bar_changed or changed;
if changed then if changed then
bar.outline.style = customization_menu.outline_styles[index]; bar.outline.style = this.outline_styles[index];
end end
imgui.tree_pop(); imgui.tree_pop();
end end
if imgui.tree_node(language.current_language.customization_menu.colors) then if imgui.tree_node(cached_language.colors) then
local colors = nil; local colors = nil;
if bar.colors ~= nil then if bar.colors ~= nil then
colors = bar.colors; colors = bar.colors;
@@ -119,7 +171,7 @@ function this.draw(bar_name, bar)
colors = bar.normal_colors; colors = bar.normal_colors;
end end
if imgui.tree_node(language.current_language.customization_menu.foreground) then if imgui.tree_node(cached_language.foreground) then
changed, colors.foreground = imgui.color_picker_argb("", colors.foreground, changed, colors.foreground = imgui.color_picker_argb("", colors.foreground,
customization_menu.color_picker_flags); customization_menu.color_picker_flags);
bar_changed = bar_changed or changed; bar_changed = bar_changed or changed;
@@ -127,7 +179,7 @@ function this.draw(bar_name, bar)
imgui.tree_pop(); imgui.tree_pop();
end end
if imgui.tree_node(language.current_language.customization_menu.background) then if imgui.tree_node(cached_language.background) then
changed, colors.background = imgui.color_picker_argb("", colors.background, changed, colors.background = imgui.color_picker_argb("", colors.background,
customization_menu.color_picker_flags); customization_menu.color_picker_flags);
bar_changed = bar_changed or changed; bar_changed = bar_changed or changed;
@@ -135,7 +187,7 @@ function this.draw(bar_name, bar)
imgui.tree_pop(); imgui.tree_pop();
end end
if imgui.tree_node(language.current_language.customization_menu.outline) then if imgui.tree_node(cached_language.outline) then
changed, colors.outline = imgui.color_picker_argb("", colors.outline, changed, colors.outline = imgui.color_picker_argb("", colors.outline,
customization_menu.color_picker_flags); customization_menu.color_picker_flags);
bar_changed = bar_changed or changed; bar_changed = bar_changed or changed;
@@ -144,8 +196,8 @@ function this.draw(bar_name, bar)
end end
if bar.capture_colors ~= nil then if bar.capture_colors ~= nil then
if imgui.tree_node(language.current_language.customization_menu.monster_can_be_captured) then if imgui.tree_node(cached_language.monster_can_be_captured) then
if imgui.tree_node(language.current_language.customization_menu.foreground) then if imgui.tree_node(cached_language.foreground) then
changed, bar.capture_colors.foreground = imgui.color_picker_argb("", changed, bar.capture_colors.foreground = imgui.color_picker_argb("",
bar.capture_colors.foreground bar.capture_colors.foreground
, ,
@@ -155,7 +207,7 @@ function this.draw(bar_name, bar)
imgui.tree_pop(); imgui.tree_pop();
end end
if imgui.tree_node(language.current_language.customization_menu.background) then if imgui.tree_node(cached_language.background) then
changed, bar.capture_colors.background = imgui.color_picker_argb("", changed, bar.capture_colors.background = imgui.color_picker_argb("",
bar.capture_colors.background bar.capture_colors.background
, ,
@@ -165,7 +217,7 @@ function this.draw(bar_name, bar)
imgui.tree_pop(); imgui.tree_pop();
end end
if imgui.tree_node(language.current_language.customization_menu.outline) then if imgui.tree_node(cached_language.outline) then
changed, bar.capture_colors.outline = imgui.color_picker_argb("", changed, bar.capture_colors.outline = imgui.color_picker_argb("",
bar.capture_colors.outline bar.capture_colors.outline
, ,
@@ -182,7 +234,7 @@ function this.draw(bar_name, bar)
imgui.tree_pop(); imgui.tree_pop();
end end
changed = line_customization.draw(language.current_language.customization_menu.capture_line, bar.capture_line); changed = line_customization.draw(cached_language.capture_line, bar.capture_line);
bar_changed = bar_changed or changed; bar_changed = bar_changed or changed;
imgui.tree_pop(); imgui.tree_pop();

View File

@@ -62,7 +62,7 @@ local ValueType = ValueType;
local package = package; local package = package;
this.font = nil; this.font = nil;
this.font_range = {0x1, 0xFFFF, 0}; this.full_font_range = {0x1, 0xFFFF, 0};
this.is_opened = false; this.is_opened = false;
this.status = "OK"; this.status = "OK";
@@ -73,51 +73,44 @@ this.window_flags = 0x10120;
this.color_picker_flags = 327680; this.color_picker_flags = 327680;
this.decimal_input_flags = 33; this.decimal_input_flags = 33;
this.displayed_orientation_types = {};
this.displayed_anchor_types = {};
this.displayed_outline_styles = {};
this.displayed_monster_UI_sorting_types = {};
this.displayed_large_monster_UI_parts_sorting_types = {};
this.displayed_large_monster_UI_parts_filter_types = {};
this.displayed_ailments_sorting_types = {};
this.displayed_ailment_buildups_sorting_types = {};
this.displayed_highlighted_buildup_bar_types = {};
this.displayed_buildup_bar_relative_types = {};
this.displayed_buff_UI_sorting_types = {};
this.displayed_damage_meter_UI_highlighted_entity_types = {};
this.displayed_damage_meter_UI_damage_bar_relative_types = {};
this.displayed_damage_meter_UI_my_damage_bar_location_types = {};
this.displayed_damage_meter_UI_total_damage_location_types = {};
this.displayed_damage_meter_UI_sorting_types = {};
this.displayed_damage_meter_UI_dps_modes = {};
this.displayed_auto_highlight_modes = {};
this.orientation_types = {}; this.orientation_types = {};
this.displayed_orientation_types = {};
this.anchor_types = {}; this.anchor_types = {};
this.outline_styles = {}; this.displayed_anchor_types = {};
this.monster_UI_sorting_types = {}; this.monster_UI_sorting_types = {};
this.displayed_monster_UI_sorting_types = {};
this.large_monster_UI_parts_sorting_types = {}; this.large_monster_UI_parts_sorting_types = {};
this.displayed_large_monster_UI_parts_sorting_types = {};
this.large_monster_UI_parts_filter_types = {}; this.large_monster_UI_parts_filter_types = {};
this.ailments_sorting_types = {}; this.displayed_large_monster_UI_parts_filter_types = {};
this.ailment_buildups_sorting_types = {};
this.highlighted_buildup_bar_types = {};
this.buildup_bar_relative_types = {};
this.buff_UI_sorting_types = {}; this.buff_UI_sorting_types = {};
this.displayed_buff_UI_sorting_types = {};
this.damage_meter_UI_highlighted_entity_types = {}; this.damage_meter_UI_highlighted_entity_types = {};
this.displayed_damage_meter_UI_highlighted_entity_types = {};
this.damage_meter_UI_damage_bar_relative_types = {}; this.damage_meter_UI_damage_bar_relative_types = {};
this.displayed_damage_meter_UI_damage_bar_relative_types = {};
this.damage_meter_UI_my_damage_bar_location_types = {}; this.damage_meter_UI_my_damage_bar_location_types = {};
this.displayed_damage_meter_UI_my_damage_bar_location_types = {};
this.damage_meter_UI_total_damage_location_types = {}; this.damage_meter_UI_total_damage_location_types = {};
this.displayed_damage_meter_UI_total_damage_location_types = {};
this.damage_meter_UI_sorting_types = {}; this.damage_meter_UI_sorting_types = {};
this.displayed_damage_meter_UI_sorting_types = {};
this.damage_meter_UI_dps_modes = {}; this.damage_meter_UI_dps_modes = {};
this.displayed_damage_meter_UI_dps_modes = {};
this.auto_highlight_modes = {}; this.auto_highlight_modes = {};
this.displayed_auto_highlight_modes = {};
this.fonts = {"Arial", "Arial Black", "Bahnschrift", "Calibri", "Cambria", "Cambria Math", "Candara", this.fonts = {"Arial", "Arial Black", "Bahnschrift", "Calibri", "Cambria", "Cambria Math", "Candara",
"Comic Sans MS", "Consolas", "Constantia", "Corbel", "Courier New", "Ebrima", "Comic Sans MS", "Consolas", "Constantia", "Corbel", "Courier New", "Ebrima",
@@ -146,8 +139,22 @@ this.menu_font_changed = false;
this.config_name_input = ""; this.config_name_input = "";
function this.reload_font(pop_push) function this.reload_font(pop_push)
this.font = imgui.load_font(language.current_language.font_name, local cached_language = language.current_language;
config.current_config.global_settings.menu_font.size, this.font_range);
local font_range = cached_language.unicode_glyph_ranges;
if cached_language.font_name == "" then
font_range = nil;
elseif cached_language.unicode_glyph_ranges == nil
or utils.table.is_empty(cached_language.unicode_glyph_ranges)
or #cached_language.unicode_glyph_ranges == 1
or not utils.number.is_odd(#cached_language.unicode_glyph_ranges) then
font_range = this.full_font_range;
end
this.font = imgui.load_font(cached_language.font_name, config.current_config.global_settings.menu_font.size, font_range);
if pop_push then if pop_push then
imgui.pop_font(); imgui.pop_font();
@@ -156,182 +163,226 @@ function this.reload_font(pop_push)
end end
function this.init() function this.init()
local current = language.current_language.customization_menu;
local default = language.default_language.customization_menu; local default = language.default_language.customization_menu;
local current = language.current_language.customization_menu;
this.displayed_orientation_types = { current.horizontal, bar_customization.init();
current.vertical}; ailments_customization.init();
ailment_buildups_customization.init();
this.orientation_types = { default.horizontal, this.orientation_types =
default.vertical}; {
default.horizontal,
default.vertical
};
this.displayed_anchor_types = { current.top_left, this.displayed_orientation_types =
current.top_right, {
current.bottom_left, current.horizontal,
current.bottom_right}; current.vertical
};
this.anchor_types =
this.anchor_types = { default.top_left, {
default.top_right, default.top_left,
default.bottom_left, default.top_right,
default.bottom_right}; default.bottom_left,
default.bottom_right
};
this.displayed_outline_styles = { current.inside, this.displayed_anchor_types =
current.center, {
current.outside}; current.top_left,
current.top_right,
current.bottom_left,
current.bottom_right
};
this.outline_styles = { default.inside, this.monster_UI_sorting_types =
default.center, {
default.outside}; default.normal,
default.health,
default.health_percentage,
default.distance
};
this.displayed_monster_UI_sorting_types = { current.normal, this.displayed_monster_UI_sorting_types =
current.health, {
current.health_percentage, current.normal,
current.distance}; current.health,
current.health_percentage,
current.distance
};
this.monster_UI_sorting_types = { default.normal, this.large_monster_UI_parts_sorting_types =
default.health, {
default.health_percentage, default.normal,
default.distance}; default.health,
default.health_percentage,
default.flinch_count,
default.break_health,
default.break_health_percentage,
default.break_count,
default.loss_health,
default.loss_health_percentage
};
this.displayed_large_monster_UI_parts_sorting_types = { current.normal, this.displayed_large_monster_UI_parts_sorting_types =
current.health, {
current.health_percentage, current.normal,
current.flinch_count, current.health,
current.break_health, current.health_percentage,
current.break_health_percentage, current.flinch_count,
current.break_count, current.break_health,
current.loss_health, current.break_health_percentage,
current.loss_health_percentage}; current.break_count,
current.loss_health,
current.loss_health_percentage
};
this.large_monster_UI_parts_sorting_types = { default.normal, this.large_monster_UI_parts_filter_types =
default.health, {
default.health_percentage, default.current_state,
default.flinch_count, default.default_state
default.break_health, };
default.break_health_percentage,
default.break_count,
default.loss_health,
default.loss_health_percentage};
this.displayed_large_monster_UI_parts_filter_types = { current.current_state, this.displayed_large_monster_UI_parts_filter_types =
current.default_state}; {
current.current_state,
current.default_state
};
this.large_monster_UI_parts_filter_types = { default.current_state, this.buff_UI_sorting_types =
default.default_state}; {
default.name,
default.timer,
default.duration
};
this.displayed_ailments_sorting_types = { current.normal, this.displayed_buff_UI_sorting_types =
current.buildup, {
current.buildup_percentage}; current.name,
current.timer,
current.duration
};
this.ailments_sorting_types = { default.normal, this.damage_meter_UI_highlighted_entity_types =
default.buildup, {
default.buildup_percentage}; default.top_damage,
default.top_dps,
default.none
};
this.displayed_buff_UI_sorting_types = { current.name, this.displayed_damage_meter_UI_highlighted_entity_types =
current.timer, {
current.duration}; current.top_damage,
current.top_dps,
current.none
};
this.buff_UI_sorting_types = { default.name, this.damage_meter_UI_damage_bar_relative_types =
default.timer, {
default.duration}; default.total_damage,
default.top_damage
};
this.displayed_ailment_buildups_sorting_types = { current.normal, this.displayed_damage_meter_UI_damage_bar_relative_types =
current.buildup, {
current.buildup_percentage}; current.total_damage,
current.top_damage
};
this.ailment_buildups_sorting_types = { default.normal, this.damage_meter_UI_my_damage_bar_location_types =
default.buildup, {
default.buildup_percentage}; default.normal,
default.first,
this.displayed_highlighted_buildup_bar_types = { current.me, default.last
current.top_buildup, };
current.none};
this.highlighted_buildup_bar_types = { default.me,
default.top_buildup,
default.none};
this.displayed_buildup_bar_relative_types = { current.total_buildup,
current.top_buildup};
this.buildup_bar_relative_types = { default.total_buildup,
default.top_buildup};
this.displayed_damage_meter_UI_highlighted_entity_types = { current.top_damage,
current.top_dps,
current.none};
this.damage_meter_UI_highlighted_entity_types = { default.top_damage,
default.top_dps,
default.none};
this.displayed_damage_meter_UI_damage_bar_relative_types = { current.total_damage,
current.top_damage};
this.damage_meter_UI_damage_bar_relative_types = { default.total_damage,
default.top_damage};
this.displayed_damage_meter_UI_my_damage_bar_location_types = { current.normal, this.displayed_damage_meter_UI_my_damage_bar_location_types =
current.first, {
current.last}; current.normal,
current.first,
current.last
};
this.damage_meter_UI_my_damage_bar_location_types = { default.normal, this.damage_meter_UI_total_damage_location_types =
default.first, {
default.last}; default.first,
default.last
};
this.displayed_damage_meter_UI_total_damage_location_types = { current.first, this.displayed_damage_meter_UI_total_damage_location_types =
current.last}; {
current.first,
current.last
};
this.damage_meter_UI_total_damage_location_types = { default.first, this.damage_meter_UI_sorting_types =
default.last}; {
default.normal,
default.damage,
default.dps
};
this.displayed_damage_meter_UI_sorting_types = { current.normal, this.displayed_damage_meter_UI_sorting_types =
current.damage, {
current.dps}; current.normal,
current.damage,
current.dps
};
this.damage_meter_UI_sorting_types = { default.normal, this.damage_meter_UI_dps_modes =
default.damage, {
default.dps}; default.first_hit,
default.quest_time,
default.join_time
};
this.displayed_damage_meter_UI_dps_modes = { current.first_hit, this.displayed_damage_meter_UI_dps_modes =
current.quest_time, {
current.join_time}; current.first_hit,
current.quest_time,
current.join_time
};
this.damage_meter_UI_dps_modes = { default.first_hit, this.auto_highlight_modes =
default.quest_time, {
default.join_time}; default.closest,
default.farthest,
default.lowest_health,
default.highest_health,
default.lowest_health_percentage,
default.highest_health_percentage
};
this.displayed_auto_highlight_modes = { current.closest, this.displayed_auto_highlight_modes =
current.farthest, {
current.lowest_health, current.closest,
current.highest_health, current.farthest,
current.lowest_health_percentage, current.lowest_health,
current.highest_health_percentage}; current.highest_health,
current.lowest_health_percentage,
this.auto_highlight_modes = { default.closest, current.highest_health_percentage
default.farthest, };
default.lowest_health,
default.highest_health,
default.lowest_health_percentage,
default.highest_health_percentage};
end end
function this.draw() function this.draw()
imgui.set_next_window_pos(this.window_position, 1 << 3, this.window_pivot); imgui.set_next_window_pos(this.window_position, 1 << 3, this.window_pivot);
imgui.set_next_window_size(this.window_size, 1 << 3); imgui.set_next_window_size(this.window_size, 1 << 3);
imgui.push_font(this.font);
this.is_opened = imgui.begin_window( this.is_opened = imgui.begin_window(
language.current_language.customization_menu.mod_name .. " v" .. config.current_config.version, this.is_opened, language.current_language.customization_menu.mod_name .. " v" .. config.current_config.version, this.is_opened,
this.window_flags); this.window_flags);
if not this.is_opened then if not this.is_opened then
imgui.pop_font();
imgui.end_window(); imgui.end_window();
return; return;
end end
imgui.push_font(this.font);
local config_changed = false; local config_changed = false;
local language_changed = false; local language_changed = false;
local modifiers_changed = false; local modifiers_changed = false;
@@ -434,7 +485,7 @@ function this.draw()
if this.menu_font_changed and (apply_font_requested or config_changed) then if this.menu_font_changed and (apply_font_requested or config_changed) then
this.menu_font_changed = false; this.menu_font_changed = false;
this.reload_font(false); this.reload_font();
end end
if modules_changed or global_settings_changed or small_monster_UI_changed or large_monster_dynamic_UI_changed or if modules_changed or global_settings_changed or small_monster_UI_changed or large_monster_dynamic_UI_changed or
@@ -823,6 +874,7 @@ function this.draw_global_settings(apply_font_requested, language_changed)
if changed then if changed then
cached_config.language = language.language_names[index]; cached_config.language = language.language_names[index];
language.update(index); language.update(index);
part_names.init();
this.init(); this.init();
language_changed = true; language_changed = true;
@@ -2278,7 +2330,7 @@ function this.init_module()
module_visibility_customization = require("MHR_Overlay.UI.Customizations.module_visibility_customization"); module_visibility_customization = require("MHR_Overlay.UI.Customizations.module_visibility_customization");
this.init(); this.init();
this.reload_font(false); this.reload_font();
end end
return this; return this;

View File

@@ -167,7 +167,6 @@ function this.draw_label(label, position, opacity_scale, ...)
end end
function this.draw_bar(bar, position, opacity_scale, percentage) function this.draw_bar(bar, position, opacity_scale, percentage)
if bar == nil or not bar.visibility then if bar == nil or not bar.visibility then
return; return;
end end
@@ -182,6 +181,7 @@ function this.draw_bar(bar, position, opacity_scale, percentage)
local outline_visibility = bar.outline.visibility; local outline_visibility = bar.outline.visibility;
local style = bar.outline.style; -- Inside/Center/Outside local style = bar.outline.style; -- Inside/Center/Outside
local fill_direction = bar.settings.fill_direction; -- Left to Right/Right to Left/Top to Bottom/Bottom to Top
local outline_thickness = bar.outline.thickness; local outline_thickness = bar.outline.thickness;
if not outline_visibility then if not outline_visibility then
@@ -206,10 +206,21 @@ function this.draw_bar(bar, position, opacity_scale, percentage)
local position_x = 0; local position_x = 0;
local position_y = 0; local position_y = 0;
local foreground_width = 0; local width = 0;
local background_width = 0;
local height = 0; local height = 0;
local foreground_width = 0;
local foreground_height = 0;
local background_width = 0;
local background_height = 0;
local foreground_shift_x = 0;
local foreground_shift_y = 0;
local background_shift_x = 0;
local background_shift_y = 0;
if style == "Inside" then if style == "Inside" then
outline_position_x = position.x + bar.offset.x + half_outline_thickness; outline_position_x = position.x + bar.offset.x + half_outline_thickness;
outline_position_y = position.y + bar.offset.y + half_outline_thickness; outline_position_y = position.y + bar.offset.y + half_outline_thickness;
@@ -220,10 +231,7 @@ function this.draw_bar(bar, position, opacity_scale, percentage)
position_x = outline_position_x + half_outline_thickness + outline_offset; position_x = outline_position_x + half_outline_thickness + outline_offset;
position_y = outline_position_y + half_outline_thickness + outline_offset; position_y = outline_position_y + half_outline_thickness + outline_offset;
local width = outline_width - outline_thickness - outline_offset - outline_offset; width = outline_width - outline_thickness - outline_offset - outline_offset;
foreground_width = width * percentage;
background_width = width - foreground_width;
height = outline_height - outline_thickness - outline_offset - outline_offset; height = outline_height - outline_thickness - outline_offset - outline_offset;
elseif style == "Center" then elseif style == "Center" then
@@ -236,22 +244,16 @@ function this.draw_bar(bar, position, opacity_scale, percentage)
position_x = outline_position_x + half_outline_thickness + outline_offset; position_x = outline_position_x + half_outline_thickness + outline_offset;
position_y = outline_position_y + half_outline_thickness + outline_offset; position_y = outline_position_y + half_outline_thickness + outline_offset;
local width = outline_width - outline_thickness - outline_offset - outline_offset; width = outline_width - outline_thickness - outline_offset - outline_offset;
foreground_width = width * percentage;
background_width = width - foreground_width;
height = outline_height - outline_thickness - outline_offset - outline_offset; height = outline_height - outline_thickness - outline_offset - outline_offset;
else else -- Outside
position_x = position.x + bar.offset.x; position_x = position.x + bar.offset.x;
position_y = position.y + bar.offset.y; position_y = position.y + bar.offset.y;
local width = bar.size.width; width = bar.size.width;
height = bar.size.height; height = bar.size.height;
foreground_width = width * percentage;
background_width = width - foreground_width;
outline_position_x = position_x - half_outline_thickness - outline_offset; outline_position_x = position_x - half_outline_thickness - outline_offset;
outline_position_y = position_y - half_outline_thickness - outline_offset; outline_position_y = position_y - half_outline_thickness - outline_offset;
@@ -259,6 +261,43 @@ function this.draw_bar(bar, position, opacity_scale, percentage)
outline_height = height + outline_thickness + outline_offset + outline_offset; outline_height = height + outline_thickness + outline_offset + outline_offset;
end end
if fill_direction == "Right to Left" then
foreground_width = width * percentage;
foreground_height = height;
background_width = width - foreground_width;
background_height = height;
foreground_shift_x = background_width;
elseif fill_direction == "Top to Bottom" then
foreground_width = width;
foreground_height = height * percentage;
background_width = width;
background_height = height - foreground_height;
background_shift_y = foreground_height;
elseif fill_direction == "Bottom to Top" then
foreground_width = width;
foreground_height = height * percentage;
background_width = width;
background_height = height - foreground_height;
foreground_shift_y = background_height;
else -- Left to Right
foreground_width = width * percentage;
foreground_height = height;
background_width = width - foreground_width;
background_height = height;
background_shift_x = foreground_width;
end
local foreground_color = bar.colors.foreground; local foreground_color = bar.colors.foreground;
local background_color = bar.colors.background; local background_color = bar.colors.background;
local outline_color = bar.colors.outline; local outline_color = bar.colors.outline;
@@ -271,35 +310,33 @@ function this.draw_bar(bar, position, opacity_scale, percentage)
local use_d2d = d2d ~= nil and config.current_config.global_settings.renderer.use_d2d_if_available; local use_d2d = d2d ~= nil and config.current_config.global_settings.renderer.use_d2d_if_available;
-- outline -- background
if outline_thickness ~= 0 then if background_width ~= 0 then
if use_d2d then if use_d2d then
d2d.outline_rect(outline_position_x, outline_position_y, outline_width, outline_height, outline_thickness, d2d.fill_rect(position_x + background_shift_x, position_y + background_shift_y, background_width, background_height, background_color);
outline_color);
else else
outline_color = this.argb_color_to_abgr_color(outline_color); background_color = this.argb_color_to_abgr_color(background_color);
draw.outline_rect(outline_position_x, outline_position_y, outline_width, outline_height, outline_color); draw.filled_rect(position_x + background_shift_x, position_y + background_shift_y, background_width, background_height, background_color)
end end
end end
-- foreground -- foreground
if foreground_width ~= 0 then if foreground_width ~= 0 then
if use_d2d then if use_d2d then
d2d.fill_rect(position_x, position_y, foreground_width, height, foreground_color); d2d.fill_rect(position_x + foreground_shift_x, position_y + foreground_shift_y, foreground_width, foreground_height, foreground_color);
else else
foreground_color = this.argb_color_to_abgr_color(foreground_color); foreground_color = this.argb_color_to_abgr_color(foreground_color);
draw.filled_rect(position_x, position_y, foreground_width, height, foreground_color) draw.filled_rect(position_x + foreground_shift_x, position_y + foreground_shift_y, foreground_width, foreground_height, foreground_color)
end end
end end
-- background -- outline
if background_width ~= 0 then if outline_thickness ~= 0 then
if use_d2d then if use_d2d then
d2d.fill_rect(position_x + foreground_width, position_y, background_width, height, background_color); d2d.outline_rect(outline_position_x, outline_position_y, outline_width, outline_height, outline_thickness, outline_color);
else else
background_color = this.argb_color_to_abgr_color(background_color); outline_color = this.argb_color_to_abgr_color(outline_color);
draw.filled_rect(position_x + foreground_width, position_y, background_width, height, background_color) draw.outline_rect(outline_position_x, outline_position_y, outline_width, outline_height, outline_color);
end end
end end
end end

View File

@@ -59,6 +59,7 @@
"bomb_damage": "Bomb Damage", "bomb_damage": "Bomb Damage",
"bottom_left": "Bottom-Left", "bottom_left": "Bottom-Left",
"bottom_right": "Bottom-Right", "bottom_right": "Bottom-Right",
"bottom_to_top": "Bottom to Top",
"break_count": "Break Count", "break_count": "Break Count",
"break_filter": "Break", "break_filter": "Break",
"break_health": "Break Health", "break_health": "Break Health",
@@ -109,6 +110,7 @@
"family": "Family", "family": "Family",
"farthest": "Farthest", "farthest": "Farthest",
"fight_time": "Fight Time", "fight_time": "Fight Time",
"fill_direction": "Fill Direction",
"filter": "Filter", "filter": "Filter",
"filter_mode": "Filter Mode", "filter_mode": "Filter Mode",
"first": "First", "first": "First",
@@ -171,6 +173,7 @@
"large_monster_static_UI": "Large Monster Static UI", "large_monster_static_UI": "Large Monster Static UI",
"large_monsters": "Large Monsters", "large_monsters": "Large Monsters",
"last": "Last", "last": "Last",
"left_to_right": "Left to Right",
"level": "Level", "level": "Level",
"level_label": "Level Label", "level_label": "Level Label",
"loading_quest": "Loading Quest", "loading_quest": "Loading Quest",
@@ -242,6 +245,7 @@
"reset": "Reset", "reset": "Reset",
"reversed_order": "Reversed Order", "reversed_order": "Reversed Order",
"reward_screen": "Reward Screen", "reward_screen": "Reward Screen",
"right_to_left": "Right to Left",
"servant_otomos": "Servant Buddies", "servant_otomos": "Servant Buddies",
"servants": "Followers", "servants": "Followers",
"settings": "Settings", "settings": "Settings",
@@ -276,6 +280,7 @@
"top_dps": "Top DPS", "top_dps": "Top DPS",
"top_left": "Top-Left", "top_left": "Top-Left",
"top_right": "Top-Right", "top_right": "Top-Right",
"top_to_bottom": "Top to Bottom",
"total": "Total", "total": "Total",
"total_buildup": "Total Buildup", "total_buildup": "Total Buildup",
"total_buildup_label": "Total Buildup Label", "total_buildup_label": "Total Buildup Label",
@@ -303,7 +308,7 @@
"y": "Y", "y": "Y",
"z": "Z" "z": "Z"
}, },
"font_name": "NotoSansKR-Bold.otf", "font_name": "",
"parts": { "parts": {
"abdomen": "Abdomen", "abdomen": "Abdomen",
"amatsu_unknown": "?", "amatsu_unknown": "?",
@@ -372,5 +377,8 @@
"wingclaw": "Wingclaw", "wingclaw": "Wingclaw",
"wingclaws": "Wingclaws", "wingclaws": "Wingclaws",
"wings": "Wings" "wings": "Wings"
} },
"unicode_glyph_ranges": [
0
]
} }

View File

@@ -59,6 +59,7 @@
"bomb_damage": "爆弾ダメージ", "bomb_damage": "爆弾ダメージ",
"bottom_left": "左下", "bottom_left": "左下",
"bottom_right": "右下", "bottom_right": "右下",
"bottom_to_top": "Bottom to Top",
"break_count": "破壊時間", "break_count": "破壊時間",
"break_filter": "Break", "break_filter": "Break",
"break_health": "部位破壊までのダメージ状況", "break_health": "部位破壊までのダメージ状況",
@@ -109,6 +110,7 @@
"family": "Family", "family": "Family",
"farthest": "Farthest", "farthest": "Farthest",
"fight_time": "戦闘時間", "fight_time": "戦闘時間",
"fill_direction": "Fill Direction",
"filter": "フィルター", "filter": "フィルター",
"filter_mode": "Filter Mode", "filter_mode": "Filter Mode",
"first": "最初", "first": "最初",
@@ -171,6 +173,7 @@
"large_monster_static_UI": "大型モンスターのスタティック表示UI", "large_monster_static_UI": "大型モンスターのスタティック表示UI",
"large_monsters": "大型モンスター", "large_monsters": "大型モンスター",
"last": "最後", "last": "最後",
"left_to_right": "Left to Right",
"level": "Level", "level": "Level",
"level_label": "Level Label", "level_label": "Level Label",
"loading_quest": "Loading Quest", "loading_quest": "Loading Quest",
@@ -242,6 +245,7 @@
"reset": "Reset", "reset": "Reset",
"reversed_order": "逆順", "reversed_order": "逆順",
"reward_screen": "Reward Screen", "reward_screen": "Reward Screen",
"right_to_left": "Right to Left",
"servant_otomos": "Servant Buddies", "servant_otomos": "Servant Buddies",
"servants": "Followers", "servants": "Followers",
"settings": "設定", "settings": "設定",
@@ -276,6 +280,7 @@
"top_dps": "最高DPS", "top_dps": "最高DPS",
"top_left": "左上", "top_left": "左上",
"top_right": "右上", "top_right": "右上",
"top_to_bottom": "Top to Bottom",
"total": "Total", "total": "Total",
"total_buildup": "蓄積合計", "total_buildup": "蓄積合計",
"total_buildup_label": "合計蓄積ラベル", "total_buildup_label": "合計蓄積ラベル",
@@ -372,5 +377,20 @@
"wingclaw": "翼爪", "wingclaw": "翼爪",
"wingclaws": "Wingclaws", "wingclaws": "Wingclaws",
"wings": "翼" "wings": "翼"
} },
"unicode_glyph_ranges": [
32,
255,
8192,
8303,
12288,
12543,
12784,
12799,
19968,
40879,
65280,
65519,
0
]
} }

View File

@@ -59,6 +59,7 @@
"bomb_damage": "폭탄 대미지", "bomb_damage": "폭탄 대미지",
"bottom_left": "좌하단", "bottom_left": "좌하단",
"bottom_right": "우하단", "bottom_right": "우하단",
"bottom_to_top": "Bottom to Top",
"break_count": "파괴 횟수", "break_count": "파괴 횟수",
"break_filter": "파괴", "break_filter": "파괴",
"break_health": "파괴 수치", "break_health": "파괴 수치",
@@ -109,6 +110,7 @@
"family": "글꼴", "family": "글꼴",
"farthest": "가장 멀리있는", "farthest": "가장 멀리있는",
"fight_time": "전투 시간", "fight_time": "전투 시간",
"fill_direction": "Fill Direction",
"filter": "필터", "filter": "필터",
"filter_mode": "Filter Mode", "filter_mode": "Filter Mode",
"first": "맨 앞", "first": "맨 앞",
@@ -171,6 +173,7 @@
"large_monster_static_UI": "대형 몬스터 고정 UI", "large_monster_static_UI": "대형 몬스터 고정 UI",
"large_monsters": "대형 몬스터", "large_monsters": "대형 몬스터",
"last": "맨 뒤", "last": "맨 뒤",
"left_to_right": "Left to Right",
"level": "레벨", "level": "레벨",
"level_label": "레벨 정보", "level_label": "레벨 정보",
"loading_quest": "퀘스트 로딩 중", "loading_quest": "퀘스트 로딩 중",
@@ -242,6 +245,7 @@
"reset": "리셋", "reset": "리셋",
"reversed_order": "역순", "reversed_order": "역순",
"reward_screen": "보상 화면", "reward_screen": "보상 화면",
"right_to_left": "Right to Left",
"servant_otomos": "맹우 동반자", "servant_otomos": "맹우 동반자",
"servants": "맹우", "servants": "맹우",
"settings": "설정", "settings": "설정",
@@ -276,6 +280,7 @@
"top_dps": "최고 DPS", "top_dps": "최고 DPS",
"top_left": "좌상단", "top_left": "좌상단",
"top_right": "우상단", "top_right": "우상단",
"top_to_bottom": "Top to Bottom",
"total": "전체", "total": "전체",
"total_buildup": "총 누적치", "total_buildup": "총 누적치",
"total_buildup_label": "총 누적치 정보", "total_buildup_label": "총 누적치 정보",
@@ -372,5 +377,20 @@
"wingclaw": "날개발톱", "wingclaw": "날개발톱",
"wingclaws": "날개발톱", "wingclaws": "날개발톱",
"wings": "날개" "wings": "날개"
} },
"unicode_glyph_ranges": [
32,
255,
4352,
4607,
8192,
8303,
12592,
12687,
44032,
55215,
65280,
65519,
0
]
} }

View File

@@ -59,6 +59,7 @@
"bomb_damage": "Урон от бомб", "bomb_damage": "Урон от бомб",
"bottom_left": "Левый нижний угол", "bottom_left": "Левый нижний угол",
"bottom_right": "Правй нижний угол", "bottom_right": "Правй нижний угол",
"bottom_to_top": "Снизу вверх",
"break_count": "Счётчик повреждений", "break_count": "Счётчик повреждений",
"break_filter": "Повреждение", "break_filter": "Повреждение",
"break_health": "Повреждение части", "break_health": "Повреждение части",
@@ -109,6 +110,7 @@
"family": "Семейство", "family": "Семейство",
"farthest": "Самый дальний", "farthest": "Самый дальний",
"fight_time": "Время в бою", "fight_time": "Время в бою",
"fill_direction": "Направление заполнения",
"filter": "Фильтр", "filter": "Фильтр",
"filter_mode": "Режим Фильтра", "filter_mode": "Режим Фильтра",
"first": "Первый", "first": "Первый",
@@ -171,6 +173,7 @@
"large_monster_static_UI": "Статический интерфейс больших монстров", "large_monster_static_UI": "Статический интерфейс больших монстров",
"large_monsters": "Большие монстры", "large_monsters": "Большие монстры",
"last": "Последний", "last": "Последний",
"left_to_right": "Слева направо",
"level": "Уровень", "level": "Уровень",
"level_label": "Метка уровня", "level_label": "Метка уровня",
"loading_quest": "Загрузка квеста", "loading_quest": "Загрузка квеста",
@@ -242,6 +245,7 @@
"reset": "Сбросить", "reset": "Сбросить",
"reversed_order": "Обратный порядок", "reversed_order": "Обратный порядок",
"reward_screen": "Экран наград", "reward_screen": "Экран наград",
"right_to_left": "Справа налево",
"servant_otomos": "Спутники последователей", "servant_otomos": "Спутники последователей",
"servants": "Последователи", "servants": "Последователи",
"settings": "Настройки", "settings": "Настройки",
@@ -276,6 +280,7 @@
"top_dps": "Наибольший урон в секунду", "top_dps": "Наибольший урон в секунду",
"top_left": "Левый верхний угол", "top_left": "Левый верхний угол",
"top_right": "Правый верхний угол", "top_right": "Правый верхний угол",
"top_to_bottom": "Сверху вниз",
"total": "Всего", "total": "Всего",
"total_buildup": "Общее накопление", "total_buildup": "Общее накопление",
"total_buildup_label": "Метка общего накопления", "total_buildup_label": "Метка общего накопления",
@@ -372,5 +377,16 @@
"wingclaw": "Крыло-коготь", "wingclaw": "Крыло-коготь",
"wingclaws": "Крыло-коготь", "wingclaws": "Крыло-коготь",
"wings": "Крылья" "wings": "Крылья"
} },
"unicode_glyph_ranges": [
32,
255,
1024,
1241,
8192,
8303,
65280,
65519,
0
]
} }

View File

@@ -59,6 +59,7 @@
"bomb_damage": "爆弹桶伤害", "bomb_damage": "爆弹桶伤害",
"bottom_left": "左下", "bottom_left": "左下",
"bottom_right": "右下", "bottom_right": "右下",
"bottom_to_top": "Bottom to Top",
"break_count": "破坏次数", "break_count": "破坏次数",
"break_filter": "破坏", "break_filter": "破坏",
"break_health": "破坏值", "break_health": "破坏值",
@@ -109,6 +110,7 @@
"family": "字体", "family": "字体",
"farthest": "最远", "farthest": "最远",
"fight_time": "战斗时间", "fight_time": "战斗时间",
"fill_direction": "Fill Direction",
"filter": "筛选器", "filter": "筛选器",
"filter_mode": "筛选方式", "filter_mode": "筛选方式",
"first": "第一", "first": "第一",
@@ -171,6 +173,7 @@
"large_monster_static_UI": "大型怪物固定UI", "large_monster_static_UI": "大型怪物固定UI",
"large_monsters": "大型怪物群", "large_monsters": "大型怪物群",
"last": "最后", "last": "最后",
"left_to_right": "Left to Right",
"level": "等级", "level": "等级",
"level_label": "等级标签", "level_label": "等级标签",
"loading_quest": "任务加载中", "loading_quest": "任务加载中",
@@ -242,6 +245,7 @@
"reset": "重置", "reset": "重置",
"reversed_order": "逆向排序", "reversed_order": "逆向排序",
"reward_screen": "奖励界面", "reward_screen": "奖励界面",
"right_to_left": "Right to Left",
"servant_otomos": "盟友随从", "servant_otomos": "盟友随从",
"servants": "盟友", "servants": "盟友",
"settings": "设定", "settings": "设定",
@@ -276,6 +280,7 @@
"top_dps": "最高DPS", "top_dps": "最高DPS",
"top_left": "左上", "top_left": "左上",
"top_right": "右上", "top_right": "右上",
"top_to_bottom": "Top to Bottom",
"total": "总计", "total": "总计",
"total_buildup": "总积累值", "total_buildup": "总积累值",
"total_buildup_label": "总积累值标签", "total_buildup_label": "总积累值标签",
@@ -372,5 +377,20 @@
"wingclaw": "翼爪", "wingclaw": "翼爪",
"wingclaws": "翼爪", "wingclaws": "翼爪",
"wings": "翼" "wings": "翼"
} },
"unicode_glyph_ranges": [
32,
255,
8192,
8303,
12288,
12543,
12784,
12799,
19968,
40879,
65280,
65519,
0
]
} }

View File

@@ -59,6 +59,7 @@
"bomb_damage": "爆炸傷害", "bomb_damage": "爆炸傷害",
"bottom_left": "左下", "bottom_left": "左下",
"bottom_right": "右下", "bottom_right": "右下",
"bottom_to_top": "Bottom to Top",
"break_count": "破壞次數", "break_count": "破壞次數",
"break_filter": "Break", "break_filter": "Break",
"break_health": "Break Health", "break_health": "Break Health",
@@ -109,6 +110,7 @@
"family": "字體", "family": "字體",
"farthest": "最遠的", "farthest": "最遠的",
"fight_time": "戰鬥時間", "fight_time": "戰鬥時間",
"fill_direction": "Fill Direction",
"filter": "篩選器", "filter": "篩選器",
"filter_mode": "Filter Mode", "filter_mode": "Filter Mode",
"first": "第一", "first": "第一",
@@ -171,6 +173,7 @@
"large_monster_static_UI": "大型魔物固定 UI", "large_monster_static_UI": "大型魔物固定 UI",
"large_monsters": "大型魔物群", "large_monsters": "大型魔物群",
"last": "最後", "last": "最後",
"left_to_right": "Left to Right",
"level": "Level", "level": "Level",
"level_label": "Level Label", "level_label": "Level Label",
"loading_quest": "Loading Quest", "loading_quest": "Loading Quest",
@@ -242,6 +245,7 @@
"reset": "Reset", "reset": "Reset",
"reversed_order": "反向排序", "reversed_order": "反向排序",
"reward_screen": "Reward Screen", "reward_screen": "Reward Screen",
"right_to_left": "Right to Left",
"servant_otomos": "Servant Buddies", "servant_otomos": "Servant Buddies",
"servants": "Followers", "servants": "Followers",
"settings": "設定", "settings": "設定",
@@ -276,6 +280,7 @@
"top_dps": "最高 DPS", "top_dps": "最高 DPS",
"top_left": "左上", "top_left": "左上",
"top_right": "右上", "top_right": "右上",
"top_to_bottom": "Top to Bottom",
"total": "Total", "total": "Total",
"total_buildup": "總累積值", "total_buildup": "總累積值",
"total_buildup_label": "總累積值文字", "total_buildup_label": "總累積值文字",
@@ -372,5 +377,20 @@
"wingclaw": "翼爪", "wingclaw": "翼爪",
"wingclaws": "翼爪", "wingclaws": "翼爪",
"wings": "翅膀" "wings": "翅膀"
} },
"unicode_glyph_ranges": [
32,
255,
8192,
8303,
12288,
12543,
12784,
12799,
19968,
40879,
65280,
65519,
0
]
} }