636 lines
22 KiB
Lua
636 lines
22 KiB
Lua
|
|
TRADE_SKILLS_DISPLAYED = 8;
|
|
MAX_TRADE_SKILL_REAGENTS = 8;
|
|
TRADE_SKILL_HEIGHT = 16;
|
|
TRADE_SKILL_TEXT_WIDTH = 275;
|
|
|
|
TradeSkillTypePrefix = {
|
|
["optimal"] = " [+++] ",
|
|
["medium"] = " [++] ",
|
|
["easy"] = " [+] ",
|
|
["trivial"] = " ",
|
|
["header"] = " ",
|
|
}
|
|
|
|
TradeSkillTypeColor = { };
|
|
TradeSkillTypeColor["optimal"] = { r = 1.00, g = 0.50, b = 0.25, font = GameFontNormalLeftOrange };
|
|
TradeSkillTypeColor["medium"] = { r = 1.00, g = 1.00, b = 0.00, font = GameFontNormalLeftYellow };
|
|
TradeSkillTypeColor["easy"] = { r = 0.25, g = 0.75, b = 0.25, font = GameFontNormalLeftLightGreen };
|
|
TradeSkillTypeColor["trivial"] = { r = 0.50, g = 0.50, b = 0.50, font = GameFontNormalLeftGrey };
|
|
TradeSkillTypeColor["header"] = { r = 1.00, g = 0.82, b = 0, font = GameFontNormalLeft };
|
|
|
|
UIPanelWindows["TradeSkillFrame"] = { area = "left", pushable = 3, showFailedFunc = "TradeSkillFrame_ShowFailed" };
|
|
|
|
CURRENT_TRADESKILL = "";
|
|
|
|
|
|
function TradeSkillFrame_Show()
|
|
ShowUIPanel(TradeSkillFrame);
|
|
TradeSkillCreateButton:Disable();
|
|
TradeSkillCreateAllButton:Disable();
|
|
if ( GetTradeSkillSelectionIndex() == 0 ) then
|
|
TradeSkillFrame_SetSelection(GetFirstTradeSkill());
|
|
else
|
|
TradeSkillFrame_SetSelection(GetTradeSkillSelectionIndex());
|
|
end
|
|
FauxScrollFrame_SetOffset(TradeSkillListScrollFrame, 0);
|
|
TradeSkillListScrollFrameScrollBar:SetMinMaxValues(0, 0);
|
|
TradeSkillListScrollFrameScrollBar:SetValue(0);
|
|
SetPortraitTexture(TradeSkillFramePortrait, "player");
|
|
TradeSkillOnlyShowMakeable(TradeSkillFrameAvailableFilterCheckButton:GetChecked());
|
|
TradeSkillFrame_Update();
|
|
|
|
-- Moved to the bottom to prevent addons which hook it from blocking tradeskills
|
|
CloseDropDownMenus();
|
|
end
|
|
|
|
function TradeSkillFrame_Hide()
|
|
HideUIPanel(TradeSkillFrame);
|
|
end
|
|
|
|
function TradeSkillFrame_ShowFailed(self)
|
|
CloseTradeSkill();
|
|
end
|
|
|
|
function TradeSkillFrame_OnLoad(self)
|
|
self:RegisterEvent("TRADE_SKILL_UPDATE");
|
|
self:RegisterEvent("TRADE_SKILL_FILTER_UPDATE");
|
|
self:RegisterEvent("UNIT_PORTRAIT_UPDATE");
|
|
self:RegisterEvent("UPDATE_TRADESKILL_RECAST");
|
|
end
|
|
|
|
function TradeSkillFrame_OnEvent(self, event, ...)
|
|
if ( not TradeSkillFrame:IsShown() ) then
|
|
return;
|
|
end
|
|
if ( event == "TRADE_SKILL_UPDATE" or event == "TRADE_SKILL_FILTER_UPDATE" ) then
|
|
TradeSkillCreateButton:Disable();
|
|
TradeSkillCreateAllButton:Disable();
|
|
if ( (event ~= "TRADE_SKILL_FILTER_UPDATE") and (GetTradeSkillSelectionIndex() > 1) and (GetTradeSkillSelectionIndex() <= GetNumTradeSkills()) ) then
|
|
TradeSkillFrame_SetSelection(GetTradeSkillSelectionIndex());
|
|
else
|
|
TradeSkillFrame_SetSelection(GetFirstTradeSkill());
|
|
FauxScrollFrame_SetOffset(TradeSkillListScrollFrame, 0);
|
|
TradeSkillListScrollFrameScrollBar:SetValue(0);
|
|
end
|
|
TradeSkillFrame_Update();
|
|
elseif ( event == "UNIT_PORTRAIT_UPDATE" ) then
|
|
local arg1 = ...;
|
|
if ( arg1 == "player" ) then
|
|
SetPortraitTexture(TradeSkillFramePortrait, "player");
|
|
end
|
|
elseif ( event == "UPDATE_TRADESKILL_RECAST" ) then
|
|
TradeSkillInputBox:SetNumber(GetTradeskillRepeatCount());
|
|
end
|
|
end
|
|
|
|
function TradeSkillFrame_Update()
|
|
local numTradeSkills = GetNumTradeSkills();
|
|
local skillOffset = FauxScrollFrame_GetOffset(TradeSkillListScrollFrame);
|
|
local name, rank, maxRank = GetTradeSkillLine();
|
|
|
|
if ( CURRENT_TRADESKILL ~= name ) then
|
|
StopTradeSkillRepeat();
|
|
if ( CURRENT_TRADESKILL ~= "" ) then
|
|
-- To fix problem with switching between two tradeskills
|
|
UIDropDownMenu_Initialize(TradeSkillInvSlotDropDown, TradeSkillInvSlotDropDown_Initialize);
|
|
UIDropDownMenu_SetSelectedID(TradeSkillInvSlotDropDown, 1);
|
|
|
|
UIDropDownMenu_Initialize(TradeSkillSubClassDropDown, TradeSkillSubClassDropDown_Initialize);
|
|
UIDropDownMenu_SetSelectedID(TradeSkillSubClassDropDown, 1);
|
|
end
|
|
CURRENT_TRADESKILL = name;
|
|
end
|
|
|
|
-- If no tradeskills
|
|
if ( numTradeSkills == 0 ) then
|
|
TradeSkillFrameTitleText:SetFormattedText(TRADE_SKILL_TITLE, GetTradeSkillLine());
|
|
TradeSkillSkillName:Hide();
|
|
-- TradeSkillSkillLineName:Hide();
|
|
TradeSkillSkillIcon:Hide();
|
|
TradeSkillRequirementLabel:Hide();
|
|
TradeSkillRequirementText:SetText("");
|
|
TradeSkillCollapseAllButton:Disable();
|
|
for i=1, MAX_TRADE_SKILL_REAGENTS, 1 do
|
|
_G["TradeSkillReagent"..i]:Hide();
|
|
end
|
|
else
|
|
TradeSkillSkillName:Show();
|
|
-- TradeSkillSkillLineName:Show();
|
|
TradeSkillSkillIcon:Show();
|
|
TradeSkillCollapseAllButton:Enable();
|
|
end
|
|
|
|
if ( rank < 75 ) and ( not IsTradeSkillLinked() ) then
|
|
TradeSkillFrameEditBox:Hide();
|
|
SetTradeSkillItemNameFilter(""); --In case they are switching from an inspect WITH a filter directly to their own without.
|
|
else
|
|
TradeSkillFrameEditBox:Show();
|
|
end
|
|
-- ScrollFrame update
|
|
FauxScrollFrame_Update(TradeSkillListScrollFrame, numTradeSkills, TRADE_SKILLS_DISPLAYED, TRADE_SKILL_HEIGHT, nil, nil, nil, TradeSkillHighlightFrame, 293, 316 );
|
|
|
|
TradeSkillHighlightFrame:Hide();
|
|
local skillName, skillType, numAvailable, isExpanded, altVerb;
|
|
local skillIndex, skillButton, skillButtonText, skillButtonCount;
|
|
local nameWidth, countWidth;
|
|
|
|
local skillNamePrefix = " ";
|
|
for i=1, TRADE_SKILLS_DISPLAYED, 1 do
|
|
skillIndex = i + skillOffset;
|
|
skillName, skillType, numAvailable, isExpanded, altVerb = GetTradeSkillInfo(skillIndex);
|
|
skillButton = _G["TradeSkillSkill"..i];
|
|
skillButtonText = _G["TradeSkillSkill"..i.."Text"];
|
|
skillButtonCount = _G["TradeSkillSkill"..i.."Count"];
|
|
if ( skillIndex <= numTradeSkills ) then
|
|
-- Set button widths if scrollbar is shown or hidden
|
|
if ( TradeSkillListScrollFrame:IsShown() ) then
|
|
skillButton:SetWidth(293);
|
|
else
|
|
skillButton:SetWidth(323);
|
|
end
|
|
local color = TradeSkillTypeColor[skillType];
|
|
if ( color ) then
|
|
skillButton:SetNormalFontObject(color.font);
|
|
skillButtonCount:SetVertexColor(color.r, color.g, color.b);
|
|
skillButton.r = color.r;
|
|
skillButton.g = color.g;
|
|
skillButton.b = color.b;
|
|
end
|
|
|
|
if ( ENABLE_COLORBLIND_MODE == "1" ) then
|
|
skillNamePrefix = TradeSkillTypePrefix[skillType] or " ";
|
|
end
|
|
|
|
skillButton:SetID(skillIndex);
|
|
skillButton:Show();
|
|
-- Handle headers
|
|
if ( skillType == "header" ) then
|
|
skillButton:SetText(skillName);
|
|
skillButtonText:SetWidth(TRADE_SKILL_TEXT_WIDTH);
|
|
skillButtonCount:SetText("");
|
|
if ( isExpanded ) then
|
|
skillButton:SetNormalTexture("Interface\\Buttons\\UI-MinusButton-Up");
|
|
else
|
|
skillButton:SetNormalTexture("Interface\\Buttons\\UI-PlusButton-Up");
|
|
end
|
|
_G["TradeSkillSkill"..i.."Highlight"]:SetTexture("Interface\\Buttons\\UI-PlusButton-Hilight");
|
|
_G["TradeSkillSkill"..i]:UnlockHighlight();
|
|
else
|
|
if ( not skillName ) then
|
|
return;
|
|
end
|
|
skillButton:SetNormalTexture("");
|
|
_G["TradeSkillSkill"..i.."Highlight"]:SetTexture("");
|
|
if ( numAvailable <= 0 ) then
|
|
skillButton:SetText(skillNamePrefix..skillName);
|
|
skillButtonText:SetWidth(TRADE_SKILL_TEXT_WIDTH);
|
|
skillButtonCount:SetText(skillCountPrefix);
|
|
else
|
|
skillName = skillNamePrefix..skillName;
|
|
skillButtonCount:SetText("["..numAvailable.."]");
|
|
TradeSkillFrameDummyString:SetText(skillName);
|
|
nameWidth = TradeSkillFrameDummyString:GetWidth();
|
|
countWidth = skillButtonCount:GetWidth();
|
|
skillButtonText:SetText(skillName);
|
|
if ( nameWidth + 2 + countWidth > TRADE_SKILL_TEXT_WIDTH ) then
|
|
skillButtonText:SetWidth(TRADE_SKILL_TEXT_WIDTH-2-countWidth);
|
|
else
|
|
skillButtonText:SetWidth(0);
|
|
end
|
|
end
|
|
|
|
-- Place the highlight and lock the highlight state
|
|
if ( GetTradeSkillSelectionIndex() == skillIndex ) then
|
|
TradeSkillHighlightFrame:SetPoint("TOPLEFT", "TradeSkillSkill"..i, "TOPLEFT", 0, 0);
|
|
TradeSkillHighlightFrame:Show();
|
|
skillButtonCount:SetVertexColor(HIGHLIGHT_FONT_COLOR.r, HIGHLIGHT_FONT_COLOR.g, HIGHLIGHT_FONT_COLOR.b);
|
|
skillButton:LockHighlight();
|
|
skillButton.isHighlighted = true;
|
|
else
|
|
skillButton:UnlockHighlight();
|
|
skillButton.isHighlighted = false;
|
|
end
|
|
end
|
|
|
|
else
|
|
skillButton:Hide();
|
|
end
|
|
end
|
|
|
|
-- Set the expand/collapse all button texture
|
|
local numHeaders = 0;
|
|
local notExpanded = 0;
|
|
for i=1, numTradeSkills, 1 do
|
|
local skillName, skillType, numAvailable, isExpanded, altVerb = GetTradeSkillInfo(i);
|
|
if ( skillName and skillType == "header" ) then
|
|
numHeaders = numHeaders + 1;
|
|
if ( not isExpanded ) then
|
|
notExpanded = notExpanded + 1;
|
|
end
|
|
end
|
|
if ( GetTradeSkillSelectionIndex() == i ) then
|
|
-- Set the max makeable items for the create all button
|
|
TradeSkillFrame.numAvailable = math.abs(numAvailable);
|
|
end
|
|
end
|
|
-- If all headers are not expanded then show collapse button, otherwise show the expand button
|
|
if ( notExpanded ~= numHeaders ) then
|
|
TradeSkillCollapseAllButton.collapsed = nil;
|
|
TradeSkillCollapseAllButton:SetNormalTexture("Interface\\Buttons\\UI-MinusButton-Up");
|
|
else
|
|
TradeSkillCollapseAllButton.collapsed = 1;
|
|
TradeSkillCollapseAllButton:SetNormalTexture("Interface\\Buttons\\UI-PlusButton-Up");
|
|
end
|
|
end
|
|
|
|
function TradeSkillFrame_SetSelection(id)
|
|
local skillName, skillType, numAvailable, isExpanded, altVerb = GetTradeSkillInfo(id);
|
|
local creatable = 1;
|
|
if ( not skillName ) then
|
|
creatable = nil;
|
|
end
|
|
TradeSkillHighlightFrame:Show();
|
|
if ( skillType == "header" ) then
|
|
TradeSkillHighlightFrame:Hide();
|
|
if ( isExpanded ) then
|
|
CollapseTradeSkillSubClass(id);
|
|
else
|
|
ExpandTradeSkillSubClass(id);
|
|
end
|
|
return;
|
|
end
|
|
TradeSkillFrame.selectedSkill = id;
|
|
SelectTradeSkill(id);
|
|
if ( GetTradeSkillSelectionIndex() > GetNumTradeSkills() ) then
|
|
return;
|
|
end
|
|
local color = TradeSkillTypeColor[skillType];
|
|
if ( color ) then
|
|
TradeSkillHighlight:SetVertexColor(color.r, color.g, color.b);
|
|
end
|
|
|
|
-- General Info
|
|
local skillLineName, skillLineRank, skillLineMaxRank = GetTradeSkillLine();
|
|
TradeSkillFrameTitleText:SetFormattedText(TRADE_SKILL_TITLE, skillLineName);
|
|
-- Set statusbar info
|
|
TradeSkillRankFrame:SetStatusBarColor(0.0, 0.0, 1.0, 0.5);
|
|
TradeSkillRankFrameBackground:SetVertexColor(0.0, 0.0, 0.75, 0.5);
|
|
TradeSkillRankFrame:SetMinMaxValues(0, skillLineMaxRank);
|
|
TradeSkillRankFrame:SetValue(skillLineRank);
|
|
TradeSkillRankFrameSkillRank:SetText(skillLineRank.."/"..skillLineMaxRank);
|
|
|
|
TradeSkillSkillName:SetText(skillName);
|
|
if ( GetTradeSkillCooldown(id) ) then
|
|
TradeSkillSkillCooldown:SetText(COOLDOWN_REMAINING.." "..SecondsToTime(GetTradeSkillCooldown(id)));
|
|
else
|
|
TradeSkillSkillCooldown:SetText("");
|
|
end
|
|
TradeSkillSkillIcon:SetNormalTexture(GetTradeSkillIcon(id));
|
|
local minMade,maxMade = GetTradeSkillNumMade(id);
|
|
if ( maxMade > 1 ) then
|
|
if ( minMade == maxMade ) then
|
|
TradeSkillSkillIconCount:SetText(minMade);
|
|
else
|
|
TradeSkillSkillIconCount:SetText(minMade.."-"..maxMade);
|
|
end
|
|
if ( TradeSkillSkillIconCount:GetWidth() > 39 ) then
|
|
TradeSkillSkillIconCount:SetText("~"..floor((minMade + maxMade)/2));
|
|
end
|
|
else
|
|
TradeSkillSkillIconCount:SetText("");
|
|
end
|
|
|
|
-- Reagents
|
|
|
|
local numReagents = GetTradeSkillNumReagents(id);
|
|
if(numReagents > 0) then
|
|
TradeSkillReagentLabel:Show();
|
|
else
|
|
TradeSkillReagentLabel:Hide();
|
|
end
|
|
for i=1, numReagents, 1 do
|
|
local reagentName, reagentTexture, reagentCount, playerReagentCount = GetTradeSkillReagentInfo(id, i);
|
|
local reagent = _G["TradeSkillReagent"..i]
|
|
local name = _G["TradeSkillReagent"..i.."Name"];
|
|
local count = _G["TradeSkillReagent"..i.."Count"];
|
|
if ( not reagentName or not reagentTexture ) then
|
|
reagent:Hide();
|
|
else
|
|
reagent:Show();
|
|
SetItemButtonTexture(reagent, reagentTexture);
|
|
name:SetText(reagentName);
|
|
-- Grayout items
|
|
if ( playerReagentCount < reagentCount ) then
|
|
SetItemButtonTextureVertexColor(reagent, 0.5, 0.5, 0.5);
|
|
name:SetTextColor(GRAY_FONT_COLOR.r, GRAY_FONT_COLOR.g, GRAY_FONT_COLOR.b);
|
|
creatable = nil;
|
|
else
|
|
SetItemButtonTextureVertexColor(reagent, 1.0, 1.0, 1.0);
|
|
name:SetTextColor(HIGHLIGHT_FONT_COLOR.r, HIGHLIGHT_FONT_COLOR.g, HIGHLIGHT_FONT_COLOR.b);
|
|
end
|
|
if ( playerReagentCount >= 100 ) then
|
|
playerReagentCount = "*";
|
|
end
|
|
count:SetText(playerReagentCount.." /"..reagentCount);
|
|
end
|
|
end
|
|
-- Place reagent label
|
|
local reagentToAnchorTo = numReagents;
|
|
if ( (numReagents > 0) and (mod(numReagents, 2) == 0) ) then
|
|
reagentToAnchorTo = reagentToAnchorTo - 1;
|
|
end
|
|
|
|
for i=numReagents + 1, MAX_TRADE_SKILL_REAGENTS, 1 do
|
|
_G["TradeSkillReagent"..i]:Hide();
|
|
end
|
|
|
|
local spellFocus = BuildColoredListString(GetTradeSkillTools(id));
|
|
if ( spellFocus ) then
|
|
TradeSkillRequirementLabel:Show();
|
|
TradeSkillRequirementText:SetText(spellFocus);
|
|
else
|
|
TradeSkillRequirementLabel:Hide();
|
|
TradeSkillRequirementText:SetText("");
|
|
end
|
|
|
|
if ( creatable ) then
|
|
TradeSkillCreateButton:Enable();
|
|
TradeSkillCreateAllButton:Enable();
|
|
else
|
|
TradeSkillCreateButton:Disable();
|
|
TradeSkillCreateAllButton:Disable();
|
|
end
|
|
|
|
if ( GetTradeSkillDescription(id) ) then
|
|
TradeSkillDescription:SetText(GetTradeSkillDescription(id))
|
|
TradeSkillReagentLabel:SetPoint("TOPLEFT", "TradeSkillDescription", "BOTTOMLEFT", 0, -10);
|
|
else
|
|
TradeSkillDescription:SetText(" ");
|
|
TradeSkillReagentLabel:SetPoint("TOPLEFT", "TradeSkillDescription", "TOPLEFT", 0, 0);
|
|
end
|
|
-- Reset the number of items to be created
|
|
TradeSkillInputBox:SetNumber(GetTradeskillRepeatCount());
|
|
|
|
--Hide inapplicable buttons if we are inspecting. Otherwise show them
|
|
if ( IsTradeSkillLinked() ) then
|
|
TradeSkillCreateButton:Hide();
|
|
TradeSkillCreateAllButton:Hide();
|
|
TradeSkillDecrementButton:Hide();
|
|
TradeSkillInputBox:Hide();
|
|
TradeSkillIncrementButton:Hide();
|
|
TradeSkillLinkButton:Hide();
|
|
TradeSkillFrameBottomLeftTexture:SetTexture([[Interface\PaperDollInfoFrame\SkillFrame-BotLeft]]);
|
|
TradeSkillFrameBottomRightTexture:SetTexture([[Interface\PaperDollInfoFrame\SkillFrame-BotRight]]);
|
|
else
|
|
--Change button names and show/hide them depending on if this tradeskill creates an item or casts something
|
|
if ( not altVerb ) then
|
|
--Its an item with 'Create'
|
|
TradeSkillCreateAllButton:Show();
|
|
TradeSkillDecrementButton:Show();
|
|
TradeSkillInputBox:Show();
|
|
TradeSkillIncrementButton:Show();
|
|
|
|
TradeSkillFrameBottomLeftTexture:SetTexture([[Interface\TradeSkillFrame\UI-TradeSkill-BotLeft]]);
|
|
TradeSkillFrameBottomRightTexture:SetTexture([[Interface\ClassTrainerFrame\UI-ClassTrainer-BotRight]])
|
|
else
|
|
--Its something else
|
|
TradeSkillCreateAllButton:Hide();
|
|
TradeSkillDecrementButton:Hide();
|
|
TradeSkillInputBox:Hide();
|
|
TradeSkillIncrementButton:Hide();
|
|
|
|
TradeSkillFrameBottomLeftTexture:SetTexture([[Interface\ClassTrainerFrame\UI-ClassTrainer-BotLeft]]);
|
|
TradeSkillFrameBottomRightTexture:SetTexture([[Interface\ClassTrainerFrame\UI-ClassTrainer-BotRight]]);
|
|
end
|
|
if ( GetTradeSkillListLink() ) then
|
|
TradeSkillLinkButton:Show();
|
|
else
|
|
TradeSkillLinkButton:Hide();
|
|
end
|
|
TradeSkillCreateButton:SetText(altVerb or CREATE);
|
|
TradeSkillCreateButton:Show();
|
|
end
|
|
end
|
|
|
|
function TradeSkillSkillButton_OnClick(self, button)
|
|
if ( button == "LeftButton" ) then
|
|
TradeSkillFrame_SetSelection(self:GetID());
|
|
TradeSkillFrame_Update();
|
|
end
|
|
end
|
|
|
|
function TradeSkillFilter_OnTextChanged(self)
|
|
local text = self:GetText();
|
|
|
|
if ( text == SEARCH ) then
|
|
SetTradeSkillItemNameFilter("");
|
|
return;
|
|
end
|
|
|
|
local minLevel, maxLevel;
|
|
local approxLevel = strmatch(text, "^~(%d+)");
|
|
if ( approxLevel ) then
|
|
minLevel = approxLevel - 2;
|
|
maxLevel = approxLevel + 2;
|
|
else
|
|
minLevel, maxLevel = strmatch(text, "^(%d+)%s*-*%s*(%d*)$");
|
|
end
|
|
if ( minLevel ) then
|
|
if ( maxLevel == "" or maxLevel < minLevel ) then
|
|
maxLevel = minLevel;
|
|
end
|
|
SetTradeSkillItemNameFilter(nil);
|
|
SetTradeSkillItemLevelFilter(minLevel, maxLevel);
|
|
else
|
|
SetTradeSkillItemLevelFilter(0, 0);
|
|
SetTradeSkillItemNameFilter(text);
|
|
end
|
|
end
|
|
|
|
function TradeSkillCollapseAllButton_OnClick(self)
|
|
if (self.collapsed) then
|
|
self.collapsed = nil;
|
|
ExpandTradeSkillSubClass(0);
|
|
else
|
|
self.collapsed = 1;
|
|
TradeSkillListScrollFrameScrollBar:SetValue(0);
|
|
CollapseTradeSkillSubClass(0);
|
|
end
|
|
end
|
|
|
|
function TradeSkillSubClassDropDown_OnLoad(self)
|
|
SetTradeSkillSubClassFilter(0, 1, 1);
|
|
UIDropDownMenu_Initialize(self, TradeSkillSubClassDropDown_Initialize);
|
|
UIDropDownMenu_SetWidth(self, 120);
|
|
UIDropDownMenu_SetSelectedID(self, 1);
|
|
end
|
|
|
|
function TradeSkillSubClassDropDown_Initialize()
|
|
TradeSkillFilterFrame_LoadSubClasses(GetTradeSkillSubClasses());
|
|
end
|
|
|
|
function TradeSkillFilterFrame_LoadSubClasses(...)
|
|
local selectedID = UIDropDownMenu_GetSelectedID(TradeSkillSubClassDropDown);
|
|
local numSubClasses = select("#", ...);
|
|
local allChecked = GetTradeSkillSubClassFilter(0);
|
|
|
|
-- the first button in the list is going to be an "all subclasses" button
|
|
local info = UIDropDownMenu_CreateInfo();
|
|
info.text = ALL_SUBCLASSES;
|
|
info.func = TradeSkillSubClassDropDownButton_OnClick;
|
|
-- select this button if nothing else was selected
|
|
info.checked = allChecked and (selectedID == nil or selectedID == 1);
|
|
UIDropDownMenu_AddButton(info);
|
|
if ( info.checked ) then
|
|
UIDropDownMenu_SetText(TradeSkillSubClassDropDown, ALL_SUBCLASSES);
|
|
end
|
|
|
|
local checked;
|
|
for i=1, select("#", ...), 1 do
|
|
-- if there are no filters then don't check any individual subclasses
|
|
if ( allChecked ) then
|
|
checked = nil;
|
|
else
|
|
checked = GetTradeSkillSubClassFilter(i);
|
|
if ( checked ) then
|
|
UIDropDownMenu_SetText(TradeSkillSubClassDropDown, select(i, ...));
|
|
end
|
|
end
|
|
info.text = select(i, ...);
|
|
info.func = TradeSkillSubClassDropDownButton_OnClick;
|
|
info.checked = checked;
|
|
UIDropDownMenu_AddButton(info);
|
|
end
|
|
end
|
|
|
|
function TradeSkillInvSlotDropDown_OnLoad(self)
|
|
SetTradeSkillInvSlotFilter(0, 1, 1);
|
|
UIDropDownMenu_Initialize(self, TradeSkillInvSlotDropDown_Initialize);
|
|
UIDropDownMenu_SetWidth(self, 120);
|
|
UIDropDownMenu_SetSelectedID(self, 1);
|
|
end
|
|
|
|
function TradeSkillInvSlotDropDown_Initialize()
|
|
TradeSkillFilterFrame_LoadInvSlots(GetTradeSkillInvSlots());
|
|
end
|
|
|
|
function TradeSkillFilterFrame_LoadInvSlots(...)
|
|
UIDropDownMenu_SetSelectedID(TradeSkillInvSlotDropDown, nil);
|
|
local allChecked = GetTradeSkillInvSlotFilter(0);
|
|
local info = UIDropDownMenu_CreateInfo();
|
|
local filterCount = select("#", ...);
|
|
info.text = ALL_INVENTORY_SLOTS;
|
|
info.func = TradeSkillInvSlotDropDownButton_OnClick;
|
|
info.checked = allChecked;
|
|
UIDropDownMenu_AddButton(info);
|
|
local checked;
|
|
for i=1, filterCount, 1 do
|
|
if ( allChecked and filterCount > 1 ) then
|
|
checked = nil;
|
|
UIDropDownMenu_SetText(TradeSkillInvSlotDropDown, ALL_INVENTORY_SLOTS);
|
|
else
|
|
checked = GetTradeSkillInvSlotFilter(i);
|
|
if ( checked ) then
|
|
UIDropDownMenu_SetText(TradeSkillInvSlotDropDown, select(i, ...));
|
|
end
|
|
end
|
|
info.text = select(i, ...);
|
|
info.func = TradeSkillInvSlotDropDownButton_OnClick;
|
|
info.checked = checked;
|
|
|
|
UIDropDownMenu_AddButton(info);
|
|
end
|
|
end
|
|
|
|
function TradeSkillFilterFrame_InvSlotName(...)
|
|
for i=1, select("#", ...), 1 do
|
|
if ( GetTradeSkillInvSlotFilter(i) ) then
|
|
return select(i, ...);
|
|
end
|
|
end
|
|
end
|
|
|
|
function TradeSkillSubClassDropDownButton_OnClick(self)
|
|
UIDropDownMenu_SetSelectedID(TradeSkillSubClassDropDown, self:GetID());
|
|
SetTradeSkillSubClassFilter(self:GetID() - 1, 1, 1);
|
|
if ( self:GetID() ~= 1 ) then
|
|
if ( TradeSkillFilterFrame_InvSlotName(GetTradeSkillInvSlots()) ~= TradeSkillInvSlotDropDown.selected ) then
|
|
SetTradeSkillInvSlotFilter(0, 1, 1);
|
|
UIDropDownMenu_SetSelectedID(TradeSkillInvSlotDropDown, 1);
|
|
UIDropDownMenu_SetText(TradeSkillInvSlotDropDown, ALL_INVENTORY_SLOTS);
|
|
end
|
|
end
|
|
TradeSkillListScrollFrameScrollBar:SetValue(0);
|
|
FauxScrollFrame_SetOffset(TradeSkillListScrollFrame, 0);
|
|
TradeSkillFrame_Update();
|
|
end
|
|
|
|
function TradeSkillInvSlotDropDownButton_OnClick(self)
|
|
UIDropDownMenu_SetSelectedID(TradeSkillInvSlotDropDown, self:GetID());
|
|
SetTradeSkillInvSlotFilter(self:GetID() - 1, 1, 1);
|
|
TradeSkillInvSlotDropDown.selected = TradeSkillFilterFrame_InvSlotName(GetTradeSkillInvSlots());
|
|
TradeSkillListScrollFrameScrollBar:SetValue(0);
|
|
FauxScrollFrame_SetOffset(TradeSkillListScrollFrame, 0);
|
|
TradeSkillFrame_Update();
|
|
end
|
|
|
|
function TradeSkillFrameIncrement_OnClick()
|
|
if ( TradeSkillInputBox:GetNumber() < 100 ) then
|
|
TradeSkillInputBox:SetNumber(TradeSkillInputBox:GetNumber() + 1);
|
|
end
|
|
end
|
|
|
|
function TradeSkillFrameDecrement_OnClick()
|
|
if ( TradeSkillInputBox:GetNumber() > 0 ) then
|
|
TradeSkillInputBox:SetNumber(TradeSkillInputBox:GetNumber() - 1);
|
|
end
|
|
end
|
|
|
|
function TradeSkillItem_OnEnter(self)
|
|
if ( TradeSkillFrame.selectedSkill ~= 0 ) then
|
|
GameTooltip:SetOwner(self, "ANCHOR_RIGHT");
|
|
GameTooltip:SetTradeSkillItem(TradeSkillFrame.selectedSkill);
|
|
end
|
|
CursorUpdate(self);
|
|
end
|
|
|
|
function TradeSkillFrame_PlaytimeUpdate()
|
|
if ( PartialPlayTime() ) then
|
|
TradeSkillCreateButton:Disable();
|
|
if (not TradeSkillCreateButtonMask:IsShown()) then
|
|
TradeSkillCreateButtonMask:Show();
|
|
TradeSkillCreateButtonMask.tooltip = format(PLAYTIME_TIRED_ABILITY, REQUIRED_REST_HOURS - floor(GetBillingTimeRested()/60));
|
|
end
|
|
|
|
TradeSkillCreateAllButton:Disable();
|
|
if (not TradeSkillCreateAllButtonMask:IsShown()) then
|
|
TradeSkillCreateAllButtonMask:Show();
|
|
TradeSkillCreateAllButtonMask.tooltip = format(PLAYTIME_TIRED_ABILITY, REQUIRED_REST_HOURS - floor(GetBillingTimeRested()/60));
|
|
end
|
|
elseif ( NoPlayTime() ) then
|
|
TradeSkillCreateButton:Disable();
|
|
if (not TradeSkillCreateButtonMask:IsShown()) then
|
|
TradeSkillCreateButtonMask:Show();
|
|
TradeSkillCreateButtonMask.tooltip = format(PLAYTIME_UNHEALTHY_ABILITY, REQUIRED_REST_HOURS - floor(GetBillingTimeRested()/60));
|
|
end
|
|
|
|
TradeSkillCreateAllButton:Disable();
|
|
if (not TradeSkillCreateAllButtonMask:IsShown()) then
|
|
TradeSkillCreateAllButtonMask:Show();
|
|
TradeSkillCreateAllButtonMask.tooltip = format(PLAYTIME_UNHEALTHY_ABILITY, REQUIRED_REST_HOURS - floor(GetBillingTimeRested()/60));
|
|
end
|
|
else
|
|
if (TradeSkillCreateButtonMask:IsShown() or TradeSkillCreateAllButtonMask:IsShown()) then
|
|
TradeSkillCreateButtonMask:Hide();
|
|
TradeSkillCreateButtonMask.tooltip = nil;
|
|
|
|
TradeSkillCreateAllButtonMask:Hide();
|
|
TradeSkillCreateAllButtonMask.tooltip = nil;
|
|
|
|
TradeSkillFrame_SetSelection(TradeSkillFrame.selectedSkill);
|
|
TradeSkillFrame_Update()
|
|
end
|
|
end
|
|
end
|