режим предателя + UI референсы и DragonUI
This commit is contained in:
@@ -0,0 +1,391 @@
|
||||
MAX_NUM_QUESTS = 32;
|
||||
MAX_NUM_ITEMS = 10;
|
||||
MAX_REQUIRED_ITEMS = 6;
|
||||
QUEST_DESCRIPTION_GRADIENT_LENGTH = 30;
|
||||
QUEST_DESCRIPTION_GRADIENT_CPS = 70;
|
||||
QUESTINFO_FADE_IN = 0.5;
|
||||
|
||||
function QuestFrame_OnLoad(self)
|
||||
self:RegisterEvent("QUEST_GREETING");
|
||||
self:RegisterEvent("QUEST_DETAIL");
|
||||
self:RegisterEvent("QUEST_PROGRESS");
|
||||
self:RegisterEvent("QUEST_COMPLETE");
|
||||
self:RegisterEvent("QUEST_FINISHED");
|
||||
self:RegisterEvent("QUEST_ITEM_UPDATE");
|
||||
end
|
||||
|
||||
function QuestFrame_OnEvent(self, event, ...)
|
||||
if ( event == "QUEST_FINISHED" ) then
|
||||
HideUIPanel(QuestFrame);
|
||||
return;
|
||||
end
|
||||
if ( (event == "QUEST_ITEM_UPDATE") and not QuestFrame:IsShown() ) then
|
||||
return;
|
||||
end
|
||||
|
||||
QuestFrame_SetPortrait();
|
||||
ShowUIPanel(QuestFrame);
|
||||
if ( not QuestFrame:IsShown() ) then
|
||||
CloseQuest();
|
||||
return;
|
||||
end
|
||||
if ( event == "QUEST_GREETING" ) then
|
||||
QuestFrameGreetingPanel:Hide();
|
||||
QuestFrameGreetingPanel:Show();
|
||||
elseif ( event == "QUEST_DETAIL" ) then
|
||||
HideUIPanel(QuestLogDetailFrame);
|
||||
QuestFrameDetailPanel:Hide();
|
||||
QuestFrameDetailPanel:Show();
|
||||
elseif ( event == "QUEST_PROGRESS" ) then
|
||||
HideUIPanel(QuestLogDetailFrame);
|
||||
QuestFrameProgressPanel:Hide();
|
||||
QuestFrameProgressPanel:Show();
|
||||
elseif ( event == "QUEST_COMPLETE" ) then
|
||||
HideUIPanel(QuestLogDetailFrame);
|
||||
QuestFrameCompleteQuestButton:Enable();
|
||||
QuestFrameRewardPanel:Hide();
|
||||
QuestFrameRewardPanel:Show();
|
||||
elseif ( event == "QUEST_ITEM_UPDATE" ) then
|
||||
if ( QuestFrameDetailPanel:IsShown() ) then
|
||||
QuestInfo_ShowRewards();
|
||||
QuestDetailScrollFrameScrollBar:SetValue(0);
|
||||
elseif ( QuestFrameProgressPanel:IsShown() ) then
|
||||
QuestFrameProgressItems_Update()
|
||||
QuestProgressScrollFrameScrollBar:SetValue(0);
|
||||
elseif ( QuestFrameRewardPanel:IsShown() ) then
|
||||
QuestInfo_ShowRewards();
|
||||
QuestRewardScrollFrameScrollBar:SetValue(0);
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function QuestFrame_SetPortrait()
|
||||
QuestFrameNpcNameText:SetText(UnitName("questnpc"));
|
||||
if ( UnitExists("questnpc") ) then
|
||||
SetPortraitTexture(QuestFramePortrait, "questnpc");
|
||||
else
|
||||
QuestFramePortrait:SetTexture("Interface\\QuestFrame\\UI-QuestLog-BookIcon");
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
function QuestFrameRewardPanel_OnShow()
|
||||
QuestFrameDetailPanel:Hide();
|
||||
QuestFrameGreetingPanel:Hide();
|
||||
QuestFrameProgressPanel:Hide();
|
||||
local material = QuestFrame_GetMaterial();
|
||||
QuestFrame_SetMaterial(QuestFrameRewardPanel, material);
|
||||
QuestInfo_Display(QUEST_TEMPLATE_REWARD, QuestRewardScrollChildFrame, QuestFrameCompleteQuestButton, QuestFrameCancelButton, material);
|
||||
QuestRewardScrollFrameScrollBar:SetValue(0);
|
||||
if ( QUEST_FADING_DISABLE == "0" ) then
|
||||
QuestRewardScrollChildFrame:SetAlpha(0);
|
||||
UIFrameFadeIn(QuestRewardScrollChildFrame, QUESTINFO_FADE_IN);
|
||||
end
|
||||
end
|
||||
|
||||
function QuestRewardCancelButton_OnClick()
|
||||
DeclineQuest();
|
||||
PlaySound("igQuestCancel");
|
||||
end
|
||||
|
||||
function QuestRewardCompleteButton_OnClick()
|
||||
if ( QuestInfoFrame.itemChoice == 0 and GetNumQuestChoices() > 0 ) then
|
||||
QuestChooseRewardError();
|
||||
else
|
||||
local money = GetQuestMoneyToGet();
|
||||
if ( money and money > 0 ) then
|
||||
QuestFrame.dialog = StaticPopup_Show("CONFIRM_COMPLETE_EXPENSIVE_QUEST");
|
||||
if ( QuestFrame.dialog ) then
|
||||
MoneyFrame_Update(QuestFrame.dialog:GetName().."MoneyFrame", money);
|
||||
end
|
||||
else
|
||||
GetQuestReward(QuestInfoFrame.itemChoice);
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function QuestProgressCompleteButton_OnClick()
|
||||
CompleteQuest();
|
||||
--PlaySound("igQuestListComplete");
|
||||
end
|
||||
|
||||
function QuestGoodbyeButton_OnClick()
|
||||
DeclineQuest();
|
||||
PlaySound("igQuestCancel");
|
||||
end
|
||||
|
||||
function QuestRewardItem_OnClick(self)
|
||||
if ( self.type == "choice" ) then
|
||||
QuestRewardItemHighlight:SetPoint("TOPLEFT", self, "TOPLEFT", -8, 7);
|
||||
QuestRewardItemHighlight:Show();
|
||||
QuestFrameRewardPanel.itemChoice = self:GetID();
|
||||
end
|
||||
end
|
||||
|
||||
function QuestFrameProgressPanel_OnShow()
|
||||
QuestFrameRewardPanel:Hide();
|
||||
QuestFrameDetailPanel:Hide();
|
||||
QuestFrameGreetingPanel:Hide();
|
||||
local material = QuestFrame_GetMaterial();
|
||||
QuestFrame_SetMaterial(QuestFrameProgressPanel, material);
|
||||
QuestProgressTitleText:SetText(GetTitleText());
|
||||
QuestFrame_SetTitleTextColor(QuestProgressTitleText, material);
|
||||
QuestProgressText:SetText(GetProgressText());
|
||||
QuestFrame_SetTextColor(QuestProgressText, material);
|
||||
if ( IsQuestCompletable() ) then
|
||||
QuestFrameCompleteButton:Enable();
|
||||
else
|
||||
QuestFrameCompleteButton:Disable();
|
||||
end
|
||||
QuestFrameProgressItems_Update();
|
||||
if ( QUEST_FADING_DISABLE == "0" ) then
|
||||
QuestProgressScrollChildFrame:SetAlpha(0);
|
||||
UIFrameFadeIn(QuestProgressScrollChildFrame, QUESTINFO_FADE_IN);
|
||||
end
|
||||
end
|
||||
|
||||
function QuestFrameProgressItems_Update()
|
||||
local numRequiredItems = GetNumQuestItems();
|
||||
local questItemName = "QuestProgressItem";
|
||||
if ( numRequiredItems > 0 or GetQuestMoneyToGet() > 0 ) then
|
||||
QuestProgressRequiredItemsText:Show();
|
||||
|
||||
-- If there's money required then anchor and display it
|
||||
if ( GetQuestMoneyToGet() > 0 ) then
|
||||
MoneyFrame_Update("QuestProgressRequiredMoneyFrame", GetQuestMoneyToGet());
|
||||
|
||||
if ( GetQuestMoneyToGet() > GetMoney() ) then
|
||||
-- Not enough money
|
||||
QuestProgressRequiredMoneyText:SetTextColor(0, 0, 0);
|
||||
SetMoneyFrameColor("QuestProgressRequiredMoneyFrame", "red");
|
||||
else
|
||||
QuestProgressRequiredMoneyText:SetTextColor(0.2, 0.2, 0.2);
|
||||
SetMoneyFrameColor("QuestProgressRequiredMoneyFrame", "white");
|
||||
end
|
||||
QuestProgressRequiredMoneyText:Show();
|
||||
QuestProgressRequiredMoneyFrame:Show();
|
||||
|
||||
-- Reanchor required item
|
||||
_G[questItemName..1]:SetPoint("TOPLEFT", "QuestProgressRequiredMoneyText", "BOTTOMLEFT", 0, -10);
|
||||
else
|
||||
QuestProgressRequiredMoneyText:Hide();
|
||||
QuestProgressRequiredMoneyFrame:Hide();
|
||||
|
||||
_G[questItemName..1]:SetPoint("TOPLEFT", "QuestProgressRequiredItemsText", "BOTTOMLEFT", -3, -5);
|
||||
end
|
||||
|
||||
|
||||
|
||||
for i=1, numRequiredItems, 1 do
|
||||
local requiredItem = _G[questItemName..i];
|
||||
requiredItem.type = "required";
|
||||
local name, texture, numItems = GetQuestItemInfo(requiredItem.type, i);
|
||||
SetItemButtonCount(requiredItem, numItems);
|
||||
SetItemButtonTexture(requiredItem, texture);
|
||||
requiredItem:Show();
|
||||
_G[questItemName..i.."Name"]:SetText(name);
|
||||
|
||||
end
|
||||
else
|
||||
QuestProgressRequiredMoneyText:Hide();
|
||||
QuestProgressRequiredMoneyFrame:Hide();
|
||||
QuestProgressRequiredItemsText:Hide();
|
||||
end
|
||||
for i=numRequiredItems + 1, MAX_REQUIRED_ITEMS, 1 do
|
||||
_G[questItemName..i]:Hide();
|
||||
end
|
||||
QuestProgressScrollFrameScrollBar:SetValue(0);
|
||||
end
|
||||
|
||||
function QuestFrameGreetingPanel_OnShow()
|
||||
QuestFrameRewardPanel:Hide();
|
||||
QuestFrameProgressPanel:Hide();
|
||||
QuestFrameDetailPanel:Hide();
|
||||
if ( QUEST_FADING_DISABLE == "0" ) then
|
||||
QuestGreetingScrollChildFrame:SetAlpha(0);
|
||||
UIFrameFadeIn(QuestGreetingScrollChildFrame, QUESTINFO_FADE_IN);
|
||||
end
|
||||
local material = QuestFrame_GetMaterial();
|
||||
QuestFrame_SetMaterial(QuestFrameGreetingPanel, material);
|
||||
GreetingText:SetText(GetGreetingText());
|
||||
QuestFrame_SetTextColor(GreetingText, material);
|
||||
QuestFrame_SetTitleTextColor(CurrentQuestsText, material);
|
||||
QuestFrame_SetTitleTextColor(AvailableQuestsText, material);
|
||||
local numActiveQuests = GetNumActiveQuests();
|
||||
local numAvailableQuests = GetNumAvailableQuests();
|
||||
if ( numActiveQuests == 0 ) then
|
||||
CurrentQuestsText:Hide();
|
||||
QuestGreetingFrameHorizontalBreak:Hide();
|
||||
else
|
||||
CurrentQuestsText:SetPoint("TOPLEFT", "GreetingText", "BOTTOMLEFT", 0, -10);
|
||||
CurrentQuestsText:Show();
|
||||
QuestTitleButton1:SetPoint("TOPLEFT", "CurrentQuestsText", "BOTTOMLEFT", -10, -5);
|
||||
for i=1, numActiveQuests, 1 do
|
||||
local questTitleButton = _G["QuestTitleButton"..i];
|
||||
local questTitleButtonIcon = _G[questTitleButton:GetName() .. "QuestIcon"];
|
||||
local title, isComplete = GetActiveTitle(i);
|
||||
if ( IsActiveQuestTrivial(i) ) then
|
||||
questTitleButton:SetFormattedText(TRIVIAL_QUEST_DISPLAY, title);
|
||||
questTitleButtonIcon:SetVertexColor(0.75,0.75,0.75);
|
||||
else
|
||||
questTitleButton:SetFormattedText(NORMAL_QUEST_DISPLAY, title);
|
||||
questTitleButtonIcon:SetVertexColor(1,1,1);
|
||||
end
|
||||
if ( isComplete ) then
|
||||
questTitleButtonIcon:SetTexture("Interface\\GossipFrame\\ActiveQuestIcon");
|
||||
else
|
||||
questTitleButtonIcon:SetTexture("Interface\\GossipFrame\\IncompleteQuestIcon");
|
||||
end
|
||||
questTitleButton:SetHeight(questTitleButton:GetTextHeight() + 2);
|
||||
questTitleButton:SetID(i);
|
||||
questTitleButton.isActive = 1;
|
||||
questTitleButton:Show();
|
||||
if ( i > 1 ) then
|
||||
questTitleButton:SetPoint("TOPLEFT", "QuestTitleButton"..(i-1),"BOTTOMLEFT", 0, -2)
|
||||
end
|
||||
end
|
||||
end
|
||||
if ( numAvailableQuests == 0 ) then
|
||||
AvailableQuestsText:Hide();
|
||||
QuestGreetingFrameHorizontalBreak:Hide();
|
||||
else
|
||||
if ( numActiveQuests > 0 ) then
|
||||
QuestGreetingFrameHorizontalBreak:SetPoint("TOPLEFT", "QuestTitleButton"..numActiveQuests, "BOTTOMLEFT",22,-10);
|
||||
QuestGreetingFrameHorizontalBreak:Show();
|
||||
AvailableQuestsText:SetPoint("TOPLEFT", "QuestGreetingFrameHorizontalBreak", "BOTTOMLEFT", -12, -10);
|
||||
else
|
||||
AvailableQuestsText:SetPoint("TOPLEFT", "GreetingText", "BOTTOMLEFT", 0, -10);
|
||||
end
|
||||
AvailableQuestsText:Show();
|
||||
_G["QuestTitleButton"..(numActiveQuests + 1)]:SetPoint("TOPLEFT", "AvailableQuestsText", "BOTTOMLEFT", -10, -5);
|
||||
for i=(numActiveQuests + 1), (numActiveQuests + numAvailableQuests), 1 do
|
||||
local questTitleButton = _G["QuestTitleButton"..i];
|
||||
local questTitleButtonIcon = _G[questTitleButton:GetName() .. "QuestIcon"];
|
||||
local isTrivial, isDaily, isRepeatable = GetAvailableQuestInfo(i - numActiveQuests);
|
||||
if ( isDaily ) then
|
||||
questTitleButtonIcon:SetTexture("Interface\\GossipFrame\\DailyQuestIcon");
|
||||
elseif ( isRepeatable ) then
|
||||
questTitleButtonIcon:SetTexture("Interface\\GossipFrame\\DailyActiveQuestIcon");
|
||||
else
|
||||
questTitleButtonIcon:SetTexture("Interface\\GossipFrame\\AvailableQuestIcon");
|
||||
end
|
||||
if ( isTrivial ) then
|
||||
questTitleButton:SetFormattedText(TRIVIAL_QUEST_DISPLAY, GetAvailableTitle(i - numActiveQuests));
|
||||
questTitleButtonIcon:SetVertexColor(0.5,0.5,0.5);
|
||||
else
|
||||
questTitleButton:SetFormattedText(NORMAL_QUEST_DISPLAY, GetAvailableTitle(i - numActiveQuests));
|
||||
questTitleButtonIcon:SetVertexColor(1,1,1);
|
||||
end
|
||||
questTitleButton:SetHeight(questTitleButton:GetTextHeight() + 2);
|
||||
questTitleButton:SetID(i - numActiveQuests);
|
||||
questTitleButton.isActive = 0;
|
||||
questTitleButton:Show();
|
||||
if ( i > numActiveQuests + 1 ) then
|
||||
questTitleButton:SetPoint("TOPLEFT", "QuestTitleButton"..(i-1),"BOTTOMLEFT", 0, -2)
|
||||
end
|
||||
end
|
||||
end
|
||||
for i=(numActiveQuests + numAvailableQuests + 1), MAX_NUM_QUESTS, 1 do
|
||||
_G["QuestTitleButton"..i]:Hide();
|
||||
end
|
||||
end
|
||||
|
||||
function QuestFrame_OnShow()
|
||||
PlaySound("igQuestListOpen");
|
||||
end
|
||||
|
||||
function QuestFrame_OnHide()
|
||||
QuestFrameGreetingPanel:Hide();
|
||||
QuestFrameDetailPanel:Hide();
|
||||
QuestFrameRewardPanel:Hide();
|
||||
QuestFrameProgressPanel:Hide();
|
||||
if ( QuestFrame.dialog ) then
|
||||
QuestFrame.dialog:Hide();
|
||||
QuestFrame.dialog = nil;
|
||||
end
|
||||
if ( QuestFrame.autoQuest ) then
|
||||
QuestFrameDetailPanelBotRight:SetTexture("Interface\\QuestFrame\\UI-QuestGreeting-BotRight");
|
||||
QuestFrameDeclineButton:Show();
|
||||
QuestFrame.autoQuest = nil;
|
||||
end
|
||||
CloseQuest();
|
||||
PlaySound("igQuestListClose");
|
||||
end
|
||||
|
||||
function QuestTitleButton_OnClick(self)
|
||||
if ( self.isActive == 1 ) then
|
||||
SelectActiveQuest(self:GetID());
|
||||
else
|
||||
SelectAvailableQuest(self:GetID());
|
||||
end
|
||||
PlaySound("igQuestListSelect");
|
||||
end
|
||||
|
||||
function QuestFrameDetailPanel_OnShow()
|
||||
QuestFrameRewardPanel:Hide();
|
||||
QuestFrameProgressPanel:Hide();
|
||||
QuestFrameGreetingPanel:Hide();
|
||||
if ( QuestGetAutoAccept() ) then
|
||||
QuestFrameDetailPanelBotRight:SetTexture("Interface\\QuestFrame\\UI-QuestGreeting-BotRight-blank");
|
||||
QuestFrameDeclineButton:Hide();
|
||||
QuestFrame.autoQuest = true;
|
||||
end
|
||||
local material = QuestFrame_GetMaterial();
|
||||
QuestFrame_SetMaterial(QuestFrameDetailPanel, material);
|
||||
QuestInfo_Display(QUEST_TEMPLATE_DETAIL1, QuestDetailScrollChildFrame, QuestFrameAcceptButton, nil, material);
|
||||
QuestInfo_Display(QUEST_TEMPLATE_DETAIL2, QuestInfoFadingFrame, QuestFrameAcceptButton, nil, material);
|
||||
QuestDetailScrollFrameScrollBar:SetValue(0);
|
||||
end
|
||||
|
||||
function QuestDetailAcceptButton_OnClick()
|
||||
if ( QuestFlagsPVP() ) then
|
||||
QuestFrame.dialog = StaticPopup_Show("CONFIRM_ACCEPT_PVP_QUEST");
|
||||
else
|
||||
if ( QuestFrame.autoQuest ) then
|
||||
HideUIPanel(QuestFrame);
|
||||
else
|
||||
AcceptQuest();
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function QuestDetailDeclineButton_OnClick()
|
||||
DeclineQuest();
|
||||
PlaySound("igQuestCancel");
|
||||
end
|
||||
|
||||
function QuestFrame_SetMaterial(frame, material)
|
||||
if ( material == "Parchment" ) then
|
||||
_G[frame:GetName().."MaterialTopLeft"]:Hide();
|
||||
_G[frame:GetName().."MaterialTopRight"]:Hide();
|
||||
_G[frame:GetName().."MaterialBotLeft"]:Hide();
|
||||
_G[frame:GetName().."MaterialBotRight"]:Hide();
|
||||
else
|
||||
_G[frame:GetName().."MaterialTopLeft"]:Show();
|
||||
_G[frame:GetName().."MaterialTopRight"]:Show();
|
||||
_G[frame:GetName().."MaterialBotLeft"]:Show();
|
||||
_G[frame:GetName().."MaterialBotRight"]:Show();
|
||||
_G[frame:GetName().."MaterialTopLeft"]:SetTexture("Interface\\ItemTextFrame\\ItemText-"..material.."-TopLeft");
|
||||
_G[frame:GetName().."MaterialTopRight"]:SetTexture("Interface\\ItemTextFrame\\ItemText-"..material.."-TopRight");
|
||||
_G[frame:GetName().."MaterialBotLeft"]:SetTexture("Interface\\ItemTextFrame\\ItemText-"..material.."-BotLeft");
|
||||
_G[frame:GetName().."MaterialBotRight"]:SetTexture("Interface\\ItemTextFrame\\ItemText-"..material.."-BotRight");
|
||||
end
|
||||
end
|
||||
|
||||
function QuestFrame_GetMaterial()
|
||||
local material = GetQuestBackgroundMaterial();
|
||||
if ( not material ) then
|
||||
material = "Parchment";
|
||||
end
|
||||
return material;
|
||||
end
|
||||
|
||||
function QuestFrame_SetTitleTextColor(fontString, material)
|
||||
local temp, materialTitleTextColor = GetMaterialTextColors(material);
|
||||
fontString:SetTextColor(materialTitleTextColor[1], materialTitleTextColor[2], materialTitleTextColor[3]);
|
||||
end
|
||||
|
||||
function QuestFrame_SetTextColor(fontString, material)
|
||||
local materialTextColor = GetMaterialTextColors(material);
|
||||
fontString:SetTextColor(materialTextColor[1], materialTextColor[2], materialTextColor[3]);
|
||||
end
|
||||
Reference in New Issue
Block a user