Add include options for value/max labels

This commit is contained in:
GreenComfyTea
2023-03-06 13:24:01 +02:00
parent 7346b8d96f
commit 6a4f4a9dfe
16 changed files with 441 additions and 164 deletions

View File

@@ -363,4 +363,4 @@ end
if imgui.begin_table == nil then if imgui.begin_table == nil then
re.msg(language.current_language.customization_menu.reframework_outdated); re.msg(language.current_language.customization_menu.reframework_outdated);
end end

View File

@@ -64,9 +64,7 @@ local height_field = size_type:get_field("h");
function screen.get_game_window_size() function screen.get_game_window_size()
if scene_view == nil then if scene_view == nil then
scene_view = sdk.call_native_func(singletons.scene_manager, scene_view = sdk.call_native_func(singletons.scene_manager, sdk.find_type_definition("via.SceneManager") , "get_MainView");
sdk.find_type_definition("via.SceneManager")
, "get_MainView");
if scene_view == nil then if scene_view == nil then
--log.error("[MHR_Overlay.lua] No scene view"); --log.error("[MHR_Overlay.lua] No scene view");

File diff suppressed because it is too large Load Diff

View File

@@ -494,6 +494,9 @@ language.default_language = {
duration = "Duration", duration = "Duration",
hide_bar_for_infinite_buffs = "Hide Bar for infinite Buffs", hide_bar_for_infinite_buffs = "Hide Bar for infinite Buffs",
hide_timer_for_infinite_buffs = "Hide Timer for infinite Buffs", hide_timer_for_infinite_buffs = "Hide Timer for infinite Buffs",
current_value = "Current Value",
max_value = "Max Value"
} }
}; };

View File

@@ -85,20 +85,32 @@ function ailment_UI_entity.draw(ailment, ailment_UI, cached_config, position_on_
ailment_name = ailment_name .. "x" .. tostring(ailment.activate_count); ailment_name = ailment_name .. "x" .. tostring(ailment.activate_count);
end end
local total_buildup_string = "";
if not ailment.is_active then
local include_current_value = ailment_UI.value_label.include.current_value;
local include_max_value = ailment_UI.value_label.include.max_value;
if include_current_value and include_max_value then
total_buildup_string = string.format("%.0f/%.0f", ailment.total_buildup, ailment.buildup_limit);
elseif include_current_value then
total_buildup_string = string.format("%.0f", ailment.total_buildup);
elseif include_max_value then
total_buildup_string = string.format("%.0f", ailment.buildup_limit);
end
end
if ailment.is_active then if ailment.is_active then
drawing.draw_bar(ailment_UI.bar, position_on_screen, opacity_scale, ailment.timer_percentage); drawing.draw_bar(ailment_UI.bar, position_on_screen, opacity_scale, ailment.timer_percentage);
drawing.draw_label(ailment_UI.name_label, position_on_screen, opacity_scale, ailment_name); drawing.draw_label(ailment_UI.name_label, position_on_screen, opacity_scale, ailment_name);
drawing.draw_label(ailment_UI.text_label, position_on_screen, opacity_scale, language.current_language.UI.buildup); drawing.draw_label(ailment_UI.text_label, position_on_screen, opacity_scale, language.current_language.UI.buildup);
drawing.draw_label(ailment_UI.timer_label, position_on_screen, opacity_scale, ailment.minutes_left, drawing.draw_label(ailment_UI.timer_label, position_on_screen, opacity_scale, ailment.minutes_left, ailment.seconds_left);
ailment.seconds_left);
else else
drawing.draw_bar(ailment_UI.bar, position_on_screen, opacity_scale, ailment.buildup_percentage); drawing.draw_bar(ailment_UI.bar, position_on_screen, opacity_scale, ailment.buildup_percentage);
drawing.draw_label(ailment_UI.name_label, position_on_screen, opacity_scale, ailment_name); drawing.draw_label(ailment_UI.name_label, position_on_screen, opacity_scale, ailment_name);
drawing.draw_label(ailment_UI.text_label, position_on_screen, opacity_scale, language.current_language.UI.buildup); drawing.draw_label(ailment_UI.text_label, position_on_screen, opacity_scale, language.current_language.UI.buildup);
drawing.draw_label(ailment_UI.value_label, position_on_screen, opacity_scale, ailment.total_buildup, drawing.draw_label(ailment_UI.value_label, position_on_screen, opacity_scale, total_buildup_string);
ailment.buildup_limit);
drawing.draw_label(ailment_UI.percentage_label, position_on_screen, opacity_scale, 100 * ailment.buildup_percentage); drawing.draw_label(ailment_UI.percentage_label, position_on_screen, opacity_scale, 100 * ailment.buildup_percentage);
end end
end end

View File

@@ -151,9 +151,50 @@ function body_part_UI_entity.draw(part, part_UI, cached_config, position_on_scre
end end
end end
local health_string = string.format("%.0f/%.0f", part.health, part.max_health); -- health value string
local break_health_string = string.format("%.0f/%.0f", part.break_health, part.break_max_health); local health_string = "";
local loss_health_string = string.format("%.0f/%.0f", part.loss_health, part.loss_max_health); if draw_health then
local include_health_current_value = part_UI.flinch_value_label.include.current_value;
local include_health_max_value = part_UI.flinch_value_label.include.max_value;
if include_health_current_value and include_health_max_value then
health_string = string.format("%.0f/%.0f", part.health, part.max_health);
elseif include_health_current_value then
health_string = string.format("%.0f", part.health);
elseif include_health_max_value then
health_string = string.format("%.0f", part.max_health);
end
end
-- break health value string
local break_health_string = "";
if draw_break then
local include_break_health_current_value = part_UI.break_value_label.include.current_value;
local include_break_health_max_value = part_UI.break_value_label.include.max_value;
if include_break_health_current_value and include_break_health_max_value then
break_health_string = string.format("%.0f/%.0f", part.break_health, part.break_max_health);
elseif include_break_health_current_value then
break_health_string = string.format("%.0f", part.break_health);
elseif include_break_health_max_value then
break_health_string = string.format("%.0f", part.break_max_health);
end
end
-- loss health value string
local loss_health_string = "";
if draw_severe then
local include_loss_health_current_value = part_UI.loss_value_label.include.current_value;
local include_loss_health_max_value = part_UI.loss_value_label.include.max_value;
if include_loss_health_current_value and include_loss_health_max_value then
loss_health_string = string.format("%.0f/%.0f", part.loss_health, part.loss_max_health);
elseif include_loss_health_current_value then
loss_health_string = string.format("%.0f", part.loss_health);
elseif include_loss_health_max_value then
loss_health_string = string.format("%.0f", part.loss_max_health);
end
end
local flinch_position_on_screen = { local flinch_position_on_screen = {
x = position_on_screen.x + cached_config.part_health.offset.x, x = position_on_screen.x + cached_config.part_health.offset.x,
@@ -177,7 +218,7 @@ function body_part_UI_entity.draw(part, part_UI, cached_config, position_on_scre
drawing.draw_bar(part_UI.flinch_bar, flinch_position_on_screen, opacity_scale, part.health_percentage); drawing.draw_bar(part_UI.flinch_bar, flinch_position_on_screen, opacity_scale, part.health_percentage);
end end
if draw_break then if draw_break then
drawing.draw_bar(part_UI.break_bar, break_position_on_screen, opacity_scale, part.break_health_percentage); drawing.draw_bar(part_UI.break_bar, break_position_on_screen, opacity_scale, part.break_health_percentage);
end end

View File

@@ -69,10 +69,22 @@ function health_UI_entity.draw(monster, health_UI, position_on_screen, opacity_s
return; return;
end end
local include_current_value = health_UI.value_label.include.current_value;
local include_max_value = health_UI.value_label.include.max_value;
local health_string;
if include_current_value and include_max_value then
health_string = string.format("%.0f/%.0f", monster.health, monster.max_health);
elseif include_current_value then
health_string = string.format("%.0f", monster.health);
elseif include_max_value then
health_string = string.format("%.0f", monster.max_health);
end
drawing.draw_bar(health_UI.bar, position_on_screen, opacity_scale, monster.health_percentage); drawing.draw_bar(health_UI.bar, position_on_screen, opacity_scale, monster.health_percentage);
drawing.draw_label(health_UI.text_label, position_on_screen, opacity_scale, language.current_language.UI.HP); drawing.draw_label(health_UI.text_label, position_on_screen, opacity_scale, language.current_language.UI.HP);
drawing.draw_label(health_UI.value_label, position_on_screen, opacity_scale, monster.health, monster.max_health); drawing.draw_label(health_UI.value_label, position_on_screen, opacity_scale, health_string);
drawing.draw_label(health_UI.percentage_label, position_on_screen, opacity_scale, 100 * monster.health_percentage); drawing.draw_label(health_UI.percentage_label, position_on_screen, opacity_scale, 100 * monster.health_percentage);
end end

View File

@@ -73,6 +73,20 @@ function rage_UI_entity.draw(monster, rage_UI, position_on_screen, opacity_scale
return; return;
end end
local rage_string = "";
if not monster.is_in_rage then
local include_current_value = rage_UI.value_label.include.current_value;
local include_max_value = rage_UI.value_label.include.max_value;
if include_current_value and include_max_value then
rage_string = string.format("%.0f/%.0f", monster.rage_point, monster.rage_limit);
elseif include_current_value then
rage_string = string.format("%.0f", monster.rage_point);
elseif include_max_value then
rage_string = string.format("%.0f", monster.rage_limit);
end
end
if monster.is_in_rage then if monster.is_in_rage then
drawing.draw_bar(rage_UI.bar, position_on_screen, opacity_scale, monster.rage_timer_percentage); drawing.draw_bar(rage_UI.bar, position_on_screen, opacity_scale, monster.rage_timer_percentage);
@@ -83,7 +97,7 @@ function rage_UI_entity.draw(monster, rage_UI, position_on_screen, opacity_scale
drawing.draw_bar(rage_UI.bar, position_on_screen, opacity_scale, monster.rage_percentage); drawing.draw_bar(rage_UI.bar, position_on_screen, opacity_scale, monster.rage_percentage);
drawing.draw_label(rage_UI.text_label, position_on_screen, opacity_scale, language.current_language.UI.rage); drawing.draw_label(rage_UI.text_label, position_on_screen, opacity_scale, language.current_language.UI.rage);
drawing.draw_label(rage_UI.value_label, position_on_screen, opacity_scale, monster.rage_point, monster.rage_limit); drawing.draw_label(rage_UI.value_label, position_on_screen, opacity_scale, rage_string);
drawing.draw_label(rage_UI.percentage_label, position_on_screen, opacity_scale, 100 * monster.rage_percentage); drawing.draw_label(rage_UI.percentage_label, position_on_screen, opacity_scale, 100 * monster.rage_percentage);
end end
end end

View File

@@ -71,17 +71,30 @@ function stamina_UI_entity.draw(monster, stamina_UI, position_on_screen, opacity
return; return;
end end
local stamina_string = "";
if not monster.is_tired then
local include_current_value = stamina_UI.value_label.include.current_value;
local include_max_value = stamina_UI.value_label.include.max_value;
if include_current_value and include_max_value then
stamina_string = string.format("%.0f/%.0f", monster.stamina, monster.max_stamina);
elseif include_current_value then
stamina_string = string.format("%.0f", monster.stamina);
elseif include_max_value then
stamina_string = string.format("%.0f", monster.max_stamina);
end
end
drawing.draw_label(stamina_UI.text_label, position_on_screen, opacity_scale, language.current_language.UI.stamina); drawing.draw_label(stamina_UI.text_label, position_on_screen, opacity_scale, language.current_language.UI.stamina);
if monster.is_tired then if monster.is_tired then
drawing.draw_bar(stamina_UI.bar, position_on_screen, opacity_scale, monster.tired_timer_percentage); drawing.draw_bar(stamina_UI.bar, position_on_screen, opacity_scale, monster.tired_timer_percentage);
drawing.draw_label(stamina_UI.timer_label, position_on_screen, opacity_scale, monster.tired_minutes_left, drawing.draw_label(stamina_UI.timer_label, position_on_screen, opacity_scale, monster.tired_minutes_left, monster.tired_seconds_left);
monster.tired_seconds_left);
else else
drawing.draw_bar(stamina_UI.bar, position_on_screen, opacity_scale, monster.stamina_percentage); drawing.draw_bar(stamina_UI.bar, position_on_screen, opacity_scale, monster.stamina_percentage);
drawing.draw_label(stamina_UI.value_label, position_on_screen, opacity_scale, monster.stamina, monster.max_stamina); drawing.draw_label(stamina_UI.value_label, position_on_screen, opacity_scale, stamina_string);
drawing.draw_label(stamina_UI.percentage_label, position_on_screen, opacity_scale, 100 * monster.stamina_percentage); drawing.draw_label(stamina_UI.percentage_label, position_on_screen, opacity_scale, 100 * monster.stamina_percentage);
end end
end end

View File

@@ -124,7 +124,12 @@ function drawing.draw_label(label, position, opacity_scale, ...)
return; return;
end end
local text = string.format(label.text, table.unpack({...})); local text = string.format(label.text_format, table.unpack({...}));
if text == "" then
return;
end
local position_x = position.x + label.offset.x; local position_x = position.x + label.offset.x;
local position_y = position.y + label.offset.y; local position_y = position.y + label.offset.y;

View File

@@ -83,6 +83,7 @@
"creature_name_label": "Creature Name Label", "creature_name_label": "Creature Name Label",
"crown": "Crown", "crown": "Crown",
"crown_thresholds": "Crown Thresholds", "crown_thresholds": "Crown Thresholds",
"current_value": "Current Value",
"cutscene": "Cutscene", "cutscene": "Cutscene",
"damage": "Damage", "damage": "Damage",
"damage_bar": "Damage Bar", "damage_bar": "Damage Bar",
@@ -177,6 +178,7 @@
"master_rank": "Master Rank", "master_rank": "Master Rank",
"max_distance": "Max Distance", "max_distance": "Max Distance",
"max_monster_updates_per_tick": "Max Monster Updates per Tick", "max_monster_updates_per_tick": "Max Monster Updates per Tick",
"max_value": "Max Value",
"me": "Me", "me": "Me",
"menu_font": "Menu Font", "menu_font": "Menu Font",
"menu_font_change_disclaimer": "Changing Language and Menu Font Size several times will cause a crash!", "menu_font_change_disclaimer": "Changing Language and Menu Font Size several times will cause a crash!",

View File

@@ -83,6 +83,7 @@
"creature_name_label": "モンスターの名前ラベル", "creature_name_label": "モンスターの名前ラベル",
"crown": "王冠", "crown": "王冠",
"crown_thresholds": "王冠の閾値", "crown_thresholds": "王冠の閾値",
"current_value": "Current Value",
"cutscene": "Cutscene", "cutscene": "Cutscene",
"damage": "ダメージ", "damage": "ダメージ",
"damage_bar": "ダメージバー", "damage_bar": "ダメージバー",
@@ -177,6 +178,7 @@
"master_rank": "マスターランク", "master_rank": "マスターランク",
"max_distance": "最大距離", "max_distance": "最大距離",
"max_monster_updates_per_tick": "モンスター情報をアップデートする間隔", "max_monster_updates_per_tick": "モンスター情報をアップデートする間隔",
"max_value": "Max Value",
"me": "自分", "me": "自分",
"menu_font": "メニューで使うフォント", "menu_font": "メニューで使うフォント",
"menu_font_change_disclaimer": "言語とメニューのフォントサイズを何度も変更すると、クラッシュが発生します。", "menu_font_change_disclaimer": "言語とメニューのフォントサイズを何度も変更すると、クラッシュが発生します。",

View File

@@ -83,6 +83,7 @@
"creature_name_label": "환경생물 이름 정보", "creature_name_label": "환경생물 이름 정보",
"crown": "금관", "crown": "금관",
"crown_thresholds": "금관 판정값", "crown_thresholds": "금관 판정값",
"current_value": "Current Value",
"cutscene": "컷신", "cutscene": "컷신",
"damage": "대미지", "damage": "대미지",
"damage_bar": "대미지 막대", "damage_bar": "대미지 막대",
@@ -177,6 +178,7 @@
"master_rank": "마스터 랭크", "master_rank": "마스터 랭크",
"max_distance": "최대 거리", "max_distance": "최대 거리",
"max_monster_updates_per_tick": "틱당 최대 몬스터 갱신 횟수", "max_monster_updates_per_tick": "틱당 최대 몬스터 갱신 횟수",
"max_value": "Max Value",
"me": "나", "me": "나",
"menu_font": "메뉴 글꼴", "menu_font": "메뉴 글꼴",
"menu_font_change_disclaimer": "언어 및 메뉴 글꼴 크기를 여러 번 변경하면 비정상 종료가 될 수 있습니다!", "menu_font_change_disclaimer": "언어 및 메뉴 글꼴 크기를 여러 번 변경하면 비정상 종료가 될 수 있습니다!",

View File

@@ -83,6 +83,7 @@
"creature_name_label": "Метка имени существа", "creature_name_label": "Метка имени существа",
"crown": "Корона", "crown": "Корона",
"crown_thresholds": "Лимиты корон", "crown_thresholds": "Лимиты корон",
"current_value": "Current Value",
"cutscene": "Катсцена", "cutscene": "Катсцена",
"damage": "Урон", "damage": "Урон",
"damage_bar": "Шкала урона", "damage_bar": "Шкала урона",
@@ -177,6 +178,7 @@
"master_rank": "Ранг мастера", "master_rank": "Ранг мастера",
"max_distance": "Макс. расстояние", "max_distance": "Макс. расстояние",
"max_monster_updates_per_tick": "Макс. кол-во обновлений за тик", "max_monster_updates_per_tick": "Макс. кол-во обновлений за тик",
"max_value": "Max Value",
"me": "Я", "me": "Я",
"menu_font": "Шрифт меню", "menu_font": "Шрифт меню",
"menu_font_change_disclaimer": "Изменение языка и размера шрифта меню несколько раз приведёт к вылету!", "menu_font_change_disclaimer": "Изменение языка и размера шрифта меню несколько раз приведёт к вылету!",

View File

@@ -83,6 +83,7 @@
"creature_name_label": "生物名标签", "creature_name_label": "生物名标签",
"crown": "皇冠", "crown": "皇冠",
"crown_thresholds": "皇冠阈值", "crown_thresholds": "皇冠阈值",
"current_value": "Current Value",
"cutscene": "Cutscene", "cutscene": "Cutscene",
"damage": "伤害", "damage": "伤害",
"damage_bar": "伤害条", "damage_bar": "伤害条",
@@ -177,6 +178,7 @@
"master_rank": "Master Rank", "master_rank": "Master Rank",
"max_distance": "最大距离", "max_distance": "最大距离",
"max_monster_updates_per_tick": "每次更新的最大怪物数量", "max_monster_updates_per_tick": "每次更新的最大怪物数量",
"max_value": "Max Value",
"me": "我", "me": "我",
"menu_font": "菜单字体", "menu_font": "菜单字体",
"menu_font_change_disclaimer": "Changing Language and Menu Font Size several times will cause a crash!", "menu_font_change_disclaimer": "Changing Language and Menu Font Size several times will cause a crash!",

View File

@@ -83,6 +83,7 @@
"creature_name_label": "環境生物名稱", "creature_name_label": "環境生物名稱",
"crown": "皇冠", "crown": "皇冠",
"crown_thresholds": "皇冠的大小判定範圍", "crown_thresholds": "皇冠的大小判定範圍",
"current_value": "Current Value",
"cutscene": "Cutscene", "cutscene": "Cutscene",
"damage": "傷害", "damage": "傷害",
"damage_bar": "傷害條", "damage_bar": "傷害條",
@@ -177,6 +178,7 @@
"master_rank": "大師等級", "master_rank": "大師等級",
"max_distance": "最大距離", "max_distance": "最大距離",
"max_monster_updates_per_tick": "每次更新的最大魔物數量", "max_monster_updates_per_tick": "每次更新的最大魔物數量",
"max_value": "Max Value",
"me": "我", "me": "我",
"menu_font": "選單字體大小", "menu_font": "選單字體大小",
"menu_font_change_disclaimer": "重複變更語言和選單字型大小有可能會當機!", "menu_font_change_disclaimer": "重複變更語言和選單字型大小有可能會當機!",