You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

427 lines
12 KiB

local _;
local VUHDO_MENU_UNIT = nil;
--
function VUHDO_playerTargetDropdownOnLoad()
UIDropDownMenu_SetInitializeFunction(VuhDoPlayerTargetDropDown, VUHDO_playerTargetDropDown_Initialize);
UIDropDownMenu_SetDisplayMode(VuhDoPlayerTargetDropDown, "MENU");
end
--
function VUHDO_setMenuUnit(aButton)
VUHDO_MENU_UNIT = aButton:GetAttribute("unit");
end
--
local function VUHDO_ptBuffSelected(_, aName, aCategName)
VUHDO_Msg(VUHDO_I18N_BUFF_ASSIGN_1 .. aCategName .. VUHDO_I18N_BUFF_ASSIGN_2 .. aName .. VUHDO_I18N_BUFF_ASSIGN_3);
VUHDO_BUFF_SETTINGS[aCategName].name = aName;
VUHDO_reloadBuffPanel();
end
--
local function VUHDO_roleOverrideSelected(_, aModelId, aName)
VUHDO_MANUAL_ROLES[aName] = aModelId;
VUHDO_reloadUI(false);
end
--
local function VUHDO_disableMenu(anInfo, aCondition)
anInfo["disabled"] = aCondition;
anInfo["colorCode"] = aCondition and "|cff808080" or "|cffffffff";
end
--
local function VUHDO_playerTargetAddTitle(aTitleText)
local tInfo = UIDropDownMenu_CreateInfo();
tInfo["text"] = aTitleText or "";
tInfo["isTitle"] = true;
tInfo["notCheckable"] = true;
UIDropDownMenu_AddButton(tInfo);
end
--
local function VUHDO_playerTargetAddSetting(aText, anIsChecked, anArg1, anArg2, aFunction, anIsNotCheckable, anIsDisable, aColorCode)
local tInfo = UIDropDownMenu_CreateInfo();
tInfo["text"] = aText;
tInfo["checked"] = anIsChecked;
tInfo["arg1"] = anArg1;
tInfo["arg2"] = anArg2;
tInfo["func"] = aFunction;
tInfo["notCheckable"] = anIsNotCheckable;
tInfo["colorCode"] = aColorCode;
VUHDO_disableMenu(tInfo, anIsDisable);
UIDropDownMenu_AddButton(tInfo);
end
--
local function VUHDO_privateTanksItemSelected(_, aUnit)
local tName = VUHDO_RAID[aUnit]["name"];
if VUHDO_PLAYER_TARGETS[tName] then
VUHDO_PLAYER_TARGETS[tName] = nil;
else
VUHDO_PLAYER_TARGETS[tName] = true;
end
-- Reload private tanks group
VUHDO_quickRaidReload();
end
--
local function VUHDO_unitRoleItemSelected(_, aCommand, aUnit)
if "LEAD" == aCommand then
PromoteToLeader(aUnit);
elseif "+A" == aCommand then
PromoteToAssistant(aUnit);
VUHDO_Msg(VUHDO_I18N_PROMOTE_ASSIST_MSG_1 .. UnitName(aUnit) .. VUHDO_I18N_PROMOTE_ASSIST_MSG_2);
elseif "-A" == aCommand then
DemoteAssistant(aUnit);
VUHDO_Msg(VUHDO_I18N_DEMOTE_ASSIST_MSG_1 .. UnitName(aUnit) .. VUHDO_I18N_DEMOTE_ASSIST_MSG_2);
elseif "ML" == aCommand then
SetLootMethod("master", UnitName(aUnit));
end
end
--
local function VUHDO_mainTankItemSelected(_, aMtPos, aUnit)
local tName = VUHDO_RAID[aUnit]["name"];
-- remove Maintankt?
if VUHDO_MAINTANK_NAMES[aMtPos] == tName then
VUHDO_sendCtraMessage("R " .. tName);
else
if VUHDO_MAINTANK_NAMES[aMtPos] then
VUHDO_sendCtraMessage("R " .. VUHDO_MAINTANK_NAMES[aMtPos]);
end
VUHDO_sendCtraMessage("SET " .. aMtPos .. " " .. tName);
end
VUHDO_reloadUI(false);
end
--
function VUHDO_playerTargetDropDown_Initialize(aFrame, aLevel)
local tInfo;
if not VUHDO_MENU_UNIT or not VUHDO_RAID[VUHDO_MENU_UNIT] then
return;
end
local tName = VUHDO_RAID[VUHDO_MENU_UNIT]["name"];
local tUniqueBuffs, _ = VUHDO_getAllUniqueSpells();
if aLevel > 1 then
for _, tBuffName in pairs(tUniqueBuffs) do
local tCategory = VUHDO_getBuffCategoryName(tBuffName, VUHDO_BUFF_TARGET_UNIQUE);
tInfo = UIDropDownMenu_CreateInfo();
tInfo["text"] = tBuffName;
tInfo["arg1"] = tName;
tInfo["arg2"] = tCategory;
tInfo["icon"] = VUHDO_BUFFS[tBuffName]["icon"];
tInfo["func"] = VUHDO_ptBuffSelected;
tInfo["checked"] = VUHDO_BUFF_SETTINGS[tCategory]["name"] == tName;
tInfo["level"] = 2;
UIDropDownMenu_AddButton(tInfo, 2);
end
return;
end
VUHDO_playerTargetAddTitle(VUHDO_I18N_ROLE .. " (" .. tName .. ")");
VUHDO_playerTargetAddTitle();
local tUnitRank, tUnitIsMl = VUHDO_getUnitRank(VUHDO_MENU_UNIT);
local tPlayerRank, tPlayerIsMl = VUHDO_getPlayerRank();
-- Raid leader
VUHDO_playerTargetAddSetting(VUHDO_I18N_PROMOTE_RAID_LEADER, tUnitRank == 2, "LEAD", VUHDO_MENU_UNIT,
VUHDO_unitRoleItemSelected, true, tPlayerRank < 2);
if tUnitRank == 0 then
-- + assist
VUHDO_playerTargetAddSetting(VUHDO_I18N_PROMOTE_ASSISTANT, false, "+A", VUHDO_MENU_UNIT,
VUHDO_unitRoleItemSelected, true, tPlayerRank < 2);
end
if tUnitRank == 1 then
-- - assist
VUHDO_playerTargetAddSetting(VUHDO_I18N_DEMOTE_ASSISTANT, false, "-A", VUHDO_MENU_UNIT,
VUHDO_unitRoleItemSelected, true, tPlayerRank < 2);
end
-- Master looter
VUHDO_playerTargetAddSetting(VUHDO_I18N_PROMOTE_MASTER_LOOTER, tUnitIsMl, "ML", VUHDO_MENU_UNIT,
VUHDO_unitRoleItemSelected, true, tPlayerRank < 2 and not tPlayerIsMl);
-- Private Tanks
VUHDO_playerTargetAddTitle();
local tIsChecked = false;
if VUHDO_MENU_UNIT and VUHDO_RAID[VUHDO_MENU_UNIT] ~= nil then
tIsChecked = VUHDO_PLAYER_TARGETS[tName] ~= nil;
end
VUHDO_playerTargetAddSetting(VUHDO_I18N_PRIVATE_TANK, tIsChecked, VUHDO_MENU_UNIT, nil,
VUHDO_privateTanksItemSelected, false, false);
VUHDO_playerTargetAddTitle();
-- Main Tanks
for tCnt = 1, 8 do -- VUHDO_MAX_MTS
local tText, tColor;
if VUHDO_MAINTANK_NAMES[tCnt] == tName then
tText = VUHDO_I18N_MT_NUMBER .. tCnt .. " (" .. VUHDO_MAINTANK_NAMES[tCnt] .. ")";
tColor = "|cffffe466";
elseif not VUHDO_MAINTANK_NAMES[tCnt] then
tText = VUHDO_I18N_MT_NUMBER .. tCnt;
tColor = "|cffcccccc";
else
tText = VUHDO_I18N_MT_NUMBER .. tCnt .. " (" .. VUHDO_MAINTANK_NAMES[tCnt] .. ")";
tColor = "|cffffb233";
end
VUHDO_playerTargetAddSetting(tText, VUHDO_MAINTANK_NAMES[tCnt] == tName, tCnt, VUHDO_MENU_UNIT,
VUHDO_mainTankItemSelected, false, VUHDO_getPlayerRank() < 1, tColor);
end
-- Unique Spells
if #tUniqueBuffs > 0 then
VUHDO_playerTargetAddTitle();
tInfo = UIDropDownMenu_CreateInfo();
tInfo["text"] = VUHDO_I18N_SET_BUFF;
tInfo["hasArrow"] = true;
tInfo["disabled"] = false;
tInfo["notCheckable"] = true;
UIDropDownMenu_AddButton(tInfo);
end
-- Role override
VUHDO_playerTargetAddTitle();
VUHDO_playerTargetAddTitle(VUHDO_I18N_ROLE_OVERRIDE);
VUHDO_playerTargetAddSetting(VUHDO_I18N_MELEE_TANK, VUHDO_MANUAL_ROLES[tName] == VUHDO_ID_MELEE_TANK, VUHDO_ID_MELEE_TANK, tName,
VUHDO_roleOverrideSelected, false, false, nil);
VUHDO_playerTargetAddSetting(VUHDO_I18N_MELEE_DPS, VUHDO_MANUAL_ROLES[tName] == VUHDO_ID_MELEE_DAMAGE, VUHDO_ID_MELEE_DAMAGE, tName,
VUHDO_roleOverrideSelected, false, false, nil);
VUHDO_playerTargetAddSetting(VUHDO_I18N_RANGED_DPS, VUHDO_MANUAL_ROLES[tName] == VUHDO_ID_RANGED_DAMAGE, VUHDO_ID_RANGED_DAMAGE, tName,
VUHDO_roleOverrideSelected, false, false, nil);
VUHDO_playerTargetAddSetting(VUHDO_I18N_RANGED_HEALERS, VUHDO_MANUAL_ROLES[tName] == VUHDO_ID_RANGED_HEAL, VUHDO_ID_RANGED_HEAL, tName,
VUHDO_roleOverrideSelected, false, false, nil);
VUHDO_playerTargetAddSetting(VUHDO_I18N_AUTO_DETECT, VUHDO_MANUAL_ROLES[tName] == nil, nil, tName,
VUHDO_roleOverrideSelected, false, false, nil);
end
--
function VUHDO_minimapDropdownOnLoad()
UIDropDownMenu_SetInitializeFunction(VuhDoMinimapDropDown, VUHDO_miniMapDropDown_Initialize);
UIDropDownMenu_SetDisplayMode(VuhDoMinimapDropDown, "MENU");
end
--
local function VUHDO_createMinimapToggle(aName, anArg1, anIsChecked)
local tInfo = UIDropDownMenu_CreateInfo();
tInfo["text"] = aName;
tInfo["keepShownOnClick"] = true;
tInfo["arg1"] = anArg1;
tInfo["func"] = VUHDO_minimapItemSelected;
tInfo["checked"] = anIsChecked;
UIDropDownMenu_AddButton(tInfo);
end
--
local function VUHDO_createEmptyLine()
local tInfo = UIDropDownMenu_CreateInfo();
tInfo["text"] = "";
tInfo["isTitle"] = true;
tInfo["notCheckable"] = true;
UIDropDownMenu_AddButton(tInfo);
end
--
function VUHDO_miniMapDropDown_Initialize(aFrame, aLevel)
if not VUHDO_CONFIG then return; end
local tInfo;
if aLevel > 1 then
if "S" == UIDROPDOWNMENU_MENU_VALUE then
local tSortedProfileNames = { };
for tProfileIndex, tProfile in ipairs(VUHDO_PROFILES) do
tinsert(tSortedProfileNames, { tProfileIndex, tProfile["NAME"] });
end
table.sort(tSortedProfileNames,
function(anInfo, anotherInfo)
return anInfo[2] < anotherInfo[2];
end
);
for _, tSortedProfile in ipairs(tSortedProfileNames) do
local tSetup = VUHDO_PROFILES[tSortedProfile[1]];
tInfo = UIDropDownMenu_CreateInfo();
tInfo["text"] = tSetup["NAME"];
tInfo["arg1"] = tSetup["NAME"];
tInfo["func"] = function(_, aName) VUHDO_loadProfile(aName) end;
tInfo["checked"] = tSetup["NAME"] == VUHDO_CONFIG["CURRENT_PROFILE"];
tInfo["level"] = 2;
UIDropDownMenu_AddButton(tInfo, 2);
end
elseif "K" == UIDROPDOWNMENU_MENU_VALUE then
local tSortedKeyLayoutNames = { };
for tKeyLayoutName, _ in pairs(VUHDO_SPELL_LAYOUTS) do
tinsert(tSortedKeyLayoutNames, { tKeyLayoutName, tKeyLayoutName });
end
table.sort(tSortedKeyLayoutNames,
function(anInfo, anotherInfo)
return anInfo[1] < anotherInfo[1];
end
);
for _, tSortedKeyLayout in ipairs(tSortedKeyLayoutNames) do
local tName = tSortedKeyLayout[1];
tInfo = UIDropDownMenu_CreateInfo();
tInfo["text"] = tName;
tInfo["arg1"] = tName;
tInfo["func"] = function(_, aName) VUHDO_activateLayout(aName) end;
tInfo["checked"] = tName == VUHDO_SPEC_LAYOUTS["selected"];
tInfo["level"] = 2;
UIDropDownMenu_AddButton(tInfo, 2);
end
end
return;
end
tInfo = UIDropDownMenu_CreateInfo();
tInfo["text"] = VUHDO_I18N_VUHDO_OPTIONS;
tInfo["isTitle"] = true;
tInfo["notCheckable"] = true;
UIDropDownMenu_AddButton(tInfo);
tInfo = UIDropDownMenu_CreateInfo();
tInfo["text"] = VUHDO_I18N_PANEL_SETUP;
tInfo["func"] = VUHDO_minimapItemSelected;
tInfo["arg1"] = "1";
tInfo["notCheckable"] = true;
UIDropDownMenu_AddButton(tInfo);
VUHDO_createEmptyLine();
tInfo = UIDropDownMenu_CreateInfo();
tInfo["text"] = VUHDO_I18N_BROADCAST_MTS;
tInfo["func"] = VUHDO_minimapItemSelected;
tInfo["arg1"] = "BROAD";
tInfo["notClickable"] = VUHDO_getPlayerRank() < 1;
tInfo["notCheckable"] = true;
UIDropDownMenu_AddButton(tInfo);
tInfo = UIDropDownMenu_CreateInfo();
tInfo["text"] = VUHDO_I18N_RESET_ROLES;
tInfo["func"] = VUHDO_minimapItemSelected;
tInfo["arg1"] = "ROLES";
tInfo["notCheckable"] = true;
UIDropDownMenu_AddButton(tInfo);
VUHDO_createEmptyLine();
tInfo = UIDropDownMenu_CreateInfo();
tInfo["text"] = VUHDO_I18N_LOAD_PROFILE;
tInfo["hasArrow"] = true;
tInfo["value"] = "S";
tInfo["notCheckable"] = true;
UIDropDownMenu_AddButton(tInfo);
tInfo = UIDropDownMenu_CreateInfo();
tInfo["text"] = VUHDO_I18N_LOAD_KEY_SETUP;
tInfo["hasArrow"] = true;
tInfo["value"] = "K";
tInfo["notCheckable"] = true;
UIDropDownMenu_AddButton(tInfo);
VUHDO_createEmptyLine();
tInfo = UIDropDownMenu_CreateInfo();
tInfo["text"] = VUHDO_I18N_TOGGLES;
tInfo["isTitle"] = true;
tInfo["notCheckable"] = true;
UIDropDownMenu_AddButton(tInfo);
VUHDO_createMinimapToggle(VUHDO_I18N_LOCK_PANELS, "LOCK", VUHDO_CONFIG["LOCK_PANELS"]);
VUHDO_createMinimapToggle(VUHDO_I18N_SHOW_PANELS, "SHOW", VUHDO_CONFIG["SHOW_PANELS"]);
VUHDO_createMinimapToggle(VUHDO_I18N_SHOW_BUFF_WATCH, "BUFF", VUHDO_BUFF_SETTINGS["CONFIG"]["SHOW"]);
VUHDO_createMinimapToggle(VUHDO_I18N_MM_BUTTON, "MINIMAP", not VUHDO_MM_SETTINGS["hide"]);
VUHDO_createEmptyLine();
tInfo = UIDropDownMenu_CreateInfo();
tInfo["text"] = VUHDO_I18N_CLOSE;
tInfo["notCheckable"] = true;
UIDropDownMenu_AddButton(tInfo);
end
--
function VUHDO_minimapItemSelected(_, anId)
local tCmd;
if "LOCK" == anId then tCmd = "lock";
elseif "MINIMAP" == anId then tCmd = "minimap";
elseif "SHOW" == anId then tCmd = "toggle";
elseif "BROAD" == anId then tCmd = "cast";
elseif "1" == anId then tCmd = "opt";
elseif "BUFF" == anId then
VUHDO_BUFF_SETTINGS["CONFIG"]["SHOW"] = not VUHDO_BUFF_SETTINGS["CONFIG"]["SHOW"];
VUHDO_reloadBuffPanel();
VUHDO_saveCurrentProfile();
return;
elseif "ROLES" == anId then
table.wipe(VUHDO_MANUAL_ROLES);
VUHDO_reloadUI(false);
return;
end
VUHDO_slashCmd(tCmd);
end