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 package = package;
local debug = require("MHR_Overlay.Misc.debug");
local keyboard = require("MHR_Overlay.Game_Handler.keyboard");
local quest_status = require("MHR_Overlay.Game_Handler.quest_status");
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 ailment_buildups_customization = require("MHR_Overlay.UI.Customizations.ailment_buildups_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 drawing = require("MHR_Overlay.UI.drawing");
if debug ~= nil and debug.enabled then
xy = "";
end
------------------------INIT MODULES-------------------------
-- #region
screen.init_module();
@@ -135,7 +128,6 @@ small_monster.init_module();
ailment_hook.init_module();
ailment_buildup.init_module();
customization_menu.init_module();
label_customization.init_module();
bar_customization.init_module();
line_customization.init_module();
@@ -150,6 +142,7 @@ body_parts_customization.init_module();
ailments_customization.init_module();
ailment_buildups_customization.init_module();
module_visibility_customization.init_module();
customization_menu.init_module();
drawing.init_module();
@@ -337,33 +330,6 @@ end);
-- #endregion
----------------------------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
re.msg(language.current_language.customization_menu.reframework_outdated);
end

View File

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

View File

@@ -215,6 +215,14 @@ function this.number.round(value)
return math.floor(value + 0.5);
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)
return str:match("^%s*(.-)%s*$");
end

View File

@@ -11,6 +11,7 @@ local screen;
local drawing;
local part_names;
local time;
local utils;
local sdk = sdk;
local tostring = tostring;
@@ -73,6 +74,12 @@ function this.new(id, name)
return part;
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)
if part_current > part.health then
part.flinch_count = part.flinch_count + 1;
@@ -352,6 +359,7 @@ function this.init_module()
drawing = require("MHR_Overlay.UI.drawing");
part_names = require("MHR_Overlay.Misc.part_names");
time = require("MHR_Overlay.Game_Handler.time");
utils = require("MHR_Overlay.Misc.utils");
end
return this;

View File

@@ -337,6 +337,7 @@ function this.init_UI(monster, monster_UI, cached_config)
);
ailments.init_ailment_names(monster.ailments);
body_part.init_part_names(monster.id, monster.parts);
end
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;
end
for i = 0, enemy_parts_info_array_length - 1 do
local part_id = i + 1;
@@ -744,7 +744,7 @@ function this.update_parts(enemy, monster, physical_param)
if part == nil then
local part_name = part_names.get_part_name(monster.id, part_id);
if part_name == nil then
goto continue
goto continue;
else
part = body_part.new(part_id, part_name);
monster.parts[part_id] = part;

View File

@@ -47,6 +47,61 @@ local os = os;
local ValueType = ValueType;
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)
local 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
changed, index = imgui.combo(
language.current_language.customization_menu.highlighted_bar,
utils.table.find_index(customization_menu.highlighted_buildup_bar_types, cached_config.settings.highlighted_bar),
customization_menu.displayed_highlighted_buildup_bar_types);
utils.table.find_index(this.highlighted_buildup_bar_types, cached_config.settings.highlighted_bar),
this.displayed_highlighted_buildup_bar_types);
config_changed = config_changed or changed;
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
changed, index = imgui.combo(
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),
customization_menu.displayed_buildup_bar_relative_types);
utils.table.find_index(this.displayed_buildup_bar_relative_types, cached_config.settings.buildup_bar_relative_to),
this.displayed_buildup_bar_relative_types);
config_changed = config_changed or changed;
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
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
changed, index = imgui.combo(
language.current_language.customization_menu.type,
utils.table.find_index(customization_menu.ailment_buildups_sorting_types, cached_config.sorting.type),
customization_menu.displayed_ailment_buildups_sorting_types);
utils.table.find_index(this.ailment_buildups_sorting_types, cached_config.sorting.type),
this.displayed_ailment_buildups_sorting_types);
config_changed = config_changed or changed;
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
changed, cached_config.sorting.reversed_order = imgui.checkbox(

View File

@@ -47,6 +47,27 @@ local os = os;
local ValueType = ValueType;
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)
local 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
changed, index = imgui.combo(
language.current_language.customization_menu.type,
utils.table.find_index(customization_menu.ailments_sorting_types, cached_config.sorting.type),
customization_menu.displayed_ailments_sorting_types);
utils.table.find_index(this.ailments_sorting_types, cached_config.sorting.type),
this.displayed_ailments_sorting_types);
config_changed = config_changed or changed;
if changed then
cached_config.sorting.type = customization_menu.ailments_sorting_types[index];
cached_config.sorting.type = this.ailments_sorting_types[index];
end
changed, cached_config.sorting.reversed_order = imgui.checkbox(

View File

@@ -46,72 +46,124 @@ local os = os;
local ValueType = ValueType;
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)
if bar == nil then
return false;
end
local cached_language = language.current_language.customization_menu;
local bar_changed = false;
local changed = false;
local index = 1;
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_changed = bar_changed or changed;
if imgui.tree_node(language.current_language.customization_menu.offset) then
changed, bar.offset.x = imgui.drag_float(language.current_language.customization_menu.x,
if imgui.tree_node(cached_language.settings) then
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_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_changed = bar_changed or changed;
imgui.tree_pop();
end
if imgui.tree_node(language.current_language.customization_menu.size) then
changed, bar.size.width = imgui.drag_float(language.current_language.customization_menu.width,
if imgui.tree_node(cached_language.size) then
changed, bar.size.width = imgui.drag_float(cached_language.width,
bar.size.width, 0.1, 0, screen.width, "%.1f");
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_changed = bar_changed or changed;
imgui.tree_pop();
end
if imgui.tree_node(language.current_language.customization_menu.outline) then
changed, bar.outline.visibility = imgui.checkbox(language.current_language.customization_menu.visible
if imgui.tree_node(cached_language.outline) then
changed, bar.outline.visibility = imgui.checkbox(cached_language.visible
, bar.outline.visibility);
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_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_changed = bar_changed or changed;
changed, index = imgui.combo(language.current_language.customization_menu.style,
utils.table.find_index(customization_menu.outline_styles,
changed, index = imgui.combo(cached_language.style,
utils.table.find_index(this.outline_styles,
bar.outline.style),
customization_menu.displayed_outline_styles);
this.displayed_outline_styles);
bar_changed = bar_changed or changed;
if changed then
bar.outline.style = customization_menu.outline_styles[index];
bar.outline.style = this.outline_styles[index];
end
imgui.tree_pop();
end
if imgui.tree_node(language.current_language.customization_menu.colors) then
if imgui.tree_node(cached_language.colors) then
local colors = nil;
if bar.colors ~= nil then
colors = bar.colors;
@@ -119,7 +171,7 @@ function this.draw(bar_name, bar)
colors = bar.normal_colors;
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,
customization_menu.color_picker_flags);
bar_changed = bar_changed or changed;
@@ -127,7 +179,7 @@ function this.draw(bar_name, bar)
imgui.tree_pop();
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,
customization_menu.color_picker_flags);
bar_changed = bar_changed or changed;
@@ -135,7 +187,7 @@ function this.draw(bar_name, bar)
imgui.tree_pop();
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,
customization_menu.color_picker_flags);
bar_changed = bar_changed or changed;
@@ -144,8 +196,8 @@ function this.draw(bar_name, bar)
end
if bar.capture_colors ~= nil then
if imgui.tree_node(language.current_language.customization_menu.monster_can_be_captured) then
if imgui.tree_node(language.current_language.customization_menu.foreground) then
if imgui.tree_node(cached_language.monster_can_be_captured) then
if imgui.tree_node(cached_language.foreground) then
changed, bar.capture_colors.foreground = imgui.color_picker_argb("",
bar.capture_colors.foreground
,
@@ -155,7 +207,7 @@ function this.draw(bar_name, bar)
imgui.tree_pop();
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("",
bar.capture_colors.background
,
@@ -165,7 +217,7 @@ function this.draw(bar_name, bar)
imgui.tree_pop();
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("",
bar.capture_colors.outline
,
@@ -182,7 +234,7 @@ function this.draw(bar_name, bar)
imgui.tree_pop();
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;
imgui.tree_pop();

View File

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

View File

@@ -167,7 +167,6 @@ function this.draw_label(label, position, opacity_scale, ...)
end
function this.draw_bar(bar, position, opacity_scale, percentage)
if bar == nil or not bar.visibility then
return;
end
@@ -182,6 +181,7 @@ function this.draw_bar(bar, position, opacity_scale, percentage)
local outline_visibility = bar.outline.visibility;
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;
if not outline_visibility then
@@ -206,10 +206,21 @@ function this.draw_bar(bar, position, opacity_scale, percentage)
local position_x = 0;
local position_y = 0;
local foreground_width = 0;
local background_width = 0;
local width = 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
outline_position_x = position.x + bar.offset.x + 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_y = outline_position_y + half_outline_thickness + outline_offset;
local width = outline_width - outline_thickness - outline_offset - outline_offset;
foreground_width = width * percentage;
background_width = width - foreground_width;
width = outline_width - outline_thickness - outline_offset - outline_offset;
height = outline_height - outline_thickness - outline_offset - outline_offset;
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_y = outline_position_y + half_outline_thickness + outline_offset;
local width = outline_width - outline_thickness - outline_offset - outline_offset;
foreground_width = width * percentage;
background_width = width - foreground_width;
width = outline_width - 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_y = position.y + bar.offset.y;
local width = bar.size.width;
width = bar.size.width;
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_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;
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 background_color = bar.colors.background;
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;
-- outline
if outline_thickness ~= 0 then
-- background
if background_width ~= 0 then
if use_d2d then
d2d.outline_rect(outline_position_x, outline_position_y, outline_width, outline_height, outline_thickness,
outline_color);
d2d.fill_rect(position_x + background_shift_x, position_y + background_shift_y, background_width, background_height, background_color);
else
outline_color = this.argb_color_to_abgr_color(outline_color);
draw.outline_rect(outline_position_x, outline_position_y, outline_width, outline_height, outline_color);
background_color = this.argb_color_to_abgr_color(background_color);
draw.filled_rect(position_x + background_shift_x, position_y + background_shift_y, background_width, background_height, background_color)
end
end
-- foreground
if foreground_width ~= 0 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
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
-- background
if background_width ~= 0 then
-- outline
if outline_thickness ~= 0 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
background_color = this.argb_color_to_abgr_color(background_color);
draw.filled_rect(position_x + foreground_width, position_y, background_width, height, background_color)
outline_color = this.argb_color_to_abgr_color(outline_color);
draw.outline_rect(outline_position_x, outline_position_y, outline_width, outline_height, outline_color);
end
end
end

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_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": "Large Monster Static 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 Buddies",
"servants": "Followers",
"settings": "Settings",
@@ -276,6 +280,7 @@
"top_dps": "Top 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",
@@ -303,7 +308,7 @@
"y": "Y",
"z": "Z"
},
"font_name": "NotoSansKR-Bold.otf",
"font_name": "",
"parts": {
"abdomen": "Abdomen",
"amatsu_unknown": "?",
@@ -372,5 +377,8 @@
"wingclaw": "Wingclaw",
"wingclaws": "Wingclaws",
"wings": "Wings"
}
},
"unicode_glyph_ranges": [
0
]
}

View File

@@ -59,6 +59,7 @@
"bomb_damage": "爆弾ダメージ",
"bottom_left": "左下",
"bottom_right": "右下",
"bottom_to_top": "Bottom to Top",
"break_count": "破壊時間",
"break_filter": "Break",
"break_health": "部位破壊までのダメージ状況",
@@ -109,6 +110,7 @@
"family": "Family",
"farthest": "Farthest",
"fight_time": "戦闘時間",
"fill_direction": "Fill Direction",
"filter": "フィルター",
"filter_mode": "Filter Mode",
"first": "最初",
@@ -171,6 +173,7 @@
"large_monster_static_UI": "大型モンスターのスタティック表示UI",
"large_monsters": "大型モンスター",
"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": "逆順",
"reward_screen": "Reward Screen",
"right_to_left": "Right to Left",
"servant_otomos": "Servant Buddies",
"servants": "Followers",
"settings": "設定",
@@ -276,6 +280,7 @@
"top_dps": "最高DPS",
"top_left": "左上",
"top_right": "右上",
"top_to_bottom": "Top to Bottom",
"total": "Total",
"total_buildup": "蓄積合計",
"total_buildup_label": "合計蓄積ラベル",
@@ -372,5 +377,20 @@
"wingclaw": "翼爪",
"wingclaws": "Wingclaws",
"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": "폭탄 대미지",
"bottom_left": "좌하단",
"bottom_right": "우하단",
"bottom_to_top": "Bottom to Top",
"break_count": "파괴 횟수",
"break_filter": "파괴",
"break_health": "파괴 수치",
@@ -109,6 +110,7 @@
"family": "글꼴",
"farthest": "가장 멀리있는",
"fight_time": "전투 시간",
"fill_direction": "Fill Direction",
"filter": "필터",
"filter_mode": "Filter Mode",
"first": "맨 앞",
@@ -171,6 +173,7 @@
"large_monster_static_UI": "대형 몬스터 고정 UI",
"large_monsters": "대형 몬스터",
"last": "맨 뒤",
"left_to_right": "Left to Right",
"level": "레벨",
"level_label": "레벨 정보",
"loading_quest": "퀘스트 로딩 중",
@@ -242,6 +245,7 @@
"reset": "리셋",
"reversed_order": "역순",
"reward_screen": "보상 화면",
"right_to_left": "Right to Left",
"servant_otomos": "맹우 동반자",
"servants": "맹우",
"settings": "설정",
@@ -276,6 +280,7 @@
"top_dps": "최고 DPS",
"top_left": "좌상단",
"top_right": "우상단",
"top_to_bottom": "Top to Bottom",
"total": "전체",
"total_buildup": "총 누적치",
"total_buildup_label": "총 누적치 정보",
@@ -372,5 +377,20 @@
"wingclaw": "날개발톱",
"wingclaws": "날개발톱",
"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": "Урон от бомб",
"bottom_left": "Левый нижний угол",
"bottom_right": "Правй нижний угол",
"bottom_to_top": "Снизу вверх",
"break_count": "Счётчик повреждений",
"break_filter": "Повреждение",
"break_health": "Повреждение части",
@@ -109,6 +110,7 @@
"family": "Семейство",
"farthest": "Самый дальний",
"fight_time": "Время в бою",
"fill_direction": "Направление заполнения",
"filter": "Фильтр",
"filter_mode": "Режим Фильтра",
"first": "Первый",
@@ -171,6 +173,7 @@
"large_monster_static_UI": "Статический интерфейс больших монстров",
"large_monsters": "Большие монстры",
"last": "Последний",
"left_to_right": "Слева направо",
"level": "Уровень",
"level_label": "Метка уровня",
"loading_quest": "Загрузка квеста",
@@ -242,6 +245,7 @@
"reset": "Сбросить",
"reversed_order": "Обратный порядок",
"reward_screen": "Экран наград",
"right_to_left": "Справа налево",
"servant_otomos": "Спутники последователей",
"servants": "Последователи",
"settings": "Настройки",
@@ -276,6 +280,7 @@
"top_dps": "Наибольший урон в секунду",
"top_left": "Левый верхний угол",
"top_right": "Правый верхний угол",
"top_to_bottom": "Сверху вниз",
"total": "Всего",
"total_buildup": "Общее накопление",
"total_buildup_label": "Метка общего накопления",
@@ -372,5 +377,16 @@
"wingclaw": "Крыло-коготь",
"wingclaws": "Крыло-коготь",
"wings": "Крылья"
}
},
"unicode_glyph_ranges": [
32,
255,
1024,
1241,
8192,
8303,
65280,
65519,
0
]
}

View File

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