Functions and fields are cached, part names added, part name language support added.

This commit is contained in:
GreenComfyTea
2022-02-09 20:08:34 +02:00
parent 54c55155e8
commit 1c9174ca38
17 changed files with 974 additions and 261 deletions

View File

@@ -5,7 +5,9 @@ local screen = require("MHR_Overlay.Game_Handler.screen");
local singletons = require("MHR_Overlay.Game_Handler.singletons");
local config = require("MHR_Overlay.Misc.config");
local language = require("MHR_Overlay.Misc.language");
local table_helpers = require("MHR_Overlay.Misc.table_helpers");
local part_names = require("MHR_Overlay.Misc.part_names");
local player = require("MHR_Overlay.Damage_Meter.player");
local damage_hook = require("MHR_Overlay.Damage_Meter.damage_hook");
@@ -35,8 +37,10 @@ screen.init_module();
singletons.init_module();
table_helpers.init_module();
language.init_module();
config.init_module();
quest_status.init_module();
part_names.init_module();
damage_UI_entity.init_module();
health_UI_entity.init_module();
@@ -85,7 +89,7 @@ re.on_frame(function()
end);
re.on_frame(function()
draw.text("x: " .. tostring(x), 450, 50, 0xFFFFFFFF);
--draw.text("x: " .. tostring(x), 450, 50, 0xFFFFFFFF);
end);
-- #endregion
--------------------------RE_IMGUI---------------------------

View File

@@ -2,11 +2,21 @@ local damage_hook = {};
local quest_status;
local player;
local enemy_character_base_type_def = sdk.find_type_definition("snow.enemy.EnemyCharacterBase");
local enemy_character_base_after_calc_damage_damage_side = enemy_character_base_type_def:get_method("afterCalcDamage_DamageSide");
local is_boss_enemy_method = enemy_character_base_type_def:get_method("get_isBossEnemy");
local check_die_method = enemy_character_base_type_def:get_method("checkDie");
local enemy_calc_damage_info_type_def = sdk.find_type_definition("snow.hit.EnemyCalcDamageInfo.AfterCalcInfo_DamageSide");
local get_attacker_id_method = enemy_calc_damage_info_type_def:get_method("get_AttackerID");
local get_damage_attacker_type_method = enemy_calc_damage_info_type_def:get_method("get_DamageAttackerType");
local get_total_damage_method = enemy_calc_damage_info_type_def:get_method("get_TotalDamage");
local get_physical_damage_method = enemy_calc_damage_info_type_def:get_method("get_PhysicalDamage");
local get_elemental_damage_method = enemy_calc_damage_info_type_def:get_method("get_ElementDamage");
local get_condition_damage_method = enemy_calc_damage_info_type_def:get_method("get_ConditionDamage");
sdk.hook(enemy_character_base_after_calc_damage_damage_side, function(args)
damage_hook.update_damage(args);
end, function(retval)
@@ -19,12 +29,13 @@ function damage_hook.update_damage(args)
return;
end
local is_large_monster = enemy:call("get_isBossEnemy");
local is_large_monster = is_boss_enemy_method:call(enemy);
if is_large_monster == nil then
return;
end
local dead_or_captured = enemy:call("checkDie");
local dead_or_captured = check_die_method:call(enemy);
if dead_or_captured == nil then
return;
end
@@ -34,8 +45,8 @@ function damage_hook.update_damage(args)
end
local enemy_calc_damage_info = sdk.to_managed_object(args[3]); -- snow.hit.EnemyCalcDamageInfo.AfterCalcInfo_DamageSide
local attacker_id = enemy_calc_damage_info:call("get_AttackerID");
local attacker_type = enemy_calc_damage_info:call("get_DamageAttackerType");
local attacker_id = get_attacker_id_method:call(enemy_calc_damage_info);
local attacker_type = get_damage_attacker_type_method:call(enemy_calc_damage_info);
if attacker_id >= 100 then
return;
@@ -47,10 +58,10 @@ function damage_hook.update_damage(args)
end
local damage_object = {}
damage_object.total_damage = enemy_calc_damage_info:call("get_TotalDamage");
damage_object.physical_damage = enemy_calc_damage_info:call("get_PhysicalDamage");
damage_object.elemental_damage = enemy_calc_damage_info:call("get_ElementDamage");
damage_object.ailment_damage = enemy_calc_damage_info:call("get_ConditionDamage");
damage_object.total_damage = get_total_damage_method:call(enemy_calc_damage_info);
damage_object.physical_damage = get_physical_damage_method:call(enemy_calc_damage_info);
damage_object.elemental_damage = get_elemental_damage_method:call(enemy_calc_damage_info);
damage_object.ailment_damage = get_condition_damage_method:call(enemy_calc_damage_info);
-- -1 - bombs
-- 0 - player

View File

@@ -177,8 +177,6 @@ function player.update_display(_player)
end
end
if config.current_config.damage_meter_UI.tracked_monster_types.large_monsters then
if config.current_config.damage_meter_UI.tracked_damage_types.player_damage then
player.merge_damage(_player.display, _player.large_monsters);
@@ -215,31 +213,38 @@ function player.merge_damage(first, second)
return first;
end
local player_manager_type_def = sdk.find_type_definition("snow.player.PlayerManager");
local find_master_player_method = player_manager_type_def:get_method("findMasterPlayer");
local get_game_object_method = sdk.find_type_definition("via.Component"):get_method("get_GameObject")
local get_transform_method = sdk.find_type_definition("via.GameObject"):get_method("get_Transform")
local get_position_method = sdk.find_type_definition("via.Transform"):get_method("get_Position")
function player.update_myself_position()
if singletons.player_manager == nil then
customization_menu.status = "No player manager";
return;
end
local master_player = singletons.player_manager:call("findMasterPlayer")
local master_player = find_master_player_method:call(singletons.player_manager);
if master_player == nil then
customization_menu.status = "No master player";
return;
end
local master_player_game_object = master_player:call("get_GameObject")
local master_player_game_object = get_game_object_method:call(master_player);
if master_player_game_object == nil then
customization_menu.status = "No master player game object";
return;
end
local master_player_transform = master_player_game_object:call("get_Transform")
local master_player_transform = get_transform_method:call(master_player_game_object);
if not master_player_transform then
customization_menu.status = "No master player transform";
return;
end
local master_player_position = master_player_transform:call("get_Position")
local master_player_position = get_position_method:call(master_player_transform);
if master_player_position == nil then
customization_menu.status = "No masterplayer position";
return;

View File

@@ -12,6 +12,9 @@ quest_status.is_training_area = false;
local quest_manager_type_definition = sdk.find_type_definition("snow.QuestManager");
local on_changed_game_status = quest_manager_type_definition:get_method("onChangedGameStatus");
local village_area_manager_type_def = sdk.find_type_definition("snow.VillageAreaManager");
local check_current_area_training_area_method = village_area_manager_type_def:get_method("checkCurrentArea_TrainingArea");
sdk.hook(on_changed_game_status, function(args)
local new_quest_status = sdk.to_int64(args[3]);
if new_quest_status ~= nil then
@@ -66,7 +69,7 @@ function quest_status.update_is_training_area()
return;
end
local _is_training_area = singletons.village_area_manager:call("checkCurrentArea_TrainingArea");
local _is_training_area = check_current_area_training_area_method:call(singletons.village_area_manager);
if _is_training_area == nil then
return;
end

View File

@@ -1,11 +1,14 @@
local config = {};
local table_helpers;
local language;
config.current_config = nil;
config.config_file_name = "MHR Overlay/config.json";
config.default_config = {
global_settings = {
language = "en-us",
module_visibility = {
during_quest = {
small_monster_UI = true,
@@ -552,7 +555,7 @@ config.default_config = {
},
parts = {
visibility = false,
visibility = true,
offset = {
x = 0,
@@ -565,7 +568,7 @@ config.default_config = {
},
settings = {
hide_undamaged_parts = true,
hide_undamaged_parts = false,
},
sorting = {
@@ -578,7 +581,7 @@ config.default_config = {
text = "%s",
include = {
part_name = false,
part_name = true,
break_count = true
},
@@ -586,7 +589,7 @@ config.default_config = {
x = 15,
y = 61
},
color = 0xF1F4A3CC,
color = 0xFFf9d9ff,
shadow = {
visibility = true,
@@ -603,7 +606,7 @@ config.default_config = {
text = "HP:",
offset = {
x = -15,
y = 71
y = 69
},
color = 0xF1F4A3CC,
@@ -622,7 +625,7 @@ config.default_config = {
text = "%.0f/%.0f", -- current_health/max_health
offset = {
x = 55,
y = 78
y = 74
},
color = 0xFFFFFFFF,
@@ -637,12 +640,12 @@ config.default_config = {
},
percentage_label = {
visibility = false,
visibility = true,
text = "%5.1f%%",
offset = {
x = 145,
y = 78
y = 74
},
color = 0xFFFFFFFF,
@@ -660,7 +663,7 @@ config.default_config = {
visibility = true,
offset = {
x = 10,
y = 78
y = 75
},
size = {
@@ -669,7 +672,7 @@ config.default_config = {
},
colors = {
foreground = 0xF4D0A3CC,
foreground = 0xB9ca85cc,
background = 0x88000000
}
}
@@ -971,9 +974,7 @@ config.default_config = {
},
parts = {
visibility = true,
visibility = false,
offset = {
x = 0,
@@ -999,7 +1000,7 @@ config.default_config = {
text = "%s",
include = {
part_name = false,
part_name = true,
break_count = true
},
@@ -1007,7 +1008,7 @@ config.default_config = {
x = 15,
y = 61
},
color = 0xF1F4A3CC,
color = 0xFFf9d9ff,
shadow = {
visibility = true,
@@ -1024,7 +1025,7 @@ config.default_config = {
text = "HP:",
offset = {
x = -15,
y = 71
y = 69
},
color = 0xF1F4A3CC,
@@ -1043,7 +1044,7 @@ config.default_config = {
text = "%.0f/%.0f", -- current_health/max_health
offset = {
x = 55,
y = 78
y = 74
},
color = 0xFFFFFFFF,
@@ -1063,7 +1064,7 @@ config.default_config = {
offset = {
x = 145,
y = 78
y = 74
},
color = 0xFFFFFFFF,
@@ -1081,7 +1082,7 @@ config.default_config = {
visibility = true,
offset = {
x = 10,
y = 78
y = 75
},
size = {
@@ -1090,7 +1091,7 @@ config.default_config = {
},
colors = {
foreground = 0xF4D0A3CC,
foreground = 0xB9ca85cc,
background = 0x88000000
}
}
@@ -1347,7 +1348,10 @@ end
function config.init_module()
table_helpers = require("MHR_Overlay.Misc.table_helpers");
language = require("MHR_Overlay.Misc.language");
config.load();
language.update(table_helpers.find_index(language.language_names, config.current_config.global_settings.language, false));
config.current_config.version = "v1.7";
end

View File

@@ -0,0 +1,110 @@
local language = {};
local table_helpers;
language.current_language = {};
language.language_names = {};
language.languages = {};
language.language_folder = "MHR Overlay\\languages\\";
language.default_language = {
parts = {
head = "Head",
neck = "Neck",
body = "Body",
torso = "Torso",
abdomen = "Abdomen",
back = "Back",
tail = "Tail",
upper_body = "Upper Body",
lower_body = "Lower Body",
upper_back = "Upper Back",
lower_back = "Lower Back",
left_wing = "Wing L",
right_wing = "Wing R",
wings = "Wings",
left_leg = "Leg L",
right_leg = "Leg R",
legs = "Legs",
left_legs = "Legs L",
right_legs = "Legs R",
left_arm = "Arm L",
right_arm = "Arm R",
arms = "Arms",
left_arm_ice = "Arm L (Ice)",
right_arm_ice = "Arm R (Ice)",
left_cutwing = "Cutwing L",
right_cutwing = "Cutwing R",
head_mud = "Head (Mud)",
tail_mud = "Tail (Mud)",
tail_windsac = "Tail (Windsac)",
chest_windsac = "Chest (Windsac)",
back_windsac = "Back (Windsac)",
large_mudbulb = "Large Mudbulb",
mane = "Mane",
rear = "Rear",
claw = "Claw",
dorsal_fin = "Dorsal Fin",
carapace = "Carapace",
spinning = "Spinning",
rock = "Rock"
}
};
function language.load()
local language_files = fs.glob([[MHR Overlay\\languages\\.*json]]);
if language_files == nil then
return;
end
for i, language_file in ipairs(language_files) do
local language_name = language_file:gsub(language.language_folder, ""):gsub(".json", "");
-- v will be something like `my-cool-mod\config-file-1.json`;
local loaded_language = json.load_file(language.language_folder .. "en-us.json");
if loaded_language ~= nil then
log.info("[MHR Overlay] " .. language_name .. ".json loaded successfully");
table.insert(language.language_names, language_name);
table.insert(language.languages, loaded_language);
else
log.error("[MHR Overlay] Failed to load " .. language_name .. ".json");
end
end
end
function language.save_default()
-- save current config to disk, replacing any existing file
local success = json.dump_file(language.language_folder .. "en-us.json", language.default_language);
if success then
log.info('[MHR Overlay] en-us.json saved successfully');
else
log.error('[MHR Overlay] Failed to save en-us.json');
end
end
function language.update(index)
language.current_language = table_helpers.deep_copy(language.languages[index]);
end
function language.init_module()
table_helpers = require("MHR_Overlay.Misc.table_helpers");
language.save_default();
language.load();
end
return language;

View File

@@ -0,0 +1,476 @@
local part_names = {};
local language;
local table_helpers;
part_names.list = {};
function part_names.init()
part_names.list = {
[98] = -- Great Izuchi+ 98
{
language.current_language.parts.head,
language.current_language.parts.body,
language.current_language.parts.arms,
language.current_language.parts.tail,
},
[54] = -- Great Baggi+ 54
{
language.current_language.parts.head,
language.current_language.parts.torso,
language.current_language.parts.tail
},
[107] = -- Kulu-Ya-Ku+ 107 boulders are cut out
{
language.current_language.parts.head,
language.current_language.parts.arms,
language.current_language.parts.body,
language.current_language.parts.tail,
language.current_language.parts.rock,
language.current_language.parts.rock
},
[59] = -- Great Wroggi+ 59
{
language.current_language.parts.head,
language.current_language.parts.torso,
language.current_language.parts.tail
},
[60] = -- Arzuros+ 60 Unknown parts
{
language.current_language.parts.head,
language.current_language.parts.upper_body,
language.current_language.parts.arms,
language.current_language.parts.rear,
language.current_language.parts.lower_body
},
[61] = -- Lagombi+ 61
{
language.current_language.parts.head,
language.current_language.parts.upper_body,
language.current_language.parts.arms,
language.current_language.parts.rear,
language.current_language.parts.lower_body
},
[62] = -- Volvidon+ 62
{
language.current_language.parts.upper_back,
language.current_language.parts.upper_body,
language.current_language.parts.arms,
language.current_language.parts.lower_back,
language.current_language.parts.lower_body,
language.current_language.parts.spinning
},
[91] = -- Aknosom+ 91
{
language.current_language.parts.head,
language.current_language.parts.neck,
language.current_language.parts.left_wing,
language.current_language.parts.right_wing,
language.current_language.parts.body,
language.current_language.parts.tail,
language.current_language.parts.legs
},
[47] = -- Royal Ludroth+ 47
{
language.current_language.parts.head,
language.current_language.parts.mane,
language.current_language.parts.torso,
language.current_language.parts.left_legs,
language.current_language.parts.right_legs,
language.current_language.parts.tail
},
[44] = -- Barroth+ 44
{
language.current_language.parts.head,
language.current_language.parts.body,
language.current_language.parts.arms,
language.current_language.parts.left_leg,
language.current_language.parts.right_leg,
language.current_language.parts.tail
},
[3] = -- Khezu+ 3
{
language.current_language.parts.head,
language.current_language.parts.neck,
language.current_language.parts.torso,
language.current_language.parts.left_leg,
language.current_language.parts.right_leg,
language.current_language.parts.left_wing,
language.current_language.parts.right_wing,
language.current_language.parts.tail
},
[92] = -- Tetranadon+ 92
{
language.current_language.parts.head,
language.current_language.parts.right_arm,
language.current_language.parts.left_arm,
language.current_language.parts.right_leg,
language.current_language.parts.left_leg,
language.current_language.parts.carapace,
language.current_language.parts.torso,
language.current_language.parts.tail
},
[90] = -- Bishaten+ 90
{
language.current_language.parts.head,
language.current_language.parts.torso,
language.current_language.parts.right_arm,
language.current_language.parts.left_arm,
language.current_language.parts.right_leg,
language.current_language.parts.left_leg,
language.current_language.parts.tail
},
[102] = -- Pukei-Pukei+ 102
{
language.current_language.parts.head,
language.current_language.parts.torso,
language.current_language.parts.left_wing,
language.current_language.parts.right_wing,
language.current_language.parts.left_leg,
language.current_language.parts.right_leg,
language.current_language.parts.tail
},
[108] = -- Jyuratodus+ 108 missing mud parts
{
language.current_language.parts.head,
language.current_language.parts.torso,
language.current_language.parts.left_leg,
language.current_language.parts.right_leg,
language.current_language.parts.tail,
language.current_language.parts.head_mud,
language.current_language.parts.tail_mud
},
[4] = -- Basarios+ 4
{
language.current_language.parts.torso,
language.current_language.parts.left_wing,
language.current_language.parts.right_wing,
language.current_language.parts.left_leg,
language.current_language.parts.right_leg,
language.current_language.parts.head,
language.current_language.parts.abdomen,
language.current_language.parts.tail
},
[93] = -- Somnacanth+ 93
{
language.current_language.parts.body,
language.current_language.parts.head,
language.current_language.parts.neck,
language.current_language.parts.left_arm,
language.current_language.parts.right_arm,
language.current_language.parts.left_leg,
language.current_language.parts.right_leg,
language.current_language.parts.tail
},
[1] = -- Rathian+ 1
{
language.current_language.parts.head,
language.current_language.parts.body,
language.current_language.parts.left_wing,
language.current_language.parts.right_wing,
language.current_language.parts.left_leg,
language.current_language.parts.right_leg,
language.current_language.parts.tail
},
[42] = -- Barioth+ 42
{
language.current_language.parts.head,
language.current_language.parts.body,
language.current_language.parts.left_wing,
language.current_language.parts.right_wing,
language.current_language.parts.left_leg,
language.current_language.parts.right_leg,
language.current_language.parts.tail
},
[109] = -- Tobi-Kadachi+ 109
{
language.current_language.parts.head,
language.current_language.parts.torso,
language.current_language.parts.back,
language.current_language.parts.arms,
language.current_language.parts.legs,
language.current_language.parts.tail
},
[89] = -- Magnamalo+ 89
{
language.current_language.parts.head,
language.current_language.parts.torso,
language.current_language.parts.right_arm,
language.current_language.parts.left_arm,
language.current_language.parts.back,
language.current_language.parts.tail,
language.current_language.parts.legs
},
[100] = -- Anjanath+ 100 (missing parts)
{
language.current_language.parts.head,
language.current_language.parts.body,
language.current_language.parts.left_leg,
language.current_language.parts.right_leg,
language.current_language.parts.tail,
language.current_language.parts.left_wing,
language.current_language.parts.right_wing
},
[37] = -- Nargacuga+ 37
{
language.current_language.parts.head,
language.current_language.parts.body,
language.current_language.parts.left_cutwing,
language.current_language.parts.tail,
language.current_language.parts.arms,
language.current_language.parts.left_leg,
language.current_language.parts.right_cutwing,
language.current_language.parts.right_leg
},
[82] = -- Mizutsune+ 82
{
language.current_language.parts.head,
language.current_language.parts.left_arm,
language.current_language.parts.right_arm,
language.current_language.parts.left_leg,
language.current_language.parts.right_leg,
language.current_language.parts.body,
language.current_language.parts.tail,
language.current_language.parts.dorsal_fin
},
[97] = -- Goss Harag+ 97
{
language.current_language.parts.head,
language.current_language.parts.back,
language.current_language.parts.left_arm,
language.current_language.parts.left_arm_ice,
language.current_language.parts.right_arm,
language.current_language.parts.right_arm_ice,
language.current_language.parts.left_leg,
language.current_language.parts.right_leg,
language.current_language.parts.body
},
[2] = -- Rathalos+ 2
{
language.current_language.parts.body,
language.current_language.parts.left_wing,
language.current_language.parts.right_wing,
language.current_language.parts.left_wing,
language.current_language.parts.right_wing,
language.current_language.parts.neck,
language.current_language.parts.head,
language.current_language.parts.tail
},
[95] = -- Almudron+ 95
{
language.current_language.parts.head,
language.current_language.parts.body,
language.current_language.parts.left_arm,
language.current_language.parts.right_arm,
language.current_language.parts.left_leg,
language.current_language.parts.right_leg,
language.current_language.parts.tail,
language.current_language.parts.large_mudbulb,
language.current_language.parts.large_mudbulb,
},
[57] = -- Zinogre+ 57
{
language.current_language.parts.head,
language.current_language.parts.body,
language.current_language.parts.back,
language.current_language.parts.left_arm,
language.current_language.parts.right_arm,
language.current_language.parts.left_leg,
language.current_language.parts.right_leg,
language.current_language.parts.tail
},
[32] = -- Tigrex+ 32
{
language.current_language.parts.head,
language.current_language.parts.body,
language.current_language.parts.left_arm,
language.current_language.parts.right_arm,
language.current_language.parts.left_leg,
language.current_language.parts.right_leg,
language.current_language.parts.tail
},
[7] = -- Diablos+ 7
{
language.current_language.parts.head,
language.current_language.parts.body,
language.current_language.parts.left_wing,
language.current_language.parts.right_wing,
language.current_language.parts.left_leg,
language.current_language.parts.right_leg,
language.current_language.parts.tail
},
[94] = -- Rakna-Kadaki+ 94 (?)
{
language.current_language.parts.head,
language.current_language.parts.claw,
language.current_language.parts.left_arm,
language.current_language.parts.right_arm,
language.current_language.parts.left_leg,
language.current_language.parts.right_leg,
language.current_language.parts.abdomen,
language.current_language.parts.left_arm,
language.current_language.parts.right_arm -- mb abdomen_cocooned)
},
[24] = -- Kushala Daora+ 24
{
language.current_language.parts.head,
language.current_language.parts.back,
language.current_language.parts.left_leg,
language.current_language.parts.right_leg,
language.current_language.parts.wings,
language.current_language.parts.tail
},
[25] = -- Chameleos+ 25
{
language.current_language.parts.head,
language.current_language.parts.abdomen,
language.current_language.parts.left_arm,
language.current_language.parts.right_arm,
language.current_language.parts.left_leg,
language.current_language.parts.right_leg,
language.current_language.parts.tail,
language.current_language.parts.wings
},
[27] = -- Teostra+ 27
{
language.current_language.parts.head,
language.current_language.parts.body,
language.current_language.parts.arms,
language.current_language.parts.legs,
language.current_language.parts.wings,
language.current_language.parts.tail
},
[23] = -- Rajang+ 23
{
language.current_language.parts.head,
language.current_language.parts.body,
language.current_language.parts.left_arm,
language.current_language.parts.right_arm,
language.current_language.parts.left_leg,
language.current_language.parts.right_leg,
language.current_language.parts.tail
},
[118] = -- Bazelgeuse+ 118
{
language.current_language.parts.head,
language.current_language.parts.body,
language.current_language.parts.legs,
language.current_language.parts.left_wing,
language.current_language.parts.right_wing,
language.current_language.parts.tail
},
[96] = -- Wind Serpent Ibushi+ 96 (missing parts)
{
language.current_language.parts.head,
language.current_language.parts.right_arm,
language.current_language.parts.left_arm,
language.current_language.parts.torso,
language.current_language.parts.back,
language.current_language.parts.tail,
language.current_language.parts.tail_windsac,
language.current_language.parts.chest_windsac,
language.current_language.parts.back_windsac
},
[99] = -- Thunder Serpent Narwa+ 99 (no parts?)
{},
[1379] = -- Narwa the Allmother+ 1379 (no parts?)
{},
[1366] = -- Crimson Glow Valstrax+ 1366
{
language.current_language.parts.head,
language.current_language.parts.body,
language.current_language.parts.left_wing,
language.current_language.parts.right_wing,
language.current_language.parts.left_arm,
language.current_language.parts.right_arm,
language.current_language.parts.tail,
language.current_language.parts.legs,
language.current_language.parts.chest_windsac
},
[1852] = -- Apex Arzuros+ 1852
{
language.current_language.parts.head,
language.current_language.parts.upper_body,
language.current_language.parts.arms,
language.current_language.parts.rear,
language.current_language.parts.lower_body
},
[1793] = -- Apex Rathian+ 1793
{
language.current_language.parts.head,
language.current_language.parts.body,
language.current_language.parts.left_wing,
language.current_language.parts.right_wing,
language.current_language.parts.left_leg,
language.current_language.parts.right_leg,
language.current_language.parts.tail
},
[1874] = -- Apex Mizutsune+ 1874
{
language.current_language.parts.head,
language.current_language.parts.left_arm,
language.current_language.parts.right_arm,
language.current_language.parts.left_leg,
language.current_language.parts.right_leg,
language.current_language.parts.body,
language.current_language.parts.tail,
language.current_language.parts.dorsal_fin
},
[1794] = -- Apex Rathalos+ 1794
{
language.current_language.parts.body,
language.current_language.parts.left_wing,
language.current_language.parts.right_wing,
language.current_language.parts.left_leg,
language.current_language.parts.right_leg,
language.current_language.parts.neck,
language.current_language.parts.head,
language.current_language.parts.tail
},
[1799] = -- Apex Diablos+ 1799
{
language.current_language.parts.head,
language.current_language.parts.body,
language.current_language.parts.left_wing,
language.current_language.parts.right_wing,
language.current_language.parts.left_leg,
language.current_language.parts.right_leg,
language.current_language.parts.tail
},
[1849] = -- Apex Zinogre+ 1849
{
language.current_language.parts.head,
language.current_language.parts.body,
language.current_language.parts.back,
language.current_language.parts.left_arm,
language.current_language.parts.right_arm,
language.current_language.parts.left_leg,
language.current_language.parts.right_leg,
language.current_language.parts.tail
}
};
end
function part_names.get_part_name(monster_id, part_id)
local monster_parts = part_names.list[monster_id];
if monster_parts == nil then
return "";
end
local part_name = monster_parts[part_id];
if part_name == nil then
return "";
end
return part_name;
end
function part_names.init_module()
language = require("MHR_Overlay.Misc.language");
table_helpers = require("MHR_Overlay.Misc.table_helpers");
part_names.init();
end
return part_names;

View File

@@ -62,82 +62,18 @@ function table_helpers.merge(...)
end
function table_helpers.tostring(table)
local cache, stack, output = {}, {}, {};
local depth = 1;
local output_string = "{\n";
while true do
local size = 0;
for key, value in pairs(table) do
size = size + 1;
if type(table) == 'table' then
local s = '{ \n';
for k,v in pairs(table) do
if type(k) ~= 'number' then
k = '"' .. k .. '"';
end
local current_index = 1;
for key, value in pairs(table) do
if (cache[table] == nil) or (current_index >= cache[table]) then
if (string.find(output_string, "}", output_string:len())) then
output_string = output_string .. ",\n";
elseif not (string.find(output_string, "\n",output_string:len())) then
output_string = output_string .. "\n";
s = s .. '\t['..k..'] = ' .. table_helpers.tostring(v) .. ',\n';
end
-- This is necessary for working with HUGE tables otherwise we run out of memory using concat on huge strings
table.insert(output, output_string);
output_string = "";
local key;
if (type(key) == "number" or type(key) == "boolean") then
key = "[" .. tostring(key) .. "]";
return s .. '} \n';
else
key = "['" .. tostring(key) .. "']";
return tostring(table);
end
if (type(value) == "number" or type(value) == "boolean") then
output_string = output_string .. string.rep('\t', depth) .. key .. " = " .. tostring(value);
elseif (type(value) == "table") then
output_string = output_string .. string.rep('\t', depth) .. key .. " = {\n";
table.insert(stack, table);
table.insert(stack, value);
cache[table] = current_index + 1;
break
else
output_string = output_string .. string.rep('\t', depth) .. key .. " = '" .. tostring(value) .. "'";
end
if (current_index == size) then
output_string = output_string .. "\n" .. string.rep('\t', depth - 1) .. "}";
else
output_string = output_string .. ",";
end
else
-- close the table
if (current_index == size) then
output_string = output_string .. "\n" .. string.rep('\t', depth - 1) .. "}";
end
end
current_index = current_index + 1;
end
if (size == 0) then
output_string = output_string .. "\n" .. string.rep('\t', depth - 1) .. "}";
end
if (#stack > 0) then
table = stack[#stack];
stack[#stack] = nil;
depth = cache[table] == nil and depth + 1 or depth - 1;
else
break;
end
end
-- This is necessary for working with HUGE tables otherwise we run out of memory using concat on huge strings
table.insert(output, output_string);
output_string = table.concat(output);
return output_string;
end
function table_helpers.init_module()

View File

@@ -9,10 +9,11 @@ local rage_UI_entity;
local body_part_UI_entity;
local screen;
local drawing;
local part_names;
body_part.list = {};
function body_part.new(REpart, id)
function body_part.new(REpart, name, id)
local part = {};
part.REpart = REpart;
@@ -22,7 +23,7 @@ function body_part.new(REpart, id)
part.max_health = 99999;
part.health_percentage = 0;
part.name = "??";
part.name = name;
part.break_count = 0;
body_part.init_dynamic_UI(part);
@@ -90,6 +91,7 @@ function body_part.init_module()
body_part_UI_entity = require("MHR_Overlay.UI.UI_Entities.body_part_UI_entity");
screen = require("MHR_Overlay.Game_Handler.screen");
drawing = require("MHR_Overlay.UI.drawing");
part_names = require("MHR_Overlay.Misc.part_names");
end
return body_part;

View File

@@ -9,6 +9,7 @@ local rage_UI_entity;
local screen;
local drawing;
local body_part;
local part_names;
large_monster.list = {};
@@ -213,7 +214,7 @@ local anger_param_get_timer_method = anger_param_type:get_method("get_Timer")
local get_timer_anger_method = anger_param_type:get_method("get_TimerAnger")
local get_count_anger_method = anger_param_type:get_method("get_CountAnger")
local get_gameobject_method = sdk.find_type_definition("via.Component"):get_method("get_GameObject")
local get_game_object_method = sdk.find_type_definition("via.Component"):get_method("get_GameObject")
local get_transform_method = sdk.find_type_definition("via.GameObject"):get_method("get_Transform")
local get_position_method = sdk.find_type_definition("via.Transform"):get_method("get_Position")
@@ -230,7 +231,7 @@ function large_monster.update_position(enemy)
-- as these are pretty much guaranteed to stay constant
-- as long as the enemy is alive
if monster.game_object == nil then
monster.game_object = get_gameobject_method:call(enemy)
monster.game_object = get_game_object_method:call(enemy)
if monster.game_object == nil then
customization_menu.status = "No enemy game object";
return;
@@ -354,10 +355,6 @@ function large_monster.update(enemy)
goto continue;
end
if part_health == last_REpart_health then
break;
end
local part_max_health = REpart:call("get_Max");
if part_max_health == nil or part_max_health <= 0 then
goto continue;
@@ -365,9 +362,13 @@ function large_monster.update(enemy)
local part = monster.parts[REpart];
if part == nil then
part = body_part.new(REpart, part_id);
local part_name = part_names.get_part_name(monster.id, part_id);
if part_name ~= "" then
part = body_part.new(REpart, part_name, part_id);
monster.parts[REpart] = part;
end
end
body_part.update(part, part_health, part_max_health);
@@ -473,7 +474,7 @@ function large_monster.draw_dynamic(monster, position_on_screen, opacity_scale)
100 * monster.big_border, 100 * monster.king_border);
end
drawing.draw_label(monster.dynamic_name_label, position_on_screen, opacity_scale, monster_name_text .. " " .. tostring(monster.id));
drawing.draw_label(monster.dynamic_name_label, position_on_screen, opacity_scale, monster_name_text);
health_UI_entity.draw(monster, monster.health_dynamic_UI, position_on_screen, opacity_scale);
stamina_UI_entity.draw(monster, monster.stamina_dynamic_UI, position_on_screen, opacity_scale);
@@ -550,7 +551,7 @@ function large_monster.draw_static(monster, position_on_screen, opacity_scale)
100 * monster.big_border, 100 * monster.king_border);
end
drawing.draw_label(monster.static_name_label, position_on_screen, opacity_scale, monster_name_text .. " " .. tostring(monster.id));
drawing.draw_label(monster.static_name_label, position_on_screen, opacity_scale, monster_name_text);
health_UI_entity.draw(monster, monster.health_static_UI, position_on_screen, opacity_scale);
stamina_UI_entity.draw(monster, monster.stamina_static_UI, position_on_screen, opacity_scale);
@@ -624,6 +625,7 @@ function large_monster.init_module()
rage_UI_entity = require("MHR_Overlay.UI.UI_Entities.rage_UI_entity");
screen = require("MHR_Overlay.Game_Handler.screen");
drawing = require("MHR_Overlay.UI.drawing");
part_names = require("MHR_Overlay.Misc.part_names");
end
return large_monster;

View File

@@ -5,13 +5,14 @@ local large_monster;
local enemy_character_base_type_def = sdk.find_type_definition("snow.enemy.EnemyCharacterBase");
local enemy_character_base_type_def_update_method = enemy_character_base_type_def:get_method("update");
local is_boss_enemy_method = sdk.find_type_definition("snow.enemy.EnemyCharacterBase"):get_method("get_isBossEnemy");
sdk.hook(enemy_character_base_type_def_update_method, function(args)
monster.update_monster(sdk.to_managed_object(args[2]));
end, function(retval)
return retval;
end);
local is_boss_enemy_method = sdk.find_type_definition("snow.enemy.EnemyCharacterBase"):get_method("get_isBossEnemy");
local tick_count = 0
local last_update_tick = 0
local recorded_monsters = {}
@@ -30,21 +31,18 @@ local MAX_UPDATES_PER_TICK = 2
-- the reason for this is that the hooks on all the monsters' update functions
-- causes a HUGE performance hit (adds ~3+ ms to UpdateBehavior and frame time)
re.on_pre_application_entry("UpdateBehavior", function()
tick_count = tick_count + 1
updates_this_tick = 0
tick_count = tick_count + 1;
updates_this_tick = 0;
if num_known_monsters ~= 0 and
num_updated_monsters >= num_known_monsters or
tick_count >= num_known_monsters * 2
then
recorded_monsters = {}
updated_monsters = {}
known_big_monsters = {}
last_update_tick = 0
tick_count = 0
num_known_monsters = 0
num_updated_monsters = 0
updates_this_tick = 0
if num_known_monsters ~= 0 and num_updated_monsters >= num_known_monsters or tick_count >= num_known_monsters * 2 then
recorded_monsters = {};
updated_monsters = {};
known_big_monsters = {};
last_update_tick = 0;
tick_count = 0;
num_known_monsters = 0;
num_updated_monsters = 0;
updates_this_tick = 0;
end
end)

View File

@@ -9,6 +9,28 @@ local drawing;
damage_meter_UI.last_displayed_players = {};
local lobby_manager_type_def = sdk.find_type_definition("snow.LobbyManager");
local my_hunter_info_field = lobby_manager_type_def:get_field("_myHunterInfo");
local myself_index_field = lobby_manager_type_def:get_field("_myselfIndex");
local myself_quest_index_field = lobby_manager_type_def:get_field("_myselfQuestIndex");
local quest_hunter_info_field = lobby_manager_type_def:get_field("_questHunterInfo");
local my_hunter_info_type_def = my_hunter_info_field:get_type();
local name_field = my_hunter_info_type_def:get_field("_name");
local quest_hunter_info_type_def = quest_hunter_info_field:get_type();
local get_count_method = quest_hunter_info_type_def:get_method("get_Count");
local get_item_method = quest_hunter_info_type_def:get_method("get_Item");
local hunter_info_type_def = sdk.find_type_definition("snow.LobbyManager.HunterInfo");
local member_index_field = hunter_info_type_def:get_field("_memberIndex");
local hunter_rank_field = hunter_info_type_def:get_field("_hunterRank");
--local name_field = hunter_info_type_def:get_field("_name");
local progress_manager_type_def = sdk.find_type_definition("snow.progress.ProgressManager");
local get_hunter_rank_method = progress_manager_type_def:get_method("get_HunterRank");
function damage_meter_UI.draw()
if player.total.display.total_damage == 0 and config.current_config.damage_meter_UI.settings.hide_module_if_total_damage_is_zero then
@@ -24,40 +46,38 @@ function damage_meter_UI.draw()
end
-- myself player
local myself_player_info = singletons.lobby_manager:get_field("_myHunterInfo");
local myself_player_info = my_hunter_info_field:get_data(singletons.lobby_manager);
if myself_player_info == nil then
customization_menu.status = "No myself player info list";
return;
end
local myself_player_name = myself_player_info:get_field("_name");
local myself_player_name = name_field:get_data(myself_player_info);
if myself_player_name == nil then
customization_menu.status = "No myself player name";
return;
end
if quest_status.is_online then
player.myself_id = singletons.lobby_manager:get_field("_myselfQuestIndex");
player.myself_id = myself_quest_index_field:get_data(singletons.lobby_manager);
if player.myself_id == nil then
customization_menu.status = "No myself player id";
return;
end
else
player.myself_id = singletons.lobby_manager:get_field("_myselfIndex");
player.myself_id = myself_index_field:get_data(singletons.lobby_manager);
if player.myself_id == nil then
customization_menu.status = "No myself player id";
return;
end
end
local myself_hunter_rank = singletons.progress_manager:call("get_HunterRank");
local myself_hunter_rank = get_hunter_rank_method:call(singletons.progress_manager);
if myself_hunter_rank == nil then
customization_menu.status = "No myself hunter rank";
myself_hunter_rank = 0;
end
x = singletons.lobby_manager:get_field("_myselfIndex");
if player.list[player.myself_id] == nil then
player.list[player.myself_id] = player.new(player.myself_id, myself_player_name, myself_hunter_rank);
player.myself = player.list[player.myself_id];
@@ -71,12 +91,12 @@ function damage_meter_UI.draw()
quest_players = damage_meter_UI.last_displayed_players;
else
-- other players
local player_info_list = singletons.lobby_manager:get_field("_questHunterInfo");
local player_info_list = quest_hunter_info_field:get_data(singletons.lobby_manager);
if player_info_list == nil then
customization_menu.status = "No player info list";
end
local count = player_info_list:call("get_Count");
local count = get_count_method:call(player_info_list);
if count == nil then
customization_menu.status = "No player info list count";
return;
@@ -84,17 +104,17 @@ function damage_meter_UI.draw()
for i = 0, count - 1 do
local player_info = player_info_list:call("get_Item", i);
local player_info = get_item_method:call(player_info_list, i);
if player_info == nil then
goto continue
end
local player_id = player_info:get_field("_memberIndex");
local player_id = member_index_field:get_data(player_info)
if player_id == nil then
goto continue
end
local player_hunter_rank = player_info:get_field("_hunterRank");
local player_hunter_rank = hunter_rank_field:get_data(player_info);
if player_hunter_rank == nil then
goto continue
end
@@ -104,7 +124,7 @@ function damage_meter_UI.draw()
goto continue
end
local player_name = player_info:get_field("_name");
local player_name = name_field:get_data(player_info);
if player_name == nil then
goto continue
end

View File

@@ -11,6 +11,10 @@ local health_UI_entity;
local stamina_UI_entity;
local rage_UI_entity;
local enemy_manager_type_def = sdk.find_type_definition("snow.enemy.EnemyManager");
local get_boss_enemy_count_method = enemy_manager_type_def:get_method("getBossEnemyCount");
local get_boss_enemy_method = enemy_manager_type_def:get_method("getBossEnemy");
function large_monster_UI.draw(dynamic_enabled, static_enabled)
if singletons.enemy_manager == nil then
return;
@@ -18,13 +22,13 @@ function large_monster_UI.draw(dynamic_enabled, static_enabled)
local displayed_monsters = {};
local enemy_count = singletons.enemy_manager:call("getBossEnemyCount");
local enemy_count = get_boss_enemy_count_method:call(singletons.enemy_manager);
if enemy_count == nil then
return;
end
for i = 0, enemy_count - 1 do
local enemy = singletons.enemy_manager:call("getBossEnemy", i);
local enemy = get_boss_enemy_method:call(singletons.enemy_manager, i);
if enemy == nil then
customization_menu.status = "No enemy";
break

View File

@@ -10,6 +10,10 @@ local table_helpers;
local health_UI_entity;
local stamina_UI_entity;
local enemy_manager_type_def = sdk.find_type_definition("snow.enemy.EnemyManager");
local get_zako_enemy_count_method = enemy_manager_type_def:get_method("getZakoEnemyCount");
local get_zako_enemy_method = enemy_manager_type_def:get_method("getZakoEnemy");
function small_monster_UI.draw()
if singletons.enemy_manager == nil then
return;
@@ -17,14 +21,14 @@ function small_monster_UI.draw()
local displayed_monsters = {};
local enemy_count = singletons.enemy_manager:call("getZakoEnemyCount");
local enemy_count = get_zako_enemy_count_method:call(singletons.enemy_manager);
if enemy_count == nil then
customization_menu.status = "No enemy count";
return;
end
for i = 0, enemy_count - 1 do
local enemy = singletons.enemy_manager:call("getZakoEnemy", i);
local enemy = get_zako_enemy_method:call(singletons.enemy_manager, i);
if enemy == nil then
customization_menu.status = "No enemy";
break

View File

@@ -5,20 +5,22 @@ local screen;
local config;
local drawing;
local quest_manager_type_def = sdk.find_type_definition("snow.QuestManager");
local get_quest_elapsed_time_min_method = quest_manager_type_def:get_method("getQuestElapsedTimeMin");
local get_quest_elapseD_time_sec_method = quest_manager_type_def:get_method("getQuestElapsedTimeSec");
function time_UI.draw()
if singletons.quest_manager == nil then
return;
end
local quest_time_elapsed_minutes = singletons.quest_manager:call("getQuestElapsedTimeMin");
local quest_time_elapsed_minutes = get_quest_elapsed_time_min_method:call( singletons.quest_manager);
if quest_time_elapsed_minutes == nil then
customization_menu.status = "No quest time elapsed minutes";
return;
end
local quest_time_total_elapsed_seconds = singletons.quest_manager:call("getQuestElapsedTimeSec");
local quest_time_total_elapsed_seconds = get_quest_elapseD_time_sec_method:call(singletons.quest_manager);
if quest_time_total_elapsed_seconds == nil then
customization_menu.status = "No quest time total elapsed seconds";
return;

View File

@@ -16,7 +16,6 @@ end
function health_UI_entity.draw(monster, health_UI, position_on_screen, opacity_scale)
if not health_UI.visibility then
x = health_UI.visibility
return;
end

View File

@@ -6,12 +6,15 @@ local screen;
local player;
local large_monster;
local small_monster;
local language;
customization_menu.is_opened = false;
customization_menu.status = "OK";
customization_menu.window_flags = 0x10120;
customization_menu.color_picker_flags = 327680;
customization_menu.selected_language_index = 1;
customization_menu.orientation_types = {"Horizontal", "Vertical"};
customization_menu.anchor_types = {"Top-left", "Top-Right", "Bottom-Left", "Bottom-Right"};
@@ -35,25 +38,25 @@ customization_menu.fonts = {"Arial", "Arial Black", "Bahnschrift", "Calibri", "C
"Segoe UI Symbol", "SimSun", "Sitka", "Sylfaen", "Symbol", "Tahoma", "Times New Roman",
"Trebuchet MS", "Verdana", "Webdings", "Wingdings", "Yu Gothic"};
customization_menu.small_monster_UI_orientation_index = 0;
customization_menu.small_monster_UI_sorting_type_index = 0;
customization_menu.small_monster_UI_orientation_index = 1;
customization_menu.small_monster_UI_sorting_type_index = 1;
customization_menu.large_monster_UI_orientation_index = 0;
customization_menu.large_monster_UI_sorting_type_index = 0;
customization_menu.large_monster_UI_orientation_index = 1;
customization_menu.large_monster_UI_sorting_type_index = 1;
customization_menu.large_monster_dynamic_UI_parts_sorting_type_index = 0;
customization_menu.large_monster_static_UI_parts_sorting_type_index = 0;
customization_menu.large_monster_dynamic_UI_parts_sorting_type_index = 1;
customization_menu.large_monster_static_UI_parts_sorting_type_index = 1;
customization_menu.damage_meter_UI_orientation_index = 0;
customization_menu.damage_meter_UI_sorting_type_index = 0;
customization_menu.damage_meter_UI_highlighted_bar_index = 0;
customization_menu.damage_meter_UI_damage_bar_relative_index = 0;
customization_menu.damage_meter_UI_my_damage_bar_location_index = 0;
customization_menu.damage_meter_UI_orientation_index = 1;
customization_menu.damage_meter_UI_sorting_type_index = 1;
customization_menu.damage_meter_UI_highlighted_bar_index = 1;
customization_menu.damage_meter_UI_damage_bar_relative_index = 1;
customization_menu.damage_meter_UI_my_damage_bar_location_index = 1;
customization_menu.small_monster_UI_anchor_index = 0;
customization_menu.large_monster_UI_anchor_index = 0;
customization_menu.time_UI_anchor_index = 0;
customization_menu.damage_meter_UI_anchor_index = 0;
customization_menu.small_monster_UI_anchor_index = 1;
customization_menu.large_monster_UI_anchor_index = 1;
customization_menu.time_UI_anchor_index = 1;
customization_menu.damage_meter_UI_anchor_index = 1;
customization_menu.selected_font_index = 9;
@@ -65,10 +68,12 @@ function customization_menu.init()
customization_menu.monster_UI_sorting_types, config.current_config.large_monster_UI.static.sorting.type, false);
customization_menu.large_monster_dynamic_UI_parts_sorting_type_index = table_helpers.find_index(
customization_menu.large_monster_UI_parts_sorting_types, config.current_config.large_monster_UI.dynamic.parts.sorting.type, false);
customization_menu.large_monster_UI_parts_sorting_types,
config.current_config.large_monster_UI.dynamic.parts.sorting.type, false);
customization_menu.large_monster_static_UI_parts_sorting_type_index = table_helpers.find_index(
customization_menu.large_monster_UI_parts_sorting_types, config.current_config.large_monster_UI.static.parts.sorting.type, false);
customization_menu.large_monster_UI_parts_sorting_types,
config.current_config.large_monster_UI.static.parts.sorting.type, false);
customization_menu.damage_meter_UI_orientation_index = table_helpers.find_index(customization_menu.orientation_types,
config.current_config.damage_meter_UI.settings.orientation, false);
@@ -143,6 +148,27 @@ function customization_menu.draw()
end
if imgui.tree_node("Global Settings") then
changed, customization_menu.selected_language_index = imgui.combo("Language", customization_menu.selected_language_index, language.language_names);
config_changed = config_changed or changed;
if changed then
config.current_config.global_settings.language = language.language_names[customization_menu.selected_font_index];
language.update(customization_menu.selected_language_index);
for _, monster in pairs(small_monster.list) do
small_monster.init_UI(monster);
end
for _, monster in pairs(large_monster.list) do
large_monster.init_dynamic_UI(monster);
large_monster.init_static_UI(monster);
end
for _, _player in pairs(player.list) do
player.init_UI(_player);
end
end
if imgui.tree_node("Module Visibility on Different Screens") then
if imgui.tree_node("During Quest") then
@@ -150,13 +176,15 @@ function customization_menu.draw()
"Small Monster UI", config.current_config.global_settings.module_visibility.during_quest.small_monster_UI);
config_changed = config_changed or changed;
changed, config.current_config.global_settings.module_visibility.during_quest.large_monster_dynamic_UI = imgui.checkbox(
"Large Monster Dynamic UI", config.current_config.global_settings.module_visibility.during_quest.large_monster_dynamic_UI);
changed, config.current_config.global_settings.module_visibility.during_quest.large_monster_dynamic_UI =
imgui.checkbox("Large Monster Dynamic UI",
config.current_config.global_settings.module_visibility.during_quest.large_monster_dynamic_UI);
config_changed = config_changed or changed;
imgui.same_line();
changed, config.current_config.global_settings.module_visibility.during_quest.large_monster_static_UI = imgui.checkbox(
"Large Monster Static UI", config.current_config.global_settings.module_visibility.during_quest.large_monster_static_UI);
changed, config.current_config.global_settings.module_visibility.during_quest.large_monster_static_UI =
imgui.checkbox("Large Monster Static UI",
config.current_config.global_settings.module_visibility.during_quest.large_monster_static_UI);
config_changed = config_changed or changed;
changed, config.current_config.global_settings.module_visibility.during_quest.time_UI = imgui.checkbox("Time UI",
@@ -172,36 +200,45 @@ function customization_menu.draw()
end
if imgui.tree_node("Quest Summary Screen") then
changed, config.current_config.global_settings.module_visibility.quest_summary_screen.small_monster_UI = imgui.checkbox(
"Small Monster UI", config.current_config.global_settings.module_visibility.quest_summary_screen.small_monster_UI);
changed, config.current_config.global_settings.module_visibility.quest_summary_screen.small_monster_UI =
imgui.checkbox("Small Monster UI",
config.current_config.global_settings.module_visibility.quest_summary_screen.small_monster_UI);
config_changed = config_changed or changed;
changed, config.current_config.global_settings.module_visibility.quest_summary_screen.large_monster_dynamic_UI = imgui.checkbox(
"Large Monster Dynamic UI", config.current_config.global_settings.module_visibility.quest_summary_screen.large_monster_dynamic_UI);
changed, config.current_config.global_settings.module_visibility.quest_summary_screen.large_monster_dynamic_UI =
imgui.checkbox("Large Monster Dynamic UI", config.current_config.global_settings.module_visibility
.quest_summary_screen.large_monster_dynamic_UI);
config_changed = config_changed or changed;
imgui.same_line();
changed, config.current_config.global_settings.module_visibility.quest_summary_screen.large_monster_static_UI = imgui.checkbox("Large Monster Static UI", config.current_config.global_settings.module_visibility.quest_summary_screen.large_monster_static_UI);
changed, config.current_config.global_settings.module_visibility.quest_summary_screen.large_monster_static_UI =
imgui.checkbox("Large Monster Static UI", config.current_config.global_settings.module_visibility
.quest_summary_screen.large_monster_static_UI);
config_changed = config_changed or changed;
changed, config.current_config.global_settings.module_visibility.quest_summary_screen.time_UI = imgui.checkbox("Time UI", config.current_config.global_settings.module_visibility.quest_summary_screen.time_UI);
changed, config.current_config.global_settings.module_visibility.quest_summary_screen.time_UI = imgui.checkbox(
"Time UI", config.current_config.global_settings.module_visibility.quest_summary_screen.time_UI);
config_changed = config_changed or changed;
imgui.same_line();
changed, config.current_config.global_settings.module_visibility.quest_summary_screen.damage_meter_UI = imgui.checkbox("Damage Meter UI", config.current_config.global_settings.module_visibility.quest_summary_screen.damage_meter_UI);
changed, config.current_config.global_settings.module_visibility.quest_summary_screen.damage_meter_UI =
imgui.checkbox("Damage Meter UI",
config.current_config.global_settings.module_visibility.quest_summary_screen.damage_meter_UI);
config_changed = config_changed or changed;
imgui.tree_pop();
end
if imgui.tree_node("Training Area") then
changed, config.current_config.global_settings.module_visibility.training_area.large_monster_dynamic_UI = imgui.checkbox(
"Large Monster Dynamic UI", config.current_config.global_settings.module_visibility.training_area.large_monster_dynamic_UI);
changed, config.current_config.global_settings.module_visibility.training_area.large_monster_dynamic_UI =
imgui.checkbox("Large Monster Dynamic UI",
config.current_config.global_settings.module_visibility.training_area.large_monster_dynamic_UI);
config_changed = config_changed or changed;
imgui.same_line();
changed, config.current_config.global_settings.module_visibility.training_area.large_monster_static_UI = imgui.checkbox(
"Large Monster Static UI", config.current_config.global_settings.module_visibility.training_area.large_monster_static_UI);
changed, config.current_config.global_settings.module_visibility.training_area.large_monster_static_UI =
imgui.checkbox("Large Monster Static UI",
config.current_config.global_settings.module_visibility.training_area.large_monster_static_UI);
config_changed = config_changed or changed;
changed, config.current_config.global_settings.module_visibility.training_area.damage_meter_UI = imgui.checkbox(
@@ -249,8 +286,9 @@ function customization_menu.draw()
config_changed = config_changed or changed;
if imgui.tree_node("Settings") then
changed, customization_menu.small_monster_UI_orientation_index = imgui.combo("Static Orientation",
customization_menu.small_monster_UI_orientation_index, customization_menu.orientation_types);
changed, customization_menu.small_monster_UI_orientation_index =
imgui.combo("Static Orientation", customization_menu.small_monster_UI_orientation_index,
customization_menu.orientation_types);
config_changed = config_changed or changed;
if changed then
config.current_config.small_monster_UI.settings.orientation =
@@ -422,8 +460,8 @@ function customization_menu.draw()
end
if imgui.tree_node("Health") then
changed, config.current_config.small_monster_UI.health.visibility = imgui.checkbox("Visible",
config.current_config.small_monster_UI.health.visibility);
changed, config.current_config.small_monster_UI.health.visibility =
imgui.checkbox("Visible", config.current_config.small_monster_UI.health.visibility);
config_changed = config_changed or changed;
small_monster_UI_changed = small_monster_UI_changed or changed;
@@ -689,8 +727,8 @@ function customization_menu.draw()
end
if imgui.tree_node("Stamina (Pointless: small monsters don't get tired)") then
changed, config.current_config.small_monster_UI.stamina.visibility = imgui.checkbox("Visible",
config.current_config.small_monster_UI.stamina.visibility);
changed, config.current_config.small_monster_UI.stamina.visibility =
imgui.checkbox("Visible", config.current_config.small_monster_UI.stamina.visibility);
config_changed = config_changed or changed;
small_monster_UI_changed = small_monster_UI_changed or changed;
@@ -980,7 +1018,8 @@ function customization_menu.draw()
large_monster_dynamic_UI_changed = large_monster_dynamic_UI_changed or changed;
changed, config.current_config.large_monster_UI.dynamic.settings.max_distance =
imgui.drag_float("Max Distance", config.current_config.large_monster_UI.dynamic.settings.max_distance, 1, 0, 10000, "%.0f");
imgui.drag_float("Max Distance", config.current_config.large_monster_UI.dynamic.settings.max_distance, 1, 0, 10000,
"%.0f");
config_changed = config_changed or changed;
large_monster_dynamic_UI_changed = large_monster_dynamic_UI_changed or changed;
@@ -1940,8 +1979,8 @@ function customization_menu.draw()
end
if imgui.tree_node("Body Parts") then
changed, config.current_config.large_monster_UI.dynamic.parts.visibility = imgui.checkbox(
"Visible", config.current_config.large_monster_UI.dynamic.parts.visibility);
changed, config.current_config.large_monster_UI.dynamic.parts.visibility = imgui.checkbox("Visible",
config.current_config.large_monster_UI.dynamic.parts.visibility);
config_changed = config_changed or changed;
large_monster_dynamic_UI_changed = large_monster_dynamic_UI_changed or changed;
@@ -1974,8 +2013,8 @@ function customization_menu.draw()
end
if imgui.tree_node("Settings") then
changed, config.current_config.large_monster_UI.dynamic.parts.settings.hide_undamaged_parts =
imgui.checkbox("Hide Undamaged Parts", config.current_config.large_monster_UI.dynamic.parts.settings.hide_undamaged_parts);
changed, config.current_config.large_monster_UI.dynamic.parts.settings.hide_undamaged_parts = imgui.checkbox(
"Hide Undamaged Parts", config.current_config.large_monster_UI.dynamic.parts.settings.hide_undamaged_parts);
config_changed = config_changed or changed;
large_monster_dynamic_UI_changed = large_monster_dynamic_UI_changed or changed;
@@ -1984,7 +2023,8 @@ function customization_menu.draw()
if imgui.tree_node("Sorting") then
changed, customization_menu.large_monster_dynamic_UI_parts_sorting_type_index = imgui.combo("Type",
customization_menu.large_monster_dynamic_UI_parts_sorting_type_index, customization_menu.large_monster_UI_parts_sorting_types);
customization_menu.large_monster_dynamic_UI_parts_sorting_type_index,
customization_menu.large_monster_UI_parts_sorting_types);
config_changed = config_changed or changed;
large_monster_dynamic_UI_changed = large_monster_dynamic_UI_changed or changed;
if changed then
@@ -1992,8 +2032,8 @@ function customization_menu.draw()
customization_menu.large_monster_UI_parts_sorting_types[customization_menu.large_monster_dynamic_UI_parts_sorting_type_index];
end
changed, config.current_config.large_monster_UI.dynamic.parts.sorting.reversed_order =
imgui.checkbox("Reversed Order", config.current_config.large_monster_UI.dynamic.parts.sorting.reversed_order);
changed, config.current_config.large_monster_UI.dynamic.parts.sorting.reversed_order = imgui.checkbox(
"Reversed Order", config.current_config.large_monster_UI.dynamic.parts.sorting.reversed_order);
config_changed = config_changed or changed;
large_monster_dynamic_UI_changed = large_monster_dynamic_UI_changed or changed;
@@ -2362,7 +2402,6 @@ function customization_menu.draw()
config_changed = config_changed or changed;
large_monster_static_UI_changed = large_monster_static_UI_changed or changed;
if imgui.tree_node("Settings") then
changed, customization_menu.large_monster_UI_orientation_index = imgui.combo("Orientation",
customization_menu.large_monster_UI_orientation_index, customization_menu.orientation_types);
@@ -3384,8 +3423,8 @@ function customization_menu.draw()
end
if imgui.tree_node("Settings") then
changed, config.current_config.large_monster_UI.static.parts.settings.hide_undamaged_parts =
imgui.checkbox("Hide Undamaged Parts", config.current_config.large_monster_UI.static.parts.settings.hide_undamaged_parts);
changed, config.current_config.large_monster_UI.static.parts.settings.hide_undamaged_parts = imgui.checkbox(
"Hide Undamaged Parts", config.current_config.large_monster_UI.static.parts.settings.hide_undamaged_parts);
config_changed = config_changed or changed;
large_monster_static_UI_changed = large_monster_static_UI_changed or changed;
@@ -3394,7 +3433,8 @@ function customization_menu.draw()
if imgui.tree_node("Sorting") then
changed, customization_menu.large_monster_static_UI_parts_sorting_type_index = imgui.combo("Type",
customization_menu.large_monster_static_UI_parts_sorting_type_index, customization_menu.large_monster_UI_parts_sorting_types);
customization_menu.large_monster_static_UI_parts_sorting_type_index,
customization_menu.large_monster_UI_parts_sorting_types);
config_changed = config_changed or changed;
large_monster_static_UI_changed = large_monster_static_UI_changed or changed;
if changed then
@@ -3402,8 +3442,8 @@ function customization_menu.draw()
customization_menu.large_monster_UI_parts_sorting_types[customization_menu.large_monster_static_UI_parts_sorting_type_index];
end
changed, config.current_config.large_monster_UI.static.parts.sorting.reversed_order =
imgui.checkbox("Reversed Order", config.current_config.large_monster_UI.static.parts.sorting.reversed_order);
changed, config.current_config.large_monster_UI.static.parts.sorting.reversed_order = imgui.checkbox(
"Reversed Order", config.current_config.large_monster_UI.static.parts.sorting.reversed_order);
config_changed = config_changed or changed;
large_monster_static_UI_changed = large_monster_static_UI_changed or changed;
@@ -3778,8 +3818,8 @@ function customization_menu.draw()
0.1, 0, screen.height, "%.1f");
config_changed = config_changed or changed;
changed, customization_menu.time_UI_anchor_index = imgui.combo("Anchor",
customization_menu.time_UI_anchor_index, customization_menu.anchor_types);
changed, customization_menu.time_UI_anchor_index = imgui.combo("Anchor", customization_menu.time_UI_anchor_index,
customization_menu.anchor_types);
config_changed = config_changed or changed;
if changed then
config.current_config.time_UI.position.anchor =
@@ -3850,34 +3890,40 @@ function customization_menu.draw()
end
if imgui.tree_node("Damage Meter UI") then
local damage_meter_UI_changed = false;
changed, config.current_config.damage_meter_UI.enabled = imgui.checkbox("Enabled",
config.current_config.damage_meter_UI.enabled);
config_changed = config_changed or changed;
damage_meter_UI_changed = damage_meter_UI_changed or changed;
if imgui.tree_node("Settings") then
changed, config.current_config.damage_meter_UI.settings.hide_module_if_total_damage_is_zero = imgui.checkbox(
"Hide Module if Total Damage is 0",
config.current_config.damage_meter_UI.settings.hide_module_if_total_damage_is_zero);
config_changed = config_changed or changed;
damage_meter_UI_changed = damage_meter_UI_changed or changed;
changed, config.current_config.damage_meter_UI.settings.hide_player_if_player_damage_is_zero = imgui.checkbox(
"Hide Player if Player Damage is 0",
config.current_config.damage_meter_UI.settings.hide_player_if_player_damage_is_zero);
config_changed = config_changed or changed;
damage_meter_UI_changed = damage_meter_UI_changed or changed;
changed, config.current_config.damage_meter_UI.settings.hide_total_if_total_damage_is_zero = imgui.checkbox(
"Hide Total if Total Damage is 0",
config.current_config.damage_meter_UI.settings.hide_total_if_total_damage_is_zero);
"Hide Total if Total Damage is 0", config.current_config.damage_meter_UI.settings.hide_total_if_total_damage_is_zero);
config_changed = config_changed or changed;
damage_meter_UI_changed = damage_meter_UI_changed or changed;
changed, config.current_config.damage_meter_UI.settings.total_damage_offset_is_relative = imgui.checkbox(
"Total Damage Offset is Relative", config.current_config.damage_meter_UI.settings.total_damage_offset_is_relative);
config_changed = config_changed or changed;
damage_meter_UI_changed = damage_meter_UI_changed or changed;
changed, customization_menu.damage_meter_UI_orientation_index = imgui.combo("Orientation",
customization_menu.damage_meter_UI_orientation_index, customization_menu.orientation_types);
config_changed = config_changed or changed;
damage_meter_UI_changed = damage_meter_UI_changed or changed;
if changed then
config.current_config.damage_meter_UI.settings.orientation =
customization_menu.orientation_types[customization_menu.damage_meter_UI_orientation_index];
@@ -3887,6 +3933,7 @@ function customization_menu.draw()
imgui.combo("Highlighted Bar", customization_menu.damage_meter_UI_highlighted_bar_index,
customization_menu.damage_meter_UI_highlighted_bar_types);
config_changed = config_changed or changed;
damage_meter_UI_changed = damage_meter_UI_changed or changed;
if changed then
config.current_config.damage_meter_UI.settings.highlighted_bar =
customization_menu.damage_meter_UI_highlighted_bar_types[customization_menu.damage_meter_UI_highlighted_bar_index];
@@ -3896,6 +3943,7 @@ function customization_menu.draw()
imgui.combo("Damage Bars are Relative to", customization_menu.damage_meter_UI_damage_bar_relative_index,
customization_menu.damage_meter_UI_damage_bar_relative_types);
config_changed = config_changed or changed;
damage_meter_UI_changed = damage_meter_UI_changed or changed;
if changed then
config.current_config.damage_meter_UI.settings.damage_bar_relative_to =
customization_menu.damage_meter_UI_damage_bar_relative_types[customization_menu.damage_meter_UI_damage_bar_relative_index];
@@ -3905,6 +3953,7 @@ function customization_menu.draw()
imgui.combo("My Damage Bar Location", customization_menu.damage_meter_UI_my_damage_bar_location_index,
customization_menu.damage_meter_UI_my_damage_bar_location_types);
config_changed = config_changed or changed;
damage_meter_UI_changed = damage_meter_UI_changed or changed;
if changed then
config.current_config.damage_meter_UI.settings.my_damage_bar_location =
customization_menu.damage_meter_UI_my_damage_bar_location_types[customization_menu.damage_meter_UI_my_damage_bar_location_index];
@@ -3918,11 +3967,13 @@ function customization_menu.draw()
changed, config.current_config.damage_meter_UI.tracked_monster_types.small_monsters = imgui.checkbox(
"Small Monsters", config.current_config.damage_meter_UI.tracked_monster_types.small_monsters);
config_changed = config_changed or changed;
damage_meter_UI_changed = damage_meter_UI_changed or changed;
tracked_monster_types_changed = tracked_monster_types_changed or changed;
changed, config.current_config.damage_meter_UI.tracked_monster_types.large_monsters = imgui.checkbox(
"Large Monsters", config.current_config.damage_meter_UI.tracked_monster_types.large_monsters);
config_changed = config_changed or changed;
damage_meter_UI_changed = damage_meter_UI_changed or changed;
tracked_monster_types_changed = tracked_monster_types_changed or changed;
if tracked_monster_types_changed then
@@ -3940,31 +3991,37 @@ function customization_menu.draw()
changed, config.current_config.damage_meter_UI.tracked_damage_types.player_damage =
imgui.checkbox("Player Damage", config.current_config.damage_meter_UI.tracked_damage_types.player_damage);
config_changed = config_changed or changed;
damage_meter_UI_changed = damage_meter_UI_changed or changed;
tracked_damage_types_changed = tracked_damage_types_changed or changed;
changed, config.current_config.damage_meter_UI.tracked_damage_types.bomb_damage = imgui.checkbox("Bomb Damage",
config.current_config.damage_meter_UI.tracked_damage_types.bomb_damage);
config_changed = config_changed or changed;
damage_meter_UI_changed = damage_meter_UI_changed or changed;
tracked_damage_types_changed = tracked_damage_types_changed or changed;
changed, config.current_config.damage_meter_UI.tracked_damage_types.kunai_damage =
imgui.checkbox("Kunai Damage", config.current_config.damage_meter_UI.tracked_damage_types.kunai_damage);
config_changed = config_changed or changed;
damage_meter_UI_changed = damage_meter_UI_changed or changed;
tracked_damage_types_changed = tracked_damage_types_changed or changed;
changed, config.current_config.damage_meter_UI.tracked_damage_types.installation_damage = imgui.checkbox(
"Installation Damage", config.current_config.damage_meter_UI.tracked_damage_types.installation_damage);
config_changed = config_changed or changed;
damage_meter_UI_changed = damage_meter_UI_changed or changed;
tracked_damage_types_changed = tracked_damage_types_changed or changed;
changed, config.current_config.damage_meter_UI.tracked_damage_types.otomo_damage =
imgui.checkbox("Otomo Damage", config.current_config.damage_meter_UI.tracked_damage_types.otomo_damage);
config_changed = config_changed or changed;
damage_meter_UI_changed = damage_meter_UI_changed or changed;
tracked_damage_types_changed = tracked_damage_types_changed or changed;
changed, config.current_config.damage_meter_UI.tracked_damage_types.monster_damage =
imgui.checkbox("Monster Damage", config.current_config.damage_meter_UI.tracked_damage_types.monster_damage);
config_changed = config_changed or changed;
damage_meter_UI_changed = damage_meter_UI_changed or changed;
tracked_damage_types_changed = tracked_damage_types_changed or changed;
if tracked_damage_types_changed then
@@ -3981,10 +4038,12 @@ function customization_menu.draw()
changed, config.current_config.damage_meter_UI.spacing.x =
imgui.drag_float("X", config.current_config.damage_meter_UI.spacing.x, 0.1, -screen.width, screen.width, "%.1f");
config_changed = config_changed or changed;
damage_meter_UI_changed = damage_meter_UI_changed or changed;
changed, config.current_config.damage_meter_UI.spacing.y =
imgui.drag_float("Y", config.current_config.damage_meter_UI.spacing.y, 0.1, -screen.height, screen.height, "%.1f");
config_changed = config_changed or changed;
damage_meter_UI_changed = damage_meter_UI_changed or changed;
imgui.tree_pop();
end
@@ -3993,14 +4052,17 @@ function customization_menu.draw()
changed, config.current_config.damage_meter_UI.position.x =
imgui.drag_float("X", config.current_config.damage_meter_UI.position.x, 0.1, 0, screen.width, "%.1f");
config_changed = config_changed or changed;
damage_meter_UI_changed = damage_meter_UI_changed or changed;
changed, config.current_config.damage_meter_UI.position.y =
imgui.drag_float("Y", config.current_config.damage_meter_UI.position.y, 0.1, 0, screen.height, "%.1f");
config_changed = config_changed or changed;
damage_meter_UI_changed = damage_meter_UI_changed or changed;
changed, customization_menu.damage_meter_UI_anchor_index = imgui.combo("Anchor",
customization_menu.damage_meter_UI_anchor_index, customization_menu.anchor_types);
config_changed = config_changed or changed;
damage_meter_UI_changed = damage_meter_UI_changed or changed;
if changed then
config.current_config.damage_meter_UI.position.anchor =
customization_menu.anchor_types[customization_menu.damage_meter_UI_anchor_index];
@@ -4013,6 +4075,7 @@ function customization_menu.draw()
changed, customization_menu.damage_meter_UI_sort_type_index = imgui.combo("Type",
customization_menu.damage_meter_UI_sort_type_index, customization_menu.damage_meter_UI_sorting_types);
config_changed = config_changed or changed;
damage_meter_UI_changed = damage_meter_UI_changed or changed;
if changed then
config.current_config.damage_meter_UI.sorting.type =
customization_menu.damage_meter_UI_sorting_types[customization_menu.damage_meter_UI_sort_type_index];
@@ -4021,6 +4084,7 @@ function customization_menu.draw()
changed, config.current_config.damage_meter_UI.sorting.reversed_order =
imgui.checkbox("Reversed Order", config.current_config.damage_meter_UI.sorting.reversed_order);
config_changed = config_changed or changed;
damage_meter_UI_changed = damage_meter_UI_changed or changed;
imgui.tree_pop();
end
@@ -4029,24 +4093,29 @@ function customization_menu.draw()
changed, config.current_config.damage_meter_UI.player_name_label.visibility = imgui.checkbox("Visible",
config.current_config.damage_meter_UI.player_name_label.visibility);
config_changed = config_changed or changed;
damage_meter_UI_changed = damage_meter_UI_changed or changed;
if imgui.tree_node("Include") then
if imgui.tree_node("Me") then
changed, config.current_config.damage_meter_UI.player_name_label.include.myself.hunter_rank = imgui.checkbox(
"Hunter Rank", config.current_config.damage_meter_UI.player_name_label.include.myself.hunter_rank);
config_changed = config_changed or changed;
damage_meter_UI_changed = damage_meter_UI_changed or changed;
changed, config.current_config.damage_meter_UI.player_name_label.include.myself.word_player = imgui.checkbox(
"Word \"Player\"", config.current_config.damage_meter_UI.player_name_label.include.myself.word_player);
config_changed = config_changed or changed;
damage_meter_UI_changed = damage_meter_UI_changed or changed;
changed, config.current_config.damage_meter_UI.player_name_label.include.myself.player_id = imgui.checkbox(
"Player ID", config.current_config.damage_meter_UI.player_name_label.include.myself.player_id);
config_changed = config_changed or changed;
damage_meter_UI_changed = damage_meter_UI_changed or changed;
changed, config.current_config.damage_meter_UI.player_name_label.include.myself.player_name = imgui.checkbox(
"Player Name", config.current_config.damage_meter_UI.player_name_label.include.myself.player_name);
config_changed = config_changed or changed;
damage_meter_UI_changed = damage_meter_UI_changed or changed;
imgui.tree_pop();
end
@@ -4055,18 +4124,22 @@ function customization_menu.draw()
changed, config.current_config.damage_meter_UI.player_name_label.include.others.hunter_rank = imgui.checkbox(
"Hunter Rank", config.current_config.damage_meter_UI.player_name_label.include.others.hunter_rank);
config_changed = config_changed or changed;
damage_meter_UI_changed = damage_meter_UI_changed or changed;
changed, config.current_config.damage_meter_UI.player_name_label.include.others.word_player = imgui.checkbox(
"Word \"Player\"", config.current_config.damage_meter_UI.player_name_label.include.others.word_player);
config_changed = config_changed or changed;
damage_meter_UI_changed = damage_meter_UI_changed or changed;
changed, config.current_config.damage_meter_UI.player_name_label.include.others.player_id = imgui.checkbox(
"Player ID", config.current_config.damage_meter_UI.player_name_label.include.others.player_id);
config_changed = config_changed or changed;
damage_meter_UI_changed = damage_meter_UI_changed or changed;
changed, config.current_config.damage_meter_UI.player_name_label.include.others.player_name = imgui.checkbox(
"Player Name", config.current_config.damage_meter_UI.player_name_label.include.others.player_name);
config_changed = config_changed or changed;
damage_meter_UI_changed = damage_meter_UI_changed or changed;
imgui.tree_pop();
end
@@ -4078,10 +4151,12 @@ function customization_menu.draw()
changed, config.current_config.damage_meter_UI.player_name_label.offset.x = imgui.drag_float("X",
config.current_config.damage_meter_UI.player_name_label.offset.x, 0.1, -screen.width, screen.width, "%.1f");
config_changed = config_changed or changed;
damage_meter_UI_changed = damage_meter_UI_changed or changed;
changed, config.current_config.damage_meter_UI.player_name_label.offset.y = imgui.drag_float("Y",
config.current_config.damage_meter_UI.player_name_label.offset.y, 0.1, -screen.height, screen.height, "%.1f");
config_changed = config_changed or changed;
damage_meter_UI_changed = damage_meter_UI_changed or changed;
imgui.tree_pop();
end
@@ -4089,6 +4164,7 @@ function customization_menu.draw()
if imgui.tree_node("Color") then
-- changed, config.current_config.damage_meter_UI.player_name_label.color = imgui.color_picker_argb("", config.current_config.damage_meter_UI.player_name_label.color, color_picker_flags);
config_changed = config_changed or changed;
damage_meter_UI_changed = damage_meter_UI_changed or changed;
imgui.tree_pop();
end
@@ -4097,16 +4173,19 @@ function customization_menu.draw()
changed, config.current_config.damage_meter_UI.player_name_label.shadow.visibility = imgui.checkbox("Enable",
config.current_config.damage_meter_UI.player_name_label.shadow.visibility);
config_changed = config_changed or changed;
damage_meter_UI_changed = damage_meter_UI_changed or changed;
if imgui.tree_node("Offset") then
changed, config.current_config.damage_meter_UI.player_name_label.shadow.offset.x = imgui.drag_float("X",
config.current_config.damage_meter_UI.player_name_label.shadow.offset.x, 0.1, -screen.width, screen.width, "%.1f");
config_changed = config_changed or changed;
damage_meter_UI_changed = damage_meter_UI_changed or changed;
changed, config.current_config.damage_meter_UI.player_name_label.shadow.offset.y = imgui.drag_float("Y",
config.current_config.damage_meter_UI.player_name_label.shadow.offset.y, 0.1, -screen.height, screen.height,
"%.1f");
config_changed = config_changed or changed;
damage_meter_UI_changed = damage_meter_UI_changed or changed;
imgui.tree_pop();
end
@@ -4114,6 +4193,7 @@ function customization_menu.draw()
if imgui.tree_node("Color") then
-- changed, config.current_config.damage_meter_UI.player_name_label.shadow.color = imgui.color_picker_argb("", config.current_config.damage_meter_UI.player_name_label.shadow.color, color_picker_flags);
config_changed = config_changed or changed;
damage_meter_UI_changed = damage_meter_UI_changed or changed;
imgui.tree_pop();
end
@@ -4128,6 +4208,7 @@ function customization_menu.draw()
changed, config.current_config.damage_meter_UI.damage_value_label.visibility = imgui.checkbox("Visible",
config.current_config.damage_meter_UI.damage_value_label.visibility);
config_changed = config_changed or changed;
damage_meter_UI_changed = damage_meter_UI_changed or changed;
-- add text format
@@ -4135,10 +4216,12 @@ function customization_menu.draw()
changed, config.current_config.damage_meter_UI.damage_value_label.offset.x = imgui.drag_float("X",
config.current_config.damage_meter_UI.damage_value_label.offset.x, 0.1, -screen.width, screen.width, "%.1f");
config_changed = config_changed or changed;
damage_meter_UI_changed = damage_meter_UI_changed or changed;
changed, config.current_config.damage_meter_UI.damage_value_label.offset.y = imgui.drag_float("Y",
config.current_config.damage_meter_UI.damage_value_label.offset.y, 0.1, -screen.height, screen.height, "%.1f");
config_changed = config_changed or changed;
damage_meter_UI_changed = damage_meter_UI_changed or changed;
imgui.tree_pop();
end
@@ -4146,6 +4229,7 @@ function customization_menu.draw()
if imgui.tree_node("Color") then
-- changed, config.current_config.damage_meter_UI.damage_value_label.color = imgui.color_picker_argb("", config.current_config.damage_meter_UI.damage_value_label.color, color_picker_flags);
config_changed = config_changed or changed;
damage_meter_UI_changed = damage_meter_UI_changed or changed;
imgui.tree_pop();
end
@@ -4154,16 +4238,19 @@ function customization_menu.draw()
changed, config.current_config.damage_meter_UI.damage_value_label.shadow.visibility = imgui.checkbox("Enable",
config.current_config.damage_meter_UI.damage_value_label.shadow.visibility);
config_changed = config_changed or changed;
damage_meter_UI_changed = damage_meter_UI_changed or changed;
if imgui.tree_node("Offset") then
changed, config.current_config.damage_meter_UI.damage_value_label.shadow.offset.x = imgui.drag_float("X",
config.current_config.damage_meter_UI.damage_value_label.shadow.offset.x, 0.1, -screen.width, screen.width, "%.1f");
config_changed = config_changed or changed;
damage_meter_UI_changed = damage_meter_UI_changed or changed;
changed, config.current_config.damage_meter_UI.damage_value_label.shadow.offset.y = imgui.drag_float("Y",
config.current_config.damage_meter_UI.damage_value_label.shadow.offset.y, 0.1, -screen.height, screen.height,
"%.1f");
config_changed = config_changed or changed;
damage_meter_UI_changed = damage_meter_UI_changed or changed;
imgui.tree_pop();
end
@@ -4171,6 +4258,7 @@ function customization_menu.draw()
if imgui.tree_node("Color") then
-- changed, config.current_config.damage_meter_UI.damage_value_label.shadow.color = imgui.color_picker_argb("", config.current_config.damage_meter_UI.damage_value_label.shadow.color, color_picker_flags);
config_changed = config_changed or changed;
damage_meter_UI_changed = damage_meter_UI_changed or changed;
imgui.tree_pop();
end
@@ -4185,6 +4273,7 @@ function customization_menu.draw()
changed, config.current_config.damage_meter_UI.damage_percentage_label.visibility = imgui.checkbox("Visible",
config.current_config.damage_meter_UI.damage_percentage_label.visibility);
config_changed = config_changed or changed;
damage_meter_UI_changed = damage_meter_UI_changed or changed;
-- add text format
@@ -4192,10 +4281,12 @@ function customization_menu.draw()
changed, config.current_config.damage_meter_UI.damage_percentage_label.offset.x = imgui.drag_float("X",
config.current_config.damage_meter_UI.damage_percentage_label.offset.x, 0.1, -screen.width, screen.width, "%.1f");
config_changed = config_changed or changed;
damage_meter_UI_changed = damage_meter_UI_changed or changed;
changed, config.current_config.damage_meter_UI.damage_percentage_label.offset.y = imgui.drag_float("Y",
config.current_config.damage_meter_UI.damage_percentage_label.offset.y, 0.1, -screen.height, screen.height, "%.1f");
config_changed = config_changed or changed;
damage_meter_UI_changed = damage_meter_UI_changed or changed;
imgui.tree_pop();
end
@@ -4203,6 +4294,7 @@ function customization_menu.draw()
if imgui.tree_node("Color") then
-- changed, config.current_config.damage_meter_UI.damage_percentage_label.color = imgui.color_picker_argb("", config.current_config.damage_meter_UI.damage_percentage_label.color, color_picker_flags);
config_changed = config_changed or changed;
damage_meter_UI_changed = damage_meter_UI_changed or changed;
imgui.tree_pop();
end
@@ -4211,17 +4303,20 @@ function customization_menu.draw()
changed, config.current_config.damage_meter_UI.damage_percentage_label.shadow.visibility = imgui.checkbox("Enable",
config.current_config.damage_meter_UI.damage_percentage_label.shadow.visibility);
config_changed = config_changed or changed;
damage_meter_UI_changed = damage_meter_UI_changed or changed;
if imgui.tree_node("Offset") then
changed, config.current_config.damage_meter_UI.damage_percentage_label.shadow.offset.x = imgui.drag_float("X",
config.current_config.damage_meter_UI.damage_percentage_label.shadow.offset.x, 0.1, -screen.width, screen.width,
"%.1f");
config_changed = config_changed or changed;
damage_meter_UI_changed = damage_meter_UI_changed or changed;
changed, config.current_config.damage_meter_UI.damage_percentage_label.shadow.offset.y = imgui.drag_float("Y",
config.current_config.damage_meter_UI.damage_percentage_label.shadow.offset.y, 0.1, -screen.height, screen.height,
"%.1f");
config_changed = config_changed or changed;
damage_meter_UI_changed = damage_meter_UI_changed or changed;
imgui.tree_pop();
end
@@ -4229,6 +4324,7 @@ function customization_menu.draw()
if imgui.tree_node("Color") then
-- changed, config.current_config.damage_meter_UI.damage_percentage_label.shadow.color = imgui.color_picker_argb("", config.current_config.damage_meter_UI.damage_percentage_label.shadow.color, color_picker_flags);
config_changed = config_changed or changed;
damage_meter_UI_changed = damage_meter_UI_changed or changed;
imgui.tree_pop();
end
@@ -4243,6 +4339,7 @@ function customization_menu.draw()
changed, config.current_config.damage_meter_UI.total_damage_label.visibility = imgui.checkbox("Visible",
config.current_config.damage_meter_UI.total_damage_label.visibility);
config_changed = config_changed or changed;
damage_meter_UI_changed = damage_meter_UI_changed or changed;
-- add text format
@@ -4250,10 +4347,12 @@ function customization_menu.draw()
changed, config.current_config.damage_meter_UI.total_damage_label.offset.x = imgui.drag_float("X",
config.current_config.damage_meter_UI.total_damage_label.offset.x, 0.1, -screen.width, screen.width, "%.1f");
config_changed = config_changed or changed;
damage_meter_UI_changed = damage_meter_UI_changed or changed;
changed, config.current_config.damage_meter_UI.total_damage_label.offset.y = imgui.drag_float("Y",
config.current_config.damage_meter_UI.total_damage_label.offset.y, 0.1, -screen.height, screen.height, "%.1f");
config_changed = config_changed or changed;
damage_meter_UI_changed = damage_meter_UI_changed or changed;
imgui.tree_pop();
end
@@ -4261,6 +4360,7 @@ function customization_menu.draw()
if imgui.tree_node("Color") then
-- changed, config.current_config.damage_meter_UI.total_damage_label.color = imgui.color_picker_argb("", config.current_config.damage_meter_UI.total_damage_label.color, color_picker_flags);
config_changed = config_changed or changed;
damage_meter_UI_changed = damage_meter_UI_changed or changed;
imgui.tree_pop();
end
@@ -4269,16 +4369,19 @@ function customization_menu.draw()
changed, config.current_config.damage_meter_UI.total_damage_label.shadow.visibility = imgui.checkbox("Enable",
config.current_config.damage_meter_UI.total_damage_label.shadow.visibility);
config_changed = config_changed or changed;
damage_meter_UI_changed = damage_meter_UI_changed or changed;
if imgui.tree_node("Offset") then
changed, config.current_config.damage_meter_UI.total_damage_label.shadow.offset.x = imgui.drag_float("X",
config.current_config.damage_meter_UI.total_damage_label.shadow.offset.x, 0.1, -screen.width, screen.width, "%.1f");
config_changed = config_changed or changed;
damage_meter_UI_changed = damage_meter_UI_changed or changed;
changed, config.current_config.damage_meter_UI.total_damage_label.shadow.offset.y = imgui.drag_float("Y",
config.current_config.damage_meter_UI.total_damage_label.shadow.offset.y, 0.1, -screen.height, screen.height,
"%.1f");
config_changed = config_changed or changed;
damage_meter_UI_changed = damage_meter_UI_changed or changed;
imgui.tree_pop();
end
@@ -4286,6 +4389,7 @@ function customization_menu.draw()
if imgui.tree_node("Color") then
-- changed, config.current_config.damage_meter_UI.total_damage_label.shadow.color = imgui.color_picker_argb("", config.current_config.damage_meter_UI.total_damage_label.shadow.color, color_picker_flags);
config_changed = config_changed or changed;
damage_meter_UI_changed = damage_meter_UI_changed or changed;
imgui.tree_pop();
end
@@ -4300,6 +4404,7 @@ function customization_menu.draw()
changed, config.current_config.damage_meter_UI.total_damage_value_label.visibility = imgui.checkbox("Visible",
config.current_config.damage_meter_UI.total_damage_value_label.visibility);
config_changed = config_changed or changed;
damage_meter_UI_changed = damage_meter_UI_changed or changed;
-- add text format
@@ -4307,10 +4412,12 @@ function customization_menu.draw()
changed, config.current_config.damage_meter_UI.total_damage_value_label.offset.x = imgui.drag_float("X",
config.current_config.damage_meter_UI.total_damage_value_label.offset.x, 0.1, -screen.width, screen.width, "%.1f");
config_changed = config_changed or changed;
damage_meter_UI_changed = damage_meter_UI_changed or changed;
changed, config.current_config.damage_meter_UI.total_damage_value_label.offset.y = imgui.drag_float("Y",
config.current_config.damage_meter_UI.total_damage_value_label.offset.y, 0.1, -screen.height, screen.height, "%.1f");
config_changed = config_changed or changed;
damage_meter_UI_changed = damage_meter_UI_changed or changed;
imgui.tree_pop();
end
@@ -4318,6 +4425,7 @@ function customization_menu.draw()
if imgui.tree_node("Color") then
-- changed, config.current_config.damage_meter_UI.total_damage_value_label.color = imgui.color_picker_argb("", config.current_config.damage_meter_UI.total_damage_value_label.color, color_picker_flags);
config_changed = config_changed or changed;
damage_meter_UI_changed = damage_meter_UI_changed or changed;
imgui.tree_pop();
end
@@ -4326,17 +4434,20 @@ function customization_menu.draw()
changed, config.current_config.damage_meter_UI.total_damage_value_label.shadow.visibility = imgui.checkbox("Enable",
config.current_config.damage_meter_UI.total_damage_value_label.shadow.visibility);
config_changed = config_changed or changed;
damage_meter_UI_changed = damage_meter_UI_changed or changed;
if imgui.tree_node("Offset") then
changed, config.current_config.damage_meter_UI.total_damage_value_label.shadow.offset.x = imgui.drag_float("X",
config.current_config.damage_meter_UI.total_damage_value_label.shadow.offset.x, 0.1, -screen.width, screen.width,
"%.1f");
config_changed = config_changed or changed;
damage_meter_UI_changed = damage_meter_UI_changed or changed;
changed, config.current_config.damage_meter_UI.total_damage_value_label.shadow.offset.y = imgui.drag_float("Y",
config.current_config.damage_meter_UI.total_damage_value_label.shadow.offset.y, 0.1, -screen.height,
screen.height, "%.1f");
config_changed = config_changed or changed;
damage_meter_UI_changed = damage_meter_UI_changed or changed;
imgui.tree_pop();
end
@@ -4344,6 +4455,7 @@ function customization_menu.draw()
if imgui.tree_node("Color") then
-- changed, config.current_config.damage_meter_UI.total_damage_value_label.shadow.color = imgui.color_picker_argb("", config.current_config.damage_meter_UI.total_damage_value_label.shadow.color, color_picker_flags);
config_changed = config_changed or changed;
damage_meter_UI_changed = damage_meter_UI_changed or changed;
imgui.tree_pop();
end
@@ -4358,17 +4470,20 @@ function customization_menu.draw()
changed, config.current_config.damage_meter_UI.damage_bar.visibility = imgui.checkbox("Visible",
config.current_config.damage_meter_UI.damage_bar.visibility);
config_changed = config_changed or changed;
damage_meter_UI_changed = damage_meter_UI_changed or changed;
if imgui.tree_node("Offset") then
changed, config.current_config.damage_meter_UI.damage_bar.offset.x =
imgui.drag_float("X", config.current_config.damage_meter_UI.damage_bar.offset.x, 0.1, -screen.width, screen.width,
"%.1f");
config_changed = config_changed or changed;
damage_meter_UI_changed = damage_meter_UI_changed or changed;
changed, config.current_config.damage_meter_UI.damage_bar.offset.y =
imgui.drag_float("Y", config.current_config.damage_meter_UI.damage_bar.offset.y, 0.1, -screen.height,
screen.height, "%.1f");
config_changed = config_changed or changed;
damage_meter_UI_changed = damage_meter_UI_changed or changed;
imgui.tree_pop();
end
@@ -4377,10 +4492,12 @@ function customization_menu.draw()
changed, config.current_config.damage_meter_UI.damage_bar.size.width = imgui.drag_float("Width",
config.current_config.damage_meter_UI.damage_bar.size.width, 0.1, 0, screen.width, "%.1f");
config_changed = config_changed or changed;
damage_meter_UI_changed = damage_meter_UI_changed or changed;
changed, config.current_config.damage_meter_UI.damage_bar.size.height = imgui.drag_float("Height",
config.current_config.damage_meter_UI.damage_bar.size.height, 0.1, 0, screen.height, "%.1f");
config_changed = config_changed or changed;
damage_meter_UI_changed = damage_meter_UI_changed or changed;
imgui.tree_pop();
end
@@ -4389,6 +4506,7 @@ function customization_menu.draw()
if imgui.tree_node("Foreground") then
-- changed, config.current_config.damage_meter_UI.damage_bar.colors.foreground = imgui.color_picker_argb("", config.current_config.damage_meter_UI.damage_bar.colors.foreground, color_picker_flags);
config_changed = config_changed or changed;
damage_meter_UI_changed = damage_meter_UI_changed or changed;
imgui.tree_pop();
end
@@ -4396,6 +4514,7 @@ function customization_menu.draw()
if imgui.tree_node("Background") then
-- changed, config.current_config.damage_meter_UI.damage_bar.colors.background = imgui.color_picker_argb("", config.current_config.damage_meter_UI.damage_bar.colors.background, color_picker_flags);
config_changed = config_changed or changed;
damage_meter_UI_changed = damage_meter_UI_changed or changed;
imgui.tree_pop();
end
@@ -4410,15 +4529,18 @@ function customization_menu.draw()
changed, config.current_config.damage_meter_UI.highlighted_damage_bar.visibility = imgui.checkbox("Visible",
config.current_config.damage_meter_UI.highlighted_damage_bar.visibility);
config_changed = config_changed or changed;
damage_meter_UI_changed = damage_meter_UI_changed or changed;
if imgui.tree_node("Offset") then
changed, config.current_config.damage_meter_UI.highlighted_damage_bar.offset.x = imgui.drag_float("X",
config.current_config.damage_meter_UI.highlighted_damage_bar.offset.x, 0.1, -screen.width, screen.width, "%.1f");
config_changed = config_changed or changed;
damage_meter_UI_changed = damage_meter_UI_changed or changed;
changed, config.current_config.damage_meter_UI.highlighted_damage_bar.offset.y = imgui.drag_float("Y",
config.current_config.damage_meter_UI.highlighted_damage_bar.offset.y, 0.1, -screen.height, screen.height, "%.1f");
config_changed = config_changed or changed;
damage_meter_UI_changed = damage_meter_UI_changed or changed;
imgui.tree_pop();
end
@@ -4427,10 +4549,12 @@ function customization_menu.draw()
changed, config.current_config.damage_meter_UI.highlighted_damage_bar.size.width = imgui.drag_float("Width",
config.current_config.damage_meter_UI.highlighted_damage_bar.size.width, 0.1, 0, screen.width, "%.1f");
config_changed = config_changed or changed;
damage_meter_UI_changed = damage_meter_UI_changed or changed;
changed, config.current_config.damage_meter_UI.highlighted_damage_bar.size.height = imgui.drag_float("Height",
config.current_config.damage_meter_UI.highlighted_damage_bar.size.height, 0.1, 0, screen.height, "%.1f");
config_changed = config_changed or changed;
damage_meter_UI_changed = damage_meter_UI_changed or changed;
imgui.tree_pop();
end
@@ -4439,6 +4563,7 @@ function customization_menu.draw()
if imgui.tree_node("Foreground") then
-- changed, config.current_config.damage_meter_UI.highlighted_damage_bar.colors.foreground = imgui.color_picker_argb("", config.current_config.damage_meter_UI.highlighted_damage_bar.colors.foreground, color_picker_flags);
config_changed = config_changed or changed;
damage_meter_UI_changed = damage_meter_UI_changed or changed;
imgui.tree_pop();
end
@@ -4446,6 +4571,7 @@ function customization_menu.draw()
if imgui.tree_node("Background") then
-- changed, config.current_config.damage_meter_UI.highlighted_damage_bar.colors.background = imgui.color_picker_argb("", config.current_config.damage_meter_UI.highlighted_damage_bar.colors.background, color_picker_flags);
config_changed = config_changed or changed;
damage_meter_UI_changed = damage_meter_UI_changed or changed;
imgui.tree_pop();
end
@@ -4456,6 +4582,12 @@ function customization_menu.draw()
imgui.tree_pop();
end
if damage_meter_UI_changed then
for _, _player in pairs(player.list) do
player.init_UI(_player);
end
end
imgui.tree_pop();
end
@@ -4468,6 +4600,7 @@ end
function customization_menu.init_module()
table_helpers = require("MHR_Overlay.Misc.table_helpers");
language = require("MHR_Overlay.Misc.language");
config = require("MHR_Overlay.Misc.config");
screen = require("MHR_Overlay.Game_Handler.screen");
player = require("MHR_Overlay.Damage_Meter.player");