Add use_d2d_if_available option

This commit is contained in:
GreenComfyTea
2022-11-25 12:38:34 +02:00
parent b36b1080df
commit a0e6974ad7
13 changed files with 70 additions and 73 deletions

View File

@@ -184,17 +184,7 @@ local function main_loop()
player.update_player_list(quest_status.index >= 2);
if quest_status.flow_state == quest_status.flow_states.IN_LOBBY then
if config.current_config.endemic_life_UI.enabled and
config.current_config.global_settings.module_visibility.in_lobby.endemic_life_UI then
local success = pcall(env_creature_UI.draw);
if not success then
customization_menu.status = "[In Lobby] Endemic life drawing function threw an exception";
end
end
elseif quest_status.flow_state == quest_status.flow_states.IN_TRAINING_AREA then
if quest_status.flow_state == quest_status.flow_states.IN_TRAINING_AREA then
local large_monster_UI_config = config.current_config.large_monster_UI;
local module_visibility_config = config.current_config.global_settings.module_visibility.in_training_area;
@@ -277,10 +267,18 @@ end);
if d2d ~= nil then
d2d.register(function()
drawing.init_font();
end, main_loop);
else
re.on_frame(main_loop);
end, function()
if config.current_config.global_settings.renderer.use_d2d_if_available then
main_loop();
end
end);
end
re.on_frame(function()
if not config.current_config.global_settings.renderer.use_d2d_if_available then
main_loop();
end
end);
-- #endregion
----------------------------D2D------------------------------
@@ -288,48 +286,27 @@ if debug.enabled then
if d2d ~= nil then
d2d.register(function()
end, function()
local is_ready_quest = singletons.quest_manager:call("isReadyQuest");
local is_ready_play_quest = singletons.quest_manager:call("isReadyPlayQuest");
local is_play_quest = singletons.quest_manager:call("isPlayQuest");
local is_stay_quest = singletons.quest_manager:call("isStayQuest");
local is_end_wait = singletons.quest_manager:call("isEndWait");
local is_active_quest = singletons.quest_manager:call("isActiveQuest");
local quest_clear = singletons.quest_manager:call("checkQuestClear");
local is_result_demo_play_start = singletons.quest_manager:call("isResultDemoPlayStart");
local isResultGuestDrawOff = singletons.quest_manager:call("isResultGuestDrawOff");
local game_manager = sdk.get_managed_singleton("snow.SnowGameManager");
local current_status = game_manager:get_field("_CurrentStatus");
local demo_camera = sdk.get_managed_singleton("snow.camera.DemoCamera");
local is_play_demo = demo_camera:call("IsPlayDemo");
--[[xy = "\nquest_status.index: " .. tostring(quest_status.index);
xy = xy .. "\nis_ready_quest: " .. tostring(is_ready_quest);
xy = xy .. "\nis_ready_play_quest: " .. tostring(is_ready_play_quest);
xy = xy .. "\nis_play_quest: " .. tostring(is_play_quest);
xy = xy .. "\nis_stay_quest: " .. tostring(is_stay_quest);
xy = xy .. "\nis_end_wait: " .. tostring(is_end_wait);
xy = xy .. "\nis_active_quest: " .. tostring(is_active_quest);
xy = xy .. "\nquest_clear: " .. tostring(quest_clear);
xy = xy .. "\nis_result_demo_play_start: " .. tostring(is_result_demo_play_start);
xy = xy .. "\nisResultGuestDrawOff: " .. tostring(isResultGuestDrawOff);
xy = xy .. "\ncurrent_status: " .. tostring(current_status);
xy = xy .. "\nis_play_demo: " .. tostring(is_play_demo);--]]
if not config.current_config.global_settings.renderer.use_d2d_if_available then
return;
end
if xy ~= "" then
d2d.text(drawing.font, "xy:\n" .. tostring(xy), 551, 11, 0xFF000000);
d2d.text(drawing.font, "xy:\n" .. tostring(xy), 550, 10, 0xFFFFFFFF);
end
end);
else
re.on_frame(function()
if xy ~= "" then
draw.text("xy:\n" .. tostring(xy), 550, 10, 0xFFFFFFFF);
draw.text("xy:\n" .. tostring(xy), 551, 11, 0xFF000000);
end
end);
end
re.on_frame(function()
if config.current_config.global_settings.renderer.use_d2d_if_available and d2d ~= nil then
return;
end
if xy ~= "" then
draw.text("xy:\n" .. tostring(xy), 551, 11, 0xFF000000);
draw.text("xy:\n" .. tostring(xy), 550, 10, 0xFFFFFFFF);
end
end);
end
if imgui.begin_table == nil then

View File

@@ -98,7 +98,7 @@ function env_creature.update(REcreature, creature)
end
function env_creature.draw(creature, position_on_screen, opacity_scale)
if d2d ~= nil then
if d2d ~= nil and config.current_config.global_settings.renderer.use_d2d_if_available then
local text_width, text_height = drawing.font:measure(creature.name);
position_on_screen.x = position_on_screen.x - text_width / 2;
end

View File

@@ -10,7 +10,7 @@ function screen.update_window_size()
local width;
local height;
if d2d ~= nil then
if d2d ~= nil and config.current_config.global_settings.renderer.use_d2d_if_available then
width, height = d2d.surface_size();
else
width, height = screen.get_game_window_size();

View File

@@ -33,11 +33,11 @@ function config.init()
prioritize_large_monsters = false
},
module_visibility = {
in_lobby = {
endemic_life_UI = false
},
renderer = {
use_d2d_if_available = true
},
module_visibility = {
in_training_area = {
large_monster_dynamic_UI = true,
large_monster_static_UI = true,

View File

@@ -172,6 +172,9 @@ language.default_language = {
bold = "Bold",
italic = "Italic",
renderer = "Renderer",
use_d2d_if_available = "Use Direct2D if available",
enabled = "Enabled",
settings = "Settings",
dynamic_positioning = "Dynamic Positioning",
@@ -422,7 +425,7 @@ language.default_language = {
lowest_health_percentage = "Lowest Health Percentage",
highest_health_percentage = "Highest Health Percentage",
reframework_outdated = "Installed REFramework version is outdated. Please, update. Otherwise, MHR Overlay won't work correctly."
reframework_outdated = "Installed REFramework version is outdated. Please, update. Otherwise, MHR Overlay won't work correctly.",
}
};

View File

@@ -760,16 +760,17 @@ function customization_menu.draw_global_settings()
imgui.tree_pop();
end
if imgui.tree_node(language.current_language.customization_menu.renderer) then
changed, cached_config.renderer.use_d2d_if_available =
imgui.checkbox(language.current_language.customization_menu.use_d2d_if_available,
cached_config.renderer.use_d2d_if_available);
config_changed = config_changed or changed;
imgui.tree_pop();
end
if imgui.tree_node(language.current_language.customization_menu.module_visibility_based_on_game_state) then
if imgui.tree_node(language.current_language.customization_menu.in_lobby) then
changed, cached_config.module_visibility.in_lobby.endemic_life_UI = imgui.checkbox(
language.current_language.customization_menu.endemic_life_UI,
cached_config.module_visibility.in_lobby.endemic_life_UI);
config_changed = config_changed or changed;
imgui.tree_pop();
end
if imgui.tree_node(language.current_language.customization_menu.in_training_area) then

View File

@@ -35,7 +35,7 @@ function drawing.argb_to_color(alpha, red, green, blue)
end
function drawing.limit_text_size(text, size_limit)
if d2d == nil or size_limit <= 0 then
if d2d == nil or not config.current_config.global_settings.renderer.use_d2d_if_available or size_limit <= 0 then
return text;
end
@@ -98,6 +98,8 @@ function drawing.draw_label(label, position, opacity_scale, ...)
local position_x = position.x + label.offset.x;
local position_y = position.y + label.offset.y;
local use_d2d = d2d ~= nil and config.current_config.global_settings.renderer.use_d2d_if_available;
if label.shadow.visibility then
local new_shadow_color = label.shadow.color;
@@ -105,7 +107,7 @@ function drawing.draw_label(label, position, opacity_scale, ...)
new_shadow_color = drawing.scale_color_opacity(new_shadow_color, opacity_scale);
end
if d2d ~= nil then
if use_d2d then
d2d.text(drawing.font, text, position_x + label.shadow.offset.x, position_y + label.shadow.offset.y, new_shadow_color);
else
new_shadow_color = drawing.argb_color_to_abgr_color(new_shadow_color);
@@ -118,7 +120,7 @@ function drawing.draw_label(label, position, opacity_scale, ...)
new_color = drawing.scale_color_opacity(new_color, opacity_scale);
end
if d2d ~= nil then
if use_d2d then
d2d.text(drawing.font, text, position_x, position_y, new_color);
else
new_color = drawing.argb_color_to_abgr_color(new_color);
@@ -230,7 +232,7 @@ function drawing.draw_bar(bar, position, opacity_scale, percentage)
outline_color = drawing.scale_color_opacity(outline_color, opacity_scale);
end
local use_d2d = d2d ~= nil;
local use_d2d = d2d ~= nil and config.current_config.global_settings.renderer.use_d2d_if_available;
-- outline
if outline_thickness ~= 0 then
@@ -281,7 +283,9 @@ function drawing.draw_capture_line(health_UI, position, opacity_scale, percentag
color = drawing.scale_color_opacity(color, opacity_scale);
end
if d2d ~= nil then
local use_d2d = d2d ~= nil and config.current_config.global_settings.renderer.use_d2d_if_available;
if use_d2d then
d2d.fill_rect(position_x, position_y, health_UI.bar.capture_line.size.width, health_UI.bar.capture_line.size.height,
color);
else

View File

@@ -214,6 +214,7 @@
"relative_offset": "Relative Offset",
"render_highlighted_monster": "Render Highlighted Monster",
"render_not_highlighted_monsters": "Render Not Highlighted Monsters",
"renderer": "Renderer",
"reversed_order": "Reversed Order",
"reward_screen": "Reward Screen",
"settings": "Settings",
@@ -257,6 +258,7 @@
"tracked_damage_types": "Tracked Damage Types",
"tracked_monster_types": "Tracked Monster Types",
"type": "Type",
"use_d2d_if_available": "Use Direct2D if available",
"value_label": "Value Label",
"vertical": "Vertical",
"viewport_offset": "Viewport Offset",

View File

@@ -214,6 +214,7 @@
"relative_offset": "相対的な表示位置",
"render_highlighted_monster": "ハイライトされたモンスターをレンダリング(表示)する",
"render_not_highlighted_monsters": "ハイライトされていないモンスターをレンダリング(表示)する",
"renderer": "Renderer",
"reversed_order": "逆順",
"reward_screen": "Reward Screen",
"settings": "設定",
@@ -257,6 +258,7 @@
"tracked_damage_types": "ダメージタイプでの追跡",
"tracked_monster_types": "モンスタータイプでの追跡",
"type": "タイプ",
"use_d2d_if_available": "Use Direct2D if available",
"value_label": "バリューラベル",
"vertical": "縦",
"viewport_offset": "表示領域からの位置",

View File

@@ -214,6 +214,7 @@
"relative_offset": "상대적 위치 거리",
"render_highlighted_monster": "타겟이 된 몬스터 표시",
"render_not_highlighted_monsters": "타겟이 아닌 몬스터 표시",
"renderer": "Renderer",
"reversed_order": "역순",
"reward_screen": "Reward Screen",
"settings": "설정",
@@ -257,6 +258,7 @@
"tracked_damage_types": "추적할 대미지 종류",
"tracked_monster_types": "추적할 몬스터 타입",
"type": "순으로",
"use_d2d_if_available": "Use Direct2D if available",
"value_label": "값 정보",
"vertical": "세로",
"viewport_offset": "뷰포트 거리",

View File

@@ -70,8 +70,8 @@
"buildup_percentage_label": "Метка накопления в процентах",
"buildup_value_label": "Метка значения накопления",
"capture_line": "Линия здоровья захвата",
"cart_count": "Кол-во потерь сознания",
"cart_count_label": "Метка кол-ва потерь сознания",
"cart_count": "Кол-во смертей",
"cart_count_label": "Метка кол-ва смертей",
"center": "Центр",
"closest": "Ближайший",
"color": "Цвет",
@@ -214,6 +214,7 @@
"relative_offset": "Относительный сдвиг",
"render_highlighted_monster": "Показывать помеченного монстра",
"render_not_highlighted_monsters": "Показывать непомеченных монстров",
"renderer": "Renderer",
"reversed_order": "Обратный порядок",
"reward_screen": "Экран наград",
"settings": "Настройки",
@@ -247,7 +248,7 @@
"total_buildup": "Общее накопление",
"total_buildup_label": "Метка общего накопления",
"total_buildup_value_label": "Метка значения общего накопления",
"total_cart_count_label": "Total Cart Count Label",
"total_cart_count_label": "Метка общего кол-ва смертей",
"total_damage": "Общий урон",
"total_damage_label": "Метка общего урона",
"total_damage_offset_is_relative": "Относительный сдвиг общего урона",
@@ -257,6 +258,7 @@
"tracked_damage_types": "Отслеживаемые типы урона",
"tracked_monster_types": "Отслеживаемые типы монстров",
"type": "Тип",
"use_d2d_if_available": "Использовать Direct2D, если доступен",
"value_label": "Метка значений",
"vertical": "Вертикально",
"viewport_offset": "Сдвиг в экранном пространстве",

View File

@@ -214,6 +214,7 @@
"relative_offset": "相对偏移",
"render_highlighted_monster": "渲染高亮怪物",
"render_not_highlighted_monsters": "渲染非高亮怪物",
"renderer": "Renderer",
"reversed_order": "逆向排序",
"reward_screen": "Reward Screen",
"settings": "设定",
@@ -257,6 +258,7 @@
"tracked_damage_types": "跟踪的伤害类型",
"tracked_monster_types": "跟踪的怪物类型",
"type": "类型",
"use_d2d_if_available": "Use Direct2D if available",
"value_label": "数字",
"vertical": "垂直",
"viewport_offset": "窗口偏移",

View File

@@ -214,6 +214,7 @@
"relative_offset": "相對偏移",
"render_highlighted_monster": "渲染目標魔物",
"render_not_highlighted_monsters": "渲染非目標魔物",
"renderer": "Renderer",
"reversed_order": "反向排序",
"reward_screen": "Reward Screen",
"settings": "設定",
@@ -257,6 +258,7 @@
"tracked_damage_types": "追蹤的傷害類型",
"tracked_monster_types": "追蹤的魔物類型",
"type": "類型",
"use_d2d_if_available": "Use Direct2D if available",
"value_label": "數字",
"vertical": "垂直",
"viewport_offset": "視窗的位置",