Add Buff Filters

This commit is contained in:
GreenComfyTea
2023-09-26 11:31:00 +03:00
parent cbaa537a0b
commit 480bc9c9b7
22 changed files with 1960 additions and 581 deletions

View File

@@ -56,110 +56,78 @@ function this.update()
local _displayed_buffs = {};
for key, item_buff in pairs(item_buffs.list) do
if not item_buff.is_active then
goto continue;
for key, abnormal_status in pairs(abnormal_statuses.list) do
if abnormal_status.is_visible then
table.insert(_displayed_buffs, abnormal_status);
end
end
table.insert(_displayed_buffs, item_buff);
for key, item_buff in pairs(item_buffs.list) do
::continue::
if item_buff.is_visible then
table.insert(_displayed_buffs, item_buff);
end
end
for key, endemic_life_buff in pairs(endemic_life_buff.list) do
if endemic_life_buff.is_visible then
table.insert(_displayed_buffs, endemic_life_buff);
end
end
for _, melody_effect in pairs(melody_effects.list) do
if not melody_effect.is_active then
goto continue2;
if melody_effect.is_visible then
table.insert(_displayed_buffs, melody_effect);
end
table.insert(_displayed_buffs, melody_effect);
::continue2::
end
for key, endemic_life_buff in pairs(endemic_life_buff.list) do
if not endemic_life_buff.is_active then
goto continue3;
end
table.insert(_displayed_buffs, endemic_life_buff);
::continue3::
end
for key, skill in pairs(skills.list) do
if not skill.is_active then
goto continue4;
end
table.insert(_displayed_buffs, skill);
::continue4::
end
for key, dango_skill in pairs(dango_skills.list) do
if not dango_skill.is_active then
goto continue5;
if dango_skill.is_visible then
table.insert(_displayed_buffs, dango_skill);
end
table.insert(_displayed_buffs, dango_skill);
::continue5::
end
for key, abnormal_status in pairs(abnormal_statuses.list) do
if not abnormal_status.is_active then
goto continue6;
end
table.insert(_displayed_buffs, abnormal_status);
::continue6::
end
for key, otomo_move in pairs(otomo_moves.list) do
if not otomo_move.is_active then
goto continue7;
end
table.insert(_displayed_buffs, otomo_move);
::continue7::
end
for key, weapon_skill in pairs(weapon_skills.list) do
if not weapon_skill.is_active then
goto continue8;
end
table.insert(_displayed_buffs, weapon_skill);
::continue8::
end
for key, rampage_skill in pairs(rampage_skills.list) do
if not rampage_skill.is_active then
goto continue9;
if rampage_skill.is_visible then
table.insert(_displayed_buffs, rampage_skill);
end
end
table.insert(_displayed_buffs, rampage_skill);
for key, skill in pairs(skills.list) do
::continue9::
if skill.is_visible then
table.insert(_displayed_buffs, skill);
end
end
for key, weapon_skill in pairs(weapon_skills.list) do
if weapon_skill.is_visible then
table.insert(_displayed_buffs, weapon_skill);
end
end
for key, otomo_move in pairs(otomo_moves.list) do
if otomo_move.is_visible then
table.insert(_displayed_buffs, otomo_move);
end
end
for key, misc_buffs in pairs(misc_buffs.list) do
if not misc_buffs.is_active then
goto continue10;
if misc_buffs.is_visible then
table.insert(_displayed_buffs, misc_buffs);
end
table.insert(_displayed_buffs, misc_buffs);
::continue10::
end
displayed_buffs = this.sort_buffs(_displayed_buffs, cached_config);
end
function this.sort_buffs(_displayed_buffs, cached_config)

View File

@@ -13,11 +13,22 @@ local time_UI;
local keyboard;
local non_players;
local quest_status;
local buffs;
local error_handler;
local time;
local stats_UI;
local buffs;
local item_buffs;
local melody_effects;
local endemic_life_buffs;
local skills;
local dango_skills;
local abnormal_statuses;
local otomo_moves;
local weapon_skills;
local rampage_skills;
local misc_buffs;
local label_customization;
local bar_customization;
local large_monster_UI_customization;
@@ -471,16 +482,15 @@ function this.draw()
end
if buff_UI_changed or modifiers_changed or config_changed then
for _, buff in pairs(buffs.list) do
buffs.init_UI(buff);
end
-- for _, buff in pairs(buffs.list) do
-- buffs.init_UI(buff);
-- end
end
if stats_UI_changed or modifiers_changed or config_changed then
stats_UI.init_UI();
end
if this.menu_font_changed and (apply_font_requested or config_changed) then
this.menu_font_changed = false;
this.reload_font();
@@ -2302,6 +2312,190 @@ function this.draw_buff_UI()
imgui.tree_pop();
end
if imgui.tree_node(language.current_language.customization_menu.filter) then
-- weapon_skills = "Weapon Skills",
-- otomo_moves = "Buddy Moves",
-- misc_buffs = "Misc Buffs",
if imgui.tree_node(language.current_language.customization_menu.abnormal_statuses) then
for _, key in ipairs(abnormal_statuses.keys) do
changed, cached_config.filter.abnormal_statuses[key] = imgui.checkbox(
abnormal_statuses.get_abnormal_status_name(key), cached_config.filter.abnormal_statuses[key]);
config_changed = config_changed or changed;
end
imgui.tree_pop();
end
if imgui.tree_node(language.current_language.customization_menu.item_buffs) then
for _, key in ipairs(item_buffs.keys) do
changed, cached_config.filter.item_buffs[key] = imgui.checkbox(
item_buffs.get_item_buff_name(key), cached_config.filter.item_buffs[key]);
config_changed = config_changed or changed;
end
imgui.tree_pop();
end
if imgui.tree_node(language.current_language.customization_menu.endemic_life_buffs) then
for _, key in ipairs(endemic_life_buffs.keys) do
changed, cached_config.filter.endemic_life_buffs[key] = imgui.checkbox(
endemic_life_buffs.get_endemic_life_name(key), cached_config.filter.endemic_life_buffs[key]);
config_changed = config_changed or changed;
end
imgui.tree_pop();
end
if imgui.tree_node(language.current_language.customization_menu.melody_effects) then
for lua_index, key in ipairs(melody_effects.keys) do
if (lua_index >= 16 and lua_index <= 18) or lua_index == 24 then
goto continue;
end
changed, cached_config.filter.melody_effects[key] = imgui.checkbox(
melody_effects.get_melody_effect_name(lua_index - 1), cached_config.filter.melody_effects[key]);
config_changed = config_changed or changed;
::continue::
end
imgui.tree_pop();
end
if imgui.tree_node(language.current_language.customization_menu.dango_skills) then
for _, key in ipairs(dango_skills.keys) do
changed, cached_config.filter.dango_skills[key] = imgui.checkbox(
dango_skills.get_dango_skill_name(key), cached_config.filter.dango_skills[key]);
config_changed = config_changed or changed;
end
imgui.tree_pop();
end
if imgui.tree_node(language.current_language.customization_menu.rampage_skills) then
for _, key in ipairs(rampage_skills.keys) do
changed, cached_config.filter.rampage_skills[key] = imgui.checkbox(
rampage_skills.get_rampage_skill_name(key), cached_config.filter.rampage_skills[key]);
config_changed = config_changed or changed;
end
imgui.tree_pop();
end
if imgui.tree_node(language.current_language.customization_menu.skills) then
for _, key in ipairs(skills.keys) do
changed, cached_config.filter.skills[key] = imgui.checkbox(
skills.get_skill_name(key), cached_config.filter.skills[key]);
config_changed = config_changed or changed;
end
imgui.tree_pop();
end
if imgui.tree_node(language.current_language.customization_menu.weapon_skills) then
for _, weapon in ipairs(weapon_skills.keys) do
if imgui.tree_node(language.current_language.weapons[weapon.key]) then
local cached_weapon_filter = cached_config.filter.weapon_skills[weapon.key];
for _, key in ipairs(weapon.skill_keys) do
local name = weapon_skills.get_weapon_skill_name(key);
if key == "spirit_gauge_autofill" then
local soaring_kick_name = weapon_skills.get_weapon_skill_name("soaring_kick");
local iai_slash_name = weapon_skills.get_weapon_skill_name("iai_slash");
name = string.format("%s (%s, %s)", name, soaring_kick_name, iai_slash_name);
end
changed, cached_weapon_filter[key] = imgui.checkbox(
name, cached_weapon_filter[key]);
config_changed = config_changed or changed;
end
imgui.tree_pop();
end
end
imgui.tree_pop();
end
if imgui.tree_node(language.current_language.customization_menu.otomo_moves) then
for _, key in ipairs(otomo_moves.keys) do
changed, cached_config.filter.otomo_moves[key] = imgui.checkbox(
otomo_moves.get_otomo_move_name(key), cached_config.filter.otomo_moves[key]);
config_changed = config_changed or changed;
end
imgui.tree_pop();
end
if imgui.tree_node(language.current_language.customization_menu.misc_buffs) then
for _, key in ipairs(misc_buffs.keys) do
local name = misc_buffs.get_misc_buff_name(key);
if key == "attack_up" then
local might_seed_name = item_buffs.get_item_buff_name("might_seed");
local dango_bulker_name = dango_skills.get_dango_skill_name("dango_bulker");
local chameleos_soul_name = rampage_skills.get_rampage_skill_name("chameleos_soul");
name = string.format("%s (%s, %s, %s)", name, might_seed_name, dango_bulker_name, chameleos_soul_name);
elseif key == "defense_up" then
local adamant_seed_name = item_buffs.get_item_buff_name("adamant_seed");
local chameleos_soul_name = rampage_skills.get_rampage_skill_name("chameleos_soul");
name = string.format("%s (%s, %s)", name, adamant_seed_name, chameleos_soul_name);
elseif key == "stamina_use_down" then
local dash_juice_name = item_buffs.get_item_buff_name("dash_juice");
local peepersects_name = endemic_life_buffs.get_endemic_life_name("peepersects");
local chameleos_soul_name = rampage_skills.get_rampage_skill_name("chameleos_soul");
name = string.format("%s (%s, %s, %s)", name, dash_juice_name, peepersects_name, chameleos_soul_name);
elseif key == "natural_healing_up" then
local immunizer_name = item_buffs.get_item_buff_name("immunizer");
local vase_of_vitality_name = otomo_moves.get_otomo_move_name("vase_of_vitality");
name = string.format("%s (%s, %s)", name, immunizer_name, vase_of_vitality_name);
end
changed, cached_config.filter.misc_buffs[key] = imgui.checkbox(
name, cached_config.filter.misc_buffs[key]);
config_changed = config_changed or changed;
end
imgui.tree_pop();
end
imgui.tree_pop();
end
changed = label_customization.draw(language.current_language.customization_menu.name_label, cached_config.name_label);
config_changed = config_changed or changed;
@@ -2467,11 +2661,22 @@ function this.init_dependencies()
keyboard = require("MHR_Overlay.Game_Handler.keyboard");
non_players = require("MHR_Overlay.Damage_Meter.non_players");
quest_status = require("MHR_Overlay.Game_Handler.quest_status");
buffs = require("MHR_Overlay.Buffs.buffs");
error_handler = require("MHR_Overlay.Misc.error_handler");
time = require("MHR_Overlay.Game_Handler.time");
stats_UI = require("MHR_Overlay.UI.Modules.stats_UI");
buffs = require("MHR_Overlay.Buffs.buffs");
item_buffs = require("MHR_Overlay.Buffs.item_buffs");
melody_effects = require("MHR_Overlay.Buffs.melody_effects");
endemic_life_buffs = require("MHR_Overlay.Buffs.endemic_life_buffs");
skills = require("MHR_Overlay.Buffs.skills");
dango_skills = require("MHR_Overlay.Buffs.dango_skills");
abnormal_statuses = require("MHR_Overlay.Buffs.abnormal_statuses");
otomo_moves = require("MHR_Overlay.Buffs.otomo_moves");
weapon_skills = require("MHR_Overlay.Buffs.weapon_skills");
rampage_skills = require("MHR_Overlay.Buffs.rampage_skills");
misc_buffs = require("MHR_Overlay.Buffs.misc_buffs");
label_customization = require("MHR_Overlay.UI.Customizations.label_customization");
bar_customization = require("MHR_Overlay.UI.Customizations.bar_customization");
large_monster_UI_customization = require("MHR_Overlay.UI.Customizations.large_monster_UI_customization");