режим предателя + UI референсы и DragonUI
This commit is contained in:
@@ -0,0 +1,230 @@
|
||||
|
||||
MAX_RAID_MEMBERS = 40;
|
||||
NUM_RAID_GROUPS = 8;
|
||||
MEMBERS_PER_RAID_GROUP = 5;
|
||||
MAX_RAID_INFOS = 20;
|
||||
|
||||
function RaidFrame_OnLoad(self)
|
||||
self:RegisterEvent("PLAYER_LOGIN");
|
||||
self:RegisterEvent("RAID_ROSTER_UPDATE");
|
||||
self:RegisterEvent("UPDATE_INSTANCE_INFO");
|
||||
self:RegisterEvent("PARTY_MEMBERS_CHANGED");
|
||||
self:RegisterEvent("PARTY_LEADER_CHANGED");
|
||||
self:RegisterEvent("VOICE_STATUS_UPDATE");
|
||||
self:RegisterEvent("PLAYER_ENTERING_WORLD");
|
||||
self:RegisterEvent("READY_CHECK");
|
||||
self:RegisterEvent("READY_CHECK_CONFIRM");
|
||||
self:RegisterEvent("READY_CHECK_FINISHED");
|
||||
self:RegisterEvent("PARTY_LFG_RESTRICTED");
|
||||
|
||||
-- Update party frame visibility
|
||||
RaidOptionsFrame_UpdatePartyFrames();
|
||||
RaidFrame_Update();
|
||||
|
||||
RaidFrame.hasRaidInfo = nil;
|
||||
end
|
||||
|
||||
function RaidFrame_OnEvent(self, event, ...)
|
||||
if ( event == "PLAYER_ENTERING_WORLD" ) then
|
||||
RequestRaidInfo();
|
||||
elseif ( event == "PLAYER_LOGIN" ) then
|
||||
if ( GetNumRaidMembers() > 0 ) then
|
||||
RaidFrame_LoadUI();
|
||||
RaidFrame_Update();
|
||||
end
|
||||
elseif ( event == "RAID_ROSTER_UPDATE" ) then
|
||||
RaidFrame_LoadUI();
|
||||
RaidFrame_Update();
|
||||
RaidPullout_RenewFrames();
|
||||
elseif ( event == "READY_CHECK" or
|
||||
event == "READY_CHECK_CONFIRM" ) then
|
||||
if ( RaidFrame:IsShown() and RaidGroupFrame_Update ) then
|
||||
RaidGroupFrame_Update();
|
||||
end
|
||||
elseif ( event == "READY_CHECK_FINISHED" ) then
|
||||
if ( RaidFrame:IsShown() and RaidGroupFrame_ReadyCheckFinished ) then
|
||||
RaidGroupFrame_ReadyCheckFinished();
|
||||
end
|
||||
elseif ( event == "UPDATE_INSTANCE_INFO" ) then
|
||||
if ( not RaidFrame.hasRaidInfo ) then
|
||||
-- Set flag
|
||||
RaidFrame.hasRaidInfo = 1;
|
||||
return;
|
||||
end
|
||||
if ( GetNumSavedInstances() > 0 ) then
|
||||
RaidFrameRaidInfoButton:Enable();
|
||||
else
|
||||
RaidFrameRaidInfoButton:Disable();
|
||||
end
|
||||
RaidInfoFrame_Update(true);
|
||||
elseif ( event == "PARTY_MEMBERS_CHANGED" or event == "PARTY_LEADER_CHANGED" or
|
||||
event == "VOICE_STATUS_UPDATE" or event == "PARTY_LFG_RESTRICTED" ) then
|
||||
RaidFrame_Update();
|
||||
end
|
||||
end
|
||||
|
||||
function RaidFrame_Update()
|
||||
-- If not in a raid hide all the UI and just display raid explanation text
|
||||
if ( GetNumRaidMembers() == 0 ) then
|
||||
RaidFrameConvertToRaidButton:Show();
|
||||
if ( GetPartyMember(1) and IsPartyLeader() and UnitLevel("player") >= 10 and not HasLFGRestrictions() ) then
|
||||
RaidFrameConvertToRaidButton:Enable();
|
||||
else
|
||||
RaidFrameConvertToRaidButton:Disable();
|
||||
end
|
||||
RaidFrameNotInRaid:Show();
|
||||
else
|
||||
RaidFrameConvertToRaidButton:Hide();
|
||||
RaidFrameNotInRaid:Hide();
|
||||
end
|
||||
|
||||
if ( RaidGroupFrame_Update ) then
|
||||
RaidGroupFrame_Update();
|
||||
end
|
||||
end
|
||||
|
||||
-- Function for raid options
|
||||
function RaidOptionsFrame_UpdatePartyFrames()
|
||||
if ( HIDE_PARTY_INTERFACE == "1" and GetNumRaidMembers() > 0) then
|
||||
HidePartyFrame();
|
||||
else
|
||||
HidePartyFrame();
|
||||
ShowPartyFrame();
|
||||
end
|
||||
UpdatePartyMemberBackground();
|
||||
end
|
||||
|
||||
-- Populates Raid Info Data
|
||||
function RaidInfoFrame_Update(scrollToSelected)
|
||||
RaidInfoFrame_UpdateSelectedIndex();
|
||||
|
||||
local scrollFrame = RaidInfoScrollFrame;
|
||||
local savedInstances = GetNumSavedInstances();
|
||||
local instanceName, instanceID, instanceReset, instanceDifficulty, locked, extended, instanceIDMostSig, isRaid, maxPlayers, difficultyName;
|
||||
local frameName, frameNameText, frameID, frameReset, width;
|
||||
local offset = HybridScrollFrame_GetOffset(scrollFrame);
|
||||
local buttons = scrollFrame.buttons;
|
||||
local numButtons = #buttons;
|
||||
local buttonHeight = buttons[1]:GetHeight();
|
||||
|
||||
if ( scrollToSelected == true and RaidInfoFrame.selectedIndex ) then --Using == true in case the HybridScrollFrame .update is changed to pass in the parent.
|
||||
local button = buttons[RaidInfoFrame.selectedIndex - offset]
|
||||
if ( not button or (button:GetTop() > scrollFrame:GetTop()) or (button:GetBottom() < scrollFrame:GetBottom()) ) then
|
||||
local scrollFrame = RaidInfoScrollFrame;
|
||||
local buttonHeight = scrollFrame.buttons[1]:GetHeight();
|
||||
local scrollValue = min(((RaidInfoFrame.selectedIndex - 1) * buttonHeight), scrollFrame.range)
|
||||
if ( scrollValue ~= scrollFrame.scrollBar:GetValue() ) then
|
||||
scrollFrame.scrollBar:SetValue(scrollValue);
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
offset = HybridScrollFrame_GetOffset(scrollFrame); --May have changed in the previous section to move selected parts into view.
|
||||
|
||||
local mouseIsOverScrollFrame = scrollFrame:IsVisible() and scrollFrame:IsMouseOver();
|
||||
|
||||
for i=1, numButtons do
|
||||
local frame = buttons[i];
|
||||
local index = i + offset;
|
||||
|
||||
if ( index <= savedInstances) then
|
||||
instanceName, instanceID, instanceReset, instanceDifficulty, locked, extended, instanceIDMostSig, isRaid, maxPlayers, difficultyName = GetSavedInstanceInfo(index);
|
||||
|
||||
frame.instanceID = instanceID;
|
||||
frame.longInstanceID = string.format("%x%x", instanceIDMostSig, instanceID);
|
||||
frame:SetID(index);
|
||||
|
||||
if ( RaidInfoFrame.selectedRaidID == frame.longInstanceID ) then
|
||||
frame:LockHighlight();
|
||||
else
|
||||
frame:UnlockHighlight();
|
||||
end
|
||||
|
||||
frame.difficulty:SetText(difficultyName);
|
||||
|
||||
if ( extended or locked ) then
|
||||
frame.reset:SetText(SecondsToTime(instanceReset, true, nil, 3));
|
||||
frame.name:SetText(instanceName);
|
||||
else
|
||||
frame.reset:SetFormattedText("|cff808080%s|r", RAID_INSTANCE_EXPIRES_EXPIRED);
|
||||
frame.name:SetFormattedText("|cff808080%s|r", instanceName);
|
||||
end
|
||||
|
||||
if ( extended ) then
|
||||
frame.extended:Show();
|
||||
else
|
||||
frame.extended:Hide();
|
||||
end
|
||||
|
||||
frame:Show();
|
||||
|
||||
if ( mouseIsOverScrollFrame and frame:IsMouseOver() ) then
|
||||
RaidInfoInstance_OnEnter(frame);
|
||||
end
|
||||
else
|
||||
frame:Hide();
|
||||
end
|
||||
end
|
||||
HybridScrollFrame_Update(scrollFrame, savedInstances * buttonHeight, scrollFrame:GetHeight());
|
||||
end
|
||||
|
||||
function RaidInfoScrollFrame_OnLoad(self)
|
||||
HybridScrollFrame_OnLoad(self);
|
||||
self.update = RaidInfoFrame_Update;
|
||||
HybridScrollFrame_CreateButtons(self, "RaidInfoInstanceTemplate");
|
||||
end
|
||||
|
||||
--Makes the button look likes it's being pressed
|
||||
function RaidInfoInstance_OnMouseDown(self)
|
||||
self.name:SetPoint("TOPLEFT", 7, -12);
|
||||
self.reset:SetPoint("TOPRIGHT", 2, -13);
|
||||
end
|
||||
|
||||
function RaidInfoInstance_OnMouseUp(self)
|
||||
self.name:SetPoint("TOPLEFT", 5, -10);
|
||||
self.reset:SetPoint("TOPRIGHT", 0, -11);
|
||||
end
|
||||
|
||||
function RaidInfoInstance_OnClick(self)
|
||||
RaidInfoFrame.selectedRaidID = self.longInstanceID;
|
||||
RaidInfoFrame_Update();
|
||||
end
|
||||
|
||||
function RaidInfoInstance_OnEnter(self)
|
||||
GameTooltip:SetOwner(self, "ANCHOR_RIGHT");
|
||||
GameTooltip:SetText(self.name:GetText());
|
||||
GameTooltip:AddLine(self.difficulty:GetText(), HIGHLIGHT_FONT_COLOR.r, HIGHLIGHT_FONT_COLOR.g, HIGHLIGHT_FONT_COLOR.b);
|
||||
GameTooltip:AddLine(format(INSTANCE_ID, self.instanceID), HIGHLIGHT_FONT_COLOR.r, HIGHLIGHT_FONT_COLOR.g, HIGHLIGHT_FONT_COLOR.b);
|
||||
GameTooltip:Show();
|
||||
end
|
||||
|
||||
function RaidInfoFrame_UpdateSelectedIndex()
|
||||
local savedInstances = GetNumSavedInstances();
|
||||
for index=1, savedInstances do
|
||||
local instanceName, instanceID, instanceReset, instanceDifficulty, locked, extended, instanceIDMostSig = GetSavedInstanceInfo(index);
|
||||
if ( format("%x%x", instanceIDMostSig, instanceID) == RaidInfoFrame.selectedRaidID ) then
|
||||
RaidInfoFrame.selectedIndex = index;
|
||||
RaidInfoExtendButton:Enable();
|
||||
if ( extended ) then
|
||||
RaidInfoExtendButton.doExtend = false;
|
||||
RaidInfoExtendButton:SetText(UNEXTEND_RAID_LOCK);
|
||||
else
|
||||
RaidInfoExtendButton.doExtend = true;
|
||||
if ( locked ) then
|
||||
RaidInfoExtendButton:SetText(EXTEND_RAID_LOCK);
|
||||
else
|
||||
RaidInfoExtendButton:SetText(REACTIVATE_RAID_LOCK);
|
||||
end
|
||||
end
|
||||
return;
|
||||
end
|
||||
end
|
||||
RaidInfoFrame.selectedIndex = nil;
|
||||
RaidInfoExtendButton:Disable();
|
||||
end
|
||||
|
||||
function RaidInfoExtendButton_OnClick(self)
|
||||
SetSavedInstanceExtend(RaidInfoFrame.selectedIndex, self.doExtend);
|
||||
RequestRaidInfo();
|
||||
RaidInfoFrame_Update();
|
||||
end
|
||||
Reference in New Issue
Block a user