режим предателя + UI референсы и DragonUI
This commit is contained in:
@@ -0,0 +1,239 @@
|
||||
NUM_PET_STABLE_SLOTS = 4;
|
||||
|
||||
function PetStable_OnLoad(self)
|
||||
self:RegisterEvent("PET_STABLE_SHOW");
|
||||
self:RegisterEvent("PET_STABLE_UPDATE");
|
||||
self:RegisterEvent("PET_STABLE_UPDATE_PAPERDOLL");
|
||||
self:RegisterEvent("PET_STABLE_CLOSED");
|
||||
self:RegisterEvent("UNIT_PET");
|
||||
self:RegisterEvent("UNIT_NAME_UPDATE");
|
||||
end
|
||||
|
||||
function PetStable_OnEvent(self, event, ...)
|
||||
local arg1 = ...;
|
||||
if ( event == "PET_STABLE_SHOW" ) then
|
||||
ShowUIPanel(self);
|
||||
if ( not self:IsShown() ) then
|
||||
ClosePetStables();
|
||||
return;
|
||||
end
|
||||
|
||||
PetStable_Update();
|
||||
elseif ( event == "PET_STABLE_UPDATE" or
|
||||
(event == "UNIT_PET" and arg1 == "player") or
|
||||
(event == "UNIT_NAME_UPDATE" and arg1 == "pet") ) then
|
||||
PetStable_Update();
|
||||
elseif ( event == "PET_STABLE_UPDATE_PAPERDOLL" ) then
|
||||
-- So warlock pets don't show
|
||||
if ( UnitExists("pet") and not HasPetUI() ) then
|
||||
PetStable_NoPetsAllowed();
|
||||
return;
|
||||
end
|
||||
SetPetStablePaperdoll(PetStableModel);
|
||||
elseif ( event == "PET_STABLE_CLOSED" ) then
|
||||
HideUIPanel(self);
|
||||
StaticPopup_Hide("CONFIRM_BUY_STABLE_SLOT");
|
||||
end
|
||||
end
|
||||
|
||||
function PetStable_Update()
|
||||
-- Set stablemaster portrait
|
||||
SetPortraitTexture(PetStableFramePortrait, "player");
|
||||
|
||||
-- So warlock pets don't show
|
||||
local hasPetUI, isHunterPet = HasPetUI();
|
||||
if ( UnitExists("pet") and hasPetUI and not isHunterPet ) then
|
||||
PetStable_NoPetsAllowed();
|
||||
PetStableCurrentPet:Disable();
|
||||
return;
|
||||
else
|
||||
PetStableCurrentPet:Enable();
|
||||
end
|
||||
|
||||
-- If no selected pet try to set one
|
||||
local selectedPet = GetSelectedStablePet();
|
||||
if ( selectedPet == -1 ) then
|
||||
if ( GetPetIcon() ) then
|
||||
selectedPet = 0;
|
||||
ClickStablePet(0);
|
||||
else
|
||||
for i=0, NUM_PET_STABLE_SLOTS do
|
||||
if ( GetStablePetInfo(i) ) then
|
||||
selectedPet = i;
|
||||
ClickStablePet(i);
|
||||
break;
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
-- Set slot cost
|
||||
MoneyFrame_Update("PetStableCostMoneyFrame", GetNextStableSlotCost());
|
||||
|
||||
-- Set slot statuseses
|
||||
local numSlots = GetNumStableSlots();
|
||||
local numPets = GetNumStablePets();
|
||||
|
||||
local button, buttonName;
|
||||
local background;
|
||||
local icon, name, level, family, talent;
|
||||
for i=1, NUM_PET_STABLE_SLOTS do
|
||||
buttonName = "PetStableStabledPet"..i;
|
||||
button = _G[buttonName];
|
||||
background = _G[buttonName.."Background"];
|
||||
icon, name, level, family, talent = GetStablePetInfo(i);
|
||||
SetItemButtonTexture(button, icon);
|
||||
if ( i <= GetNumStableSlots() ) then
|
||||
background:SetVertexColor(1.0,1.0,1.0);
|
||||
button:Enable();
|
||||
if ( icon ) then
|
||||
button.tooltip = name;
|
||||
button.tooltipSubtext = format(STABLE_PET_INFO_TOOLTIP_TEXT, level, family, talent);
|
||||
else
|
||||
button.tooltip = EMPTY_STABLE_SLOT;
|
||||
button.tooltipSubtext = "";
|
||||
end
|
||||
if ( i == selectedPet ) then
|
||||
if ( icon ) then
|
||||
button:SetChecked(1);
|
||||
PetStableLevelText:SetFormattedText(STABLE_PET_INFO_TEXT, name, level, family, talent);
|
||||
SetPetStablePaperdoll(PetStableModel);
|
||||
PetStablePetInfo.tooltip = format(PET_DIET_TEMPLATE, BuildListString(GetStablePetFoodTypes(i)));
|
||||
if ( not PetStableModel:IsShown() ) then
|
||||
PetStableModel:Show();
|
||||
end
|
||||
else
|
||||
button:SetChecked(nil);
|
||||
PetStableLevelText:SetText("");
|
||||
PetStableModel:Hide();
|
||||
end
|
||||
|
||||
else
|
||||
button:SetChecked(nil);
|
||||
end
|
||||
if ( GameTooltip:IsOwned(button) ) then
|
||||
GameTooltip:SetOwner(button, "ANCHOR_RIGHT");
|
||||
GameTooltip:SetText(button.tooltip);
|
||||
GameTooltip:AddLine(button.tooltipSubtext, 1.0, 1.0, 1.0);
|
||||
GameTooltip:Show();
|
||||
end
|
||||
else
|
||||
background:SetVertexColor(1.0, 0.1, 0.1);
|
||||
button:Disable();
|
||||
end
|
||||
end
|
||||
|
||||
-- Current pet slot
|
||||
if ( selectedPet == 0 ) then
|
||||
if ( UnitExists("pet") and hasPetUI ) then
|
||||
PetStableCurrentPet:SetChecked(1);
|
||||
name = UnitName("pet") or "";
|
||||
level = UnitLevel("pet");
|
||||
family = UnitCreatureFamily("pet") or "";
|
||||
talent = GetPetTalentTree() or "";
|
||||
PetStableLevelText:SetFormattedText(STABLE_PET_INFO_TEXT, name, level, family, talent);
|
||||
SetPetStablePaperdoll(PetStableModel);
|
||||
if ( not PetStableModel:IsShown() ) then
|
||||
PetStableModel:Show();
|
||||
end
|
||||
if ( GetPetFoodTypes() ) then
|
||||
PetStablePetInfo.tooltip = format(PET_DIET_TEMPLATE, BuildListString(GetPetFoodTypes()));
|
||||
end
|
||||
elseif ( GetStablePetInfo(0) ) then
|
||||
-- If pet doesn't exist it might be dismissed, so check stable slot 0 for current pet info
|
||||
PetStableCurrentPet:SetChecked(1);
|
||||
icon, name, level, family, talent = GetStablePetInfo(0);
|
||||
PetStableLevelText:SetFormattedText(STABLE_PET_INFO_TEXT, name, level, family, talent);
|
||||
SetPetStablePaperdoll(PetStableModel);
|
||||
if ( not PetStableModel:IsShown() ) then
|
||||
PetStableModel:Show();
|
||||
end
|
||||
if ( GetStablePetFoodTypes(0) ) then
|
||||
PetStablePetInfo.tooltip = format(PET_DIET_TEMPLATE, BuildListString(GetStablePetFoodTypes(0)));
|
||||
end
|
||||
else
|
||||
PetStableCurrentPet:SetChecked(nil);
|
||||
PetStableLevelText:SetText("");
|
||||
PetStableModel:Hide();
|
||||
end
|
||||
else
|
||||
PetStableCurrentPet:SetChecked(nil);
|
||||
end
|
||||
|
||||
-- Set tooltip and icon info
|
||||
if ( GetPetIcon() and UnitCreatureFamily("pet") ) then
|
||||
SetItemButtonTexture(PetStableCurrentPet, GetPetIcon());
|
||||
name = UnitName("pet") or "";
|
||||
level = UnitLevel("pet");
|
||||
family = UnitCreatureFamily("pet") or "";
|
||||
talent = GetPetTalentTree() or "";
|
||||
PetStableCurrentPet.tooltip = name;
|
||||
PetStableCurrentPet.tooltipSubtext = format(STABLE_PET_INFO_TOOLTIP_TEXT, level, family, talent);
|
||||
elseif ( GetStablePetInfo(0) ) then
|
||||
icon, name, level, family, talent = GetStablePetInfo(0);
|
||||
SetItemButtonTexture(PetStableCurrentPet, icon);
|
||||
PetStableCurrentPet.tooltip = name;
|
||||
PetStableCurrentPet.tooltipSubtext = format(STABLE_PET_INFO_TOOLTIP_TEXT, level, family, talent);
|
||||
else
|
||||
SetItemButtonTexture(PetStableCurrentPet, "");
|
||||
PetStableCurrentPet.tooltip = EMPTY_STABLE_SLOT;
|
||||
PetStableCurrentPet.tooltipSubtext = "";
|
||||
PetStableCurrentPet:SetChecked(nil);
|
||||
end
|
||||
if ( GameTooltip:IsOwned(PetStableCurrentPet) ) then
|
||||
GameTooltip:SetOwner(PetStableCurrentPet, "ANCHOR_RIGHT");
|
||||
GameTooltip:SetText(PetStableCurrentPet.tooltip);
|
||||
GameTooltip:AddLine(PetStableCurrentPet.tooltipSubtext, 1.0, 1.0, 1.0);
|
||||
GameTooltip:Show();
|
||||
end
|
||||
|
||||
-- If no selected pet clear everything out
|
||||
if ( selectedPet == -1 ) then
|
||||
-- no pet
|
||||
PetStableModel:Hide();
|
||||
PetStableLevelText:SetText("");
|
||||
end
|
||||
|
||||
-- Enable, disable, or hide purchase button
|
||||
PetStablePurchaseButton:Show();
|
||||
if ( GetNumStableSlots() == NUM_PET_STABLE_SLOTS or (not IsAtStableMaster())) then
|
||||
PetStablePurchaseButton:Hide();
|
||||
PetStableCostLabel:Hide();
|
||||
PetStableCostMoneyFrame:Hide();
|
||||
PetStableSlotText:Hide();
|
||||
elseif ( GetMoney() >= GetNextStableSlotCost() ) then
|
||||
PetStablePurchaseButton:Show();
|
||||
PetStablePurchaseButton:Enable();
|
||||
PetStableCostLabel:Show();
|
||||
PetStableCostMoneyFrame:Show();
|
||||
PetStableSlotText:Show();
|
||||
SetMoneyFrameColor("PetStableCostMoneyFrame", "white");
|
||||
else
|
||||
PetStablePurchaseButton:Show();
|
||||
PetStablePurchaseButton:Disable();
|
||||
PetStableCostLabel:Show();
|
||||
PetStableCostMoneyFrame:Show();
|
||||
PetStableSlotText:Show();
|
||||
SetMoneyFrameColor("PetStableCostMoneyFrame", "red");
|
||||
end
|
||||
end
|
||||
|
||||
function PetStable_NoPetsAllowed()
|
||||
local button;
|
||||
for i=1, NUM_PET_STABLE_SLOTS do
|
||||
button = _G["PetStableStabledPet"..i];
|
||||
button.tooltip = EMPTY_STABLE_SLOT;
|
||||
button:SetChecked(nil);
|
||||
end
|
||||
|
||||
PetStableCurrentPet:SetChecked(nil);
|
||||
PetStableLevelText:SetText("");
|
||||
PetStableModel:Hide();
|
||||
SetItemButtonTexture(PetStableCurrentPet, "");
|
||||
PetStableCurrentPet.tooltip = EMPTY_STABLE_SLOT;
|
||||
PetStableCurrentPet:SetChecked(nil);
|
||||
PetStablePurchaseButton:Hide();
|
||||
PetStableCostLabel:Hide();
|
||||
PetStableCostMoneyFrame:Hide();
|
||||
PetStableSlotText:Hide();
|
||||
end
|
||||
Reference in New Issue
Block a user