Add Option to Set Infinite Buffs Location

This commit is contained in:
GreenComfyTea
2023-09-26 14:02:48 +03:00
parent 0f72fba92d
commit df43908a31
10 changed files with 207 additions and 7 deletions

View File

@@ -7492,6 +7492,7 @@ function this.init_default()
hide_bar_for_infinite_buffs = true, hide_bar_for_infinite_buffs = true,
hide_timer_for_infinite_buffs = true, hide_timer_for_infinite_buffs = true,
orientation = "Vertical", -- "Vertical" or "Horizontal" orientation = "Vertical", -- "Vertical" or "Horizontal"
infinite_buffs_location = "Last"
}, },
spacing = { spacing = {

View File

@@ -778,6 +778,8 @@ this.default_language = {
update_myself_position_delay = "Update Myself Position (seconds)", update_myself_position_delay = "Update Myself Position (seconds)",
update_player_info_delay = "Update Player Info (seconds)", update_player_info_delay = "Update Player Info (seconds)",
update_buffs_delay = "Update Buffs (seconds)", update_buffs_delay = "Update Buffs (seconds)",
infinite_buffs_location = "Infinite Buffs Location",
}, },
}; };

View File

@@ -131,36 +131,199 @@ function this.update()
end end
function this.sort_buffs(_displayed_buffs, cached_config) function this.sort_buffs(_displayed_buffs, cached_config)
local infinite_buffs_location = cached_config.settings.infinite_buffs_location;
cached_config = cached_config.sorting; cached_config = cached_config.sorting;
if cached_config.type == "Name" then if cached_config.type == "Name" then
if cached_config.reversed_order then if cached_config.reversed_order then
table.sort(_displayed_buffs, function(left, right) table.sort(_displayed_buffs, function(left, right)
return left.name > right.name;
if infinite_buffs_location == "First" then
if left.is_infinite and right.is_infinite then
return left.name < right.name;
elseif left.is_infinite then
return true;
elseif right.is_infinite then
return false;
else
return left.name < right.name;
end
elseif infinite_buffs_location == "Last" then
if left.is_infinite and right.is_infinite then
return left.name < right.name;
elseif left.is_infinite then
return false;
elseif right.is_infinite then
return true;
else
return left.name < right.name;
end
else
return left.name < right.name;
end
end); end);
else else
table.sort(_displayed_buffs, function(left, right) table.sort(_displayed_buffs, function(left, right)
return left.name < right.name;
if infinite_buffs_location == "First" then
if left.is_infinite and right.is_infinite then
return left.name > right.name;
elseif left.is_infinite then
return false;
elseif right.is_infinite then
return true;
else
return left.name > right.name;
end
elseif infinite_buffs_location == "Last" then
if left.is_infinite and right.is_infinite then
return left.name > right.name;
elseif left.is_infinite then
return true;
elseif right.is_infinite then
return false;
else
return left.name > right.name;
end
else
return left.name > right.name;
end
end); end);
end end
elseif cached_config.type == "Timer" then elseif cached_config.type == "Timer" then
if cached_config.reversed_order then if cached_config.reversed_order then
table.sort(_displayed_buffs, function(left, right) table.sort(_displayed_buffs, function(left, right)
return left.timer > right.timer;
if infinite_buffs_location == "First" then
if left.is_infinite and right.is_infinite then
return left.timer < right.timer;
elseif left.is_infinite then
return true;
elseif right.is_infinite then
return false;
else
return left.timer < right.timer;
end
elseif infinite_buffs_location == "Last" then
if left.is_infinite and right.is_infinite then
return left.timer < right.timer;
elseif left.is_infinite then
return false;
elseif right.is_infinite then
return true;
else
return left.timer < right.timer;
end
else
return left.timer < right.timer;
end
end); end);
else else
table.sort(_displayed_buffs, function(left, right) table.sort(_displayed_buffs, function(left, right)
return left.timer < right.timer;
if infinite_buffs_location == "First" then
if left.is_infinite and right.is_infinite then
return left.timer > right.timer;
elseif left.is_infinite then
return false;
elseif right.is_infinite then
return true;
else
return left.timer > right.timer;
end
elseif infinite_buffs_location == "Last" then
if left.is_infinite and right.is_infinite then
return left.timer > right.timer;
elseif left.is_infinite then
return true;
elseif right.is_infinite then
return false;
else
return left.timer > right.timer;
end
else
return left.timer > right.timer;
end
end); end);
end end
else else -- Duration
if cached_config.reversed_order then if cached_config.reversed_order then
table.sort(_displayed_buffs, function(left, right) table.sort(_displayed_buffs, function(left, right)
return left.duration > right.duration;
if infinite_buffs_location == "First" then
if left.is_infinite and right.is_infinite then
return left.duration < right.duration;
elseif left.is_infinite then
return true;
elseif right.is_infinite then
return false;
else
return left.duration < right.duration;
end
elseif infinite_buffs_location == "Last" then
if left.is_infinite and right.is_infinite then
return left.duration < right.duration;
elseif left.is_infinite then
return false;
elseif right.is_infinite then
return true;
else
return left.duration < right.duration;
end
else
return left.duration < right.duration;
end
end); end);
else else
table.sort(_displayed_buffs, function(left, right) table.sort(_displayed_buffs, function(left, right)
return left.duration < right.duration;
if infinite_buffs_location == "First" then
if left.is_infinite and right.is_infinite then
return left.duration > right.duration;
elseif left.is_infinite then
return false;
elseif right.is_infinite then
return true;
else
return left.duration > right.duration;
end
elseif infinite_buffs_location == "Last" then
if left.is_infinite and right.is_infinite then
return left.duration > right.duration;
elseif left.is_infinite then
return true;
elseif right.is_infinite then
return false;
else
return left.duration > right.duration;
end
else
return left.duration > right.duration;
end
end); end);
end end
end end

View File

@@ -99,6 +99,9 @@ this.displayed_monster_UI_sorting_types = {};
this.buff_UI_sorting_types = {}; this.buff_UI_sorting_types = {};
this.displayed_buff_UI_sorting_types = {}; this.displayed_buff_UI_sorting_types = {};
this.buff_UI_infinite_buffs_location_types = {};
this.displayed_buff_UI_infinite_buffs_location_types = {};
this.damage_meter_UI_highlighted_entity_types = {}; this.damage_meter_UI_highlighted_entity_types = {};
this.displayed_damage_meter_UI_highlighted_entity_types = {}; this.displayed_damage_meter_UI_highlighted_entity_types = {};
@@ -237,6 +240,20 @@ function this.init()
current.duration current.duration
}; };
this.buff_UI_infinite_buffs_location_types =
{
default.normal,
default.first,
default.last
};
this.displayed_buff_UI_infinite_buffs_location_types =
{
current.normal,
current.first,
current.last
};
this.damage_meter_UI_highlighted_entity_types = this.damage_meter_UI_highlighted_entity_types =
{ {
default.top_damage, default.top_damage,
@@ -2317,6 +2334,17 @@ function this.draw_buff_UI()
cached_config.settings.orientation = this.orientation_types[index]; cached_config.settings.orientation = this.orientation_types[index];
end end
changed, index = imgui.combo(
language.current_language.customization_menu.infinite_buffs_location,
utils.table.find_index(this.buff_UI_infinite_buffs_location_types, cached_config.settings.infinite_buffs_location),
this.displayed_buff_UI_infinite_buffs_location_types);
config_changed = config_changed or changed;
if changed then
cached_config.settings.infinite_buffs_location = this.buff_UI_infinite_buffs_location_types[index];
end
imgui.tree_pop(); imgui.tree_pop();
end end

View File

@@ -211,6 +211,7 @@
"in_lobby": "In Lobby", "in_lobby": "In Lobby",
"in_training_area": "In Training Area", "in_training_area": "In Training Area",
"include": "Include", "include": "Include",
"infinite_buffs_location": "Infinite Buffs Location",
"inside": "Inside", "inside": "Inside",
"installations": "Installations", "installations": "Installations",
"italic": "Italic", "italic": "Italic",

View File

@@ -225,6 +225,7 @@
"in_lobby": "In Lobby", "in_lobby": "In Lobby",
"in_training_area": "In Training Area", "in_training_area": "In Training Area",
"include": "含める情報", "include": "含める情報",
"infinite_buffs_location": "Infinite Buffs Location",
"init_singletons_delay": "Init Singletons Delay (seconds)", "init_singletons_delay": "Init Singletons Delay (seconds)",
"inside": "Inside", "inside": "Inside",
"installations": "Installations", "installations": "Installations",

View File

@@ -226,6 +226,7 @@
"in_lobby": "로비 내", "in_lobby": "로비 내",
"in_training_area": "훈련구역 내", "in_training_area": "훈련구역 내",
"include": "포함", "include": "포함",
"infinite_buffs_location": "Infinite Buffs Location",
"init_singletons_delay": "Init Singletons Delay (seconds)", "init_singletons_delay": "Init Singletons Delay (seconds)",
"inside": "내부", "inside": "내부",
"installations": "설치", "installations": "설치",

View File

@@ -226,6 +226,7 @@
"in_lobby": "В лобби", "in_lobby": "В лобби",
"in_training_area": "В тренировочной зоне", "in_training_area": "В тренировочной зоне",
"include": "Элементы", "include": "Элементы",
"infinite_buffs_location": "Infinite Buffs Location",
"init_singletons_delay": "Init Singletons Delay (seconds)", "init_singletons_delay": "Init Singletons Delay (seconds)",
"inside": "Внутри", "inside": "Внутри",
"installations": "Установки", "installations": "Установки",

View File

@@ -226,6 +226,7 @@
"in_lobby": "在大厅", "in_lobby": "在大厅",
"in_training_area": "在修炼场", "in_training_area": "在修炼场",
"include": "包含", "include": "包含",
"infinite_buffs_location": "Infinite Buffs Location",
"init_singletons_delay": "Init Singletons Delay (seconds)", "init_singletons_delay": "Init Singletons Delay (seconds)",
"inside": "里面", "inside": "里面",
"installations": "狩猎设备", "installations": "狩猎设备",

View File

@@ -226,6 +226,7 @@
"in_lobby": "In Lobby", "in_lobby": "In Lobby",
"in_training_area": "In Training Area", "in_training_area": "In Training Area",
"include": "細部資訊調整", "include": "細部資訊調整",
"infinite_buffs_location": "Infinite Buffs Location",
"init_singletons_delay": "Init Singletons Delay (seconds)", "init_singletons_delay": "Init Singletons Delay (seconds)",
"inside": "內部", "inside": "內部",
"installations": "Installations", "installations": "Installations",