режим предателя + UI референсы и DragonUI
This commit is contained in:
@@ -0,0 +1,225 @@
|
||||
MAX_TRADE_ITEMS = 7;
|
||||
MAX_TRADABLE_ITEMS = 6;
|
||||
TRADE_ENCHANT_SLOT = MAX_TRADE_ITEMS;
|
||||
|
||||
function TradeFrame_OnLoad(self)
|
||||
self:RegisterEvent("TRADE_CLOSED");
|
||||
self:RegisterEvent("TRADE_SHOW");
|
||||
self:RegisterEvent("TRADE_UPDATE");
|
||||
self:RegisterEvent("TRADE_TARGET_ITEM_CHANGED");
|
||||
self:RegisterEvent("TRADE_PLAYER_ITEM_CHANGED");
|
||||
self:RegisterEvent("TRADE_ACCEPT_UPDATE");
|
||||
self:RegisterEvent("TRADE_POTENTIAL_BIND_ENCHANT");
|
||||
end
|
||||
|
||||
function TradeFrame_OnShow(self)
|
||||
self.acceptState = 0;
|
||||
TradeFrameTradeButton.enabled = TradeFrameTradeButton:IsEnabled();
|
||||
TradeFrame_UpdateMoney();
|
||||
end
|
||||
|
||||
function TradeFrame_OnEvent(self, event, ...)
|
||||
local arg1, arg2 = ...;
|
||||
if ( event == "TRADE_SHOW" or event == "TRADE_UPDATE" ) then
|
||||
ShowUIPanel(self, 1);
|
||||
if ( not self:IsShown() ) then
|
||||
CloseTrade();
|
||||
return;
|
||||
end
|
||||
|
||||
TradeFrameTradeButton_Enable();
|
||||
TradeFrame_Update();
|
||||
elseif ( event == "TRADE_CLOSED" ) then
|
||||
HideUIPanel(self);
|
||||
StaticPopup_Hide("TRADE_POTENTIAL_BIND_ENCHANT");
|
||||
elseif ( event == "TRADE_TARGET_ITEM_CHANGED" ) then
|
||||
TradeFrame_UpdateTargetItem(arg1);
|
||||
elseif ( event == "TRADE_PLAYER_ITEM_CHANGED" ) then
|
||||
TradeFrame_UpdatePlayerItem(arg1);
|
||||
elseif ( event == "TRADE_ACCEPT_UPDATE" ) then
|
||||
TradeFrame_SetAcceptState(arg1, arg2);
|
||||
elseif ( event == "TRADE_POTENTIAL_BIND_ENCHANT" ) then
|
||||
-- leaving this commented here so people know how to interpret arg1
|
||||
--local canBecomeBound = arg1;
|
||||
if ( arg1 ) then
|
||||
StaticPopup_Show("TRADE_POTENTIAL_BIND_ENCHANT");
|
||||
else
|
||||
StaticPopup_Hide("TRADE_POTENTIAL_BIND_ENCHANT");
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function TradeFrame_Update()
|
||||
SetPortraitTexture(TradeFramePlayerPortrait, "player");
|
||||
SetPortraitTexture(TradeFrameRecipientPortrait, "NPC");
|
||||
TradeFramePlayerNameText:SetText(UnitName("player"));
|
||||
TradeFrameRecipientNameText:SetText(UnitName("NPC"));
|
||||
for i=1, MAX_TRADE_ITEMS, 1 do
|
||||
TradeFrame_UpdateTargetItem(i);
|
||||
TradeFrame_UpdatePlayerItem(i);
|
||||
end
|
||||
TradeHighlightRecipient:Hide();
|
||||
TradeHighlightPlayer:Hide();
|
||||
TradeHighlightPlayerEnchant:Hide();
|
||||
TradeHighlightRecipientEnchant:Hide();
|
||||
end
|
||||
|
||||
function TradeFrame_UpdatePlayerItem(id)
|
||||
local name, texture, numItems, isUsable, enchantment = GetTradePlayerItemInfo(id);
|
||||
local buttonText = _G["TradePlayerItem"..id.."Name"];
|
||||
|
||||
-- See if its the enchant slot
|
||||
if ( id == TRADE_ENCHANT_SLOT ) then
|
||||
if ( name ) then
|
||||
if ( enchantment ) then
|
||||
buttonText:SetText(GREEN_FONT_COLOR_CODE..enchantment..FONT_COLOR_CODE_CLOSE);
|
||||
else
|
||||
buttonText:SetText(HIGHLIGHT_FONT_COLOR_CODE..TRADEFRAME_NOT_MODIFIED_TEXT..FONT_COLOR_CODE_CLOSE);
|
||||
end
|
||||
else
|
||||
buttonText:SetText("");
|
||||
end
|
||||
else
|
||||
buttonText:SetText(name);
|
||||
end
|
||||
local tradeItemButton = _G["TradePlayerItem"..id.."ItemButton"];
|
||||
SetItemButtonTexture(tradeItemButton, texture);
|
||||
SetItemButtonCount(tradeItemButton, numItems);
|
||||
if ( texture ) then
|
||||
tradeItemButton.hasItem = 1;
|
||||
else
|
||||
tradeItemButton.hasItem = nil;
|
||||
end
|
||||
end
|
||||
|
||||
function TradeFrame_UpdateTargetItem(id)
|
||||
local name, texture, numItems, quality, isUsable, enchantment = GetTradeTargetItemInfo(id);
|
||||
local buttonText = _G["TradeRecipientItem"..id.."Name"];
|
||||
-- See if its the enchant slot
|
||||
if ( id == TRADE_ENCHANT_SLOT ) then
|
||||
if ( name ) then
|
||||
if ( enchantment ) then
|
||||
buttonText:SetText(GREEN_FONT_COLOR_CODE..enchantment..FONT_COLOR_CODE_CLOSE);
|
||||
else
|
||||
buttonText:SetText(HIGHLIGHT_FONT_COLOR_CODE..TRADEFRAME_NOT_MODIFIED_TEXT..FONT_COLOR_CODE_CLOSE);
|
||||
end
|
||||
else
|
||||
buttonText:SetText("");
|
||||
end
|
||||
|
||||
else
|
||||
buttonText:SetText(name);
|
||||
end
|
||||
local tradeItemButton = _G["TradeRecipientItem"..id.."ItemButton"];
|
||||
local tradeItem = _G["TradeRecipientItem"..id];
|
||||
SetItemButtonTexture(tradeItemButton, texture);
|
||||
SetItemButtonCount(tradeItemButton, numItems);
|
||||
if ( isUsable or not name ) then
|
||||
SetItemButtonTextureVertexColor(tradeItemButton, 1.0, 1.0, 1.0);
|
||||
SetItemButtonNameFrameVertexColor(tradeItem, 1.0, 1.0, 1.0);
|
||||
SetItemButtonSlotVertexColor(tradeItem, 1.0, 1.0, 1.0);
|
||||
else
|
||||
SetItemButtonTextureVertexColor(tradeItemButton, 0.9, 0, 0);
|
||||
SetItemButtonNameFrameVertexColor(tradeItem, 0.9, 0, 0);
|
||||
SetItemButtonSlotVertexColor(tradeItem, 1.0, 0, 0);
|
||||
end
|
||||
end
|
||||
|
||||
function TradeFrame_SetAcceptState(playerState, targetState)
|
||||
TradeFrame.acceptState = playerState;
|
||||
if ( playerState == 1 ) then
|
||||
TradeHighlightPlayer:Show();
|
||||
TradeHighlightPlayerEnchant:Show();
|
||||
TradeFrameTradeButton_Disable();
|
||||
else
|
||||
TradeHighlightPlayer:Hide();
|
||||
TradeHighlightPlayerEnchant:Hide();
|
||||
TradeFrameTradeButton_Enable();
|
||||
end
|
||||
if ( targetState == 1 ) then
|
||||
TradeHighlightRecipient:Show();
|
||||
TradeHighlightRecipientEnchant:Show();
|
||||
else
|
||||
TradeHighlightRecipient:Hide();
|
||||
TradeHighlightRecipientEnchant:Hide();
|
||||
end
|
||||
end
|
||||
|
||||
function TradeFrameCancelButton_OnClick()
|
||||
if ( TradeFrame.acceptState == 1 ) then
|
||||
CancelTradeAccept();
|
||||
else
|
||||
HideUIPanel(TradeFrame);
|
||||
end
|
||||
end
|
||||
|
||||
function TradeFrame_OnHide()
|
||||
CloseTrade();
|
||||
MoneyInputFrame_SetCopper(TradePlayerInputMoneyFrame, 0);
|
||||
end
|
||||
|
||||
function TradeFrame_OnMouseUp()
|
||||
if ( GetCursorMoney() > 0 ) then
|
||||
AddTradeMoney();
|
||||
elseif ( CursorHasItem() ) then
|
||||
local slot = TradeFrame_GetAvailableSlot();
|
||||
if ( slot ) then
|
||||
ClickTradeButton(slot);
|
||||
end
|
||||
else
|
||||
MoneyInputFrame_ClearFocus(TradePlayerInputMoneyFrame);
|
||||
end
|
||||
end
|
||||
|
||||
function TradeFrame_UpdateMoney()
|
||||
local copper = MoneyInputFrame_GetCopper(TradePlayerInputMoneyFrame);
|
||||
if ( copper > GetMoney() - GetCursorMoney() ) then
|
||||
copper = GetPlayerTradeMoney();
|
||||
MoneyInputFrame_SetCopper(TradePlayerInputMoneyFrame, copper);
|
||||
--MoneyInputFrame_SetTextColor(TradePlayerInputMoneyFrame, RED_FONT_COLOR.r, RED_FONT_COLOR.g, RED_FONT_COLOR.b);
|
||||
TradeFrameTradeButton_Disable();
|
||||
else
|
||||
--MoneyInputFrame_SetTextColor(TradePlayerInputMoneyFrame, HIGHLIGHT_FONT_COLOR.r, HIGHLIGHT_FONT_COLOR.g, HIGHLIGHT_FONT_COLOR.b);
|
||||
TradeFrameTradeButton_Enable();
|
||||
end
|
||||
SetTradeMoney(copper);
|
||||
end
|
||||
|
||||
function TradeFrame_GetAvailableSlot()
|
||||
local tradeItemButton;
|
||||
for i=1, MAX_TRADABLE_ITEMS do
|
||||
tradeItemButton = _G["TradePlayerItem"..i.."ItemButton"];
|
||||
if ( not tradeItemButton.hasItem ) then
|
||||
return i;
|
||||
end
|
||||
end
|
||||
return nil;
|
||||
end
|
||||
|
||||
function TradeFrameTradeButton_Enable()
|
||||
local self = TradeFrameTradeButton;
|
||||
if ( StaticPopup_Visible("TRADE_POTENTIAL_BIND_ENCHANT") ) then
|
||||
self.enabled = true;
|
||||
else
|
||||
self:Enable();
|
||||
end
|
||||
end
|
||||
|
||||
function TradeFrameTradeButton_Disable()
|
||||
local self = TradeFrameTradeButton;
|
||||
if ( StaticPopup_Visible("TRADE_POTENTIAL_BIND_ENCHANT") ) then
|
||||
self.enabled = false;
|
||||
else
|
||||
self:Disable();
|
||||
end
|
||||
end
|
||||
|
||||
function TradeFrameTradeButton_SetToEnabledState()
|
||||
local self = TradeFrameTradeButton;
|
||||
if ( self.enabled ) then
|
||||
self:Enable();
|
||||
else
|
||||
self:Disable();
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user