Merge branch 'master' of github.com:sindoring/moonwell-client into taxis
This commit is contained in:
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -1,417 +0,0 @@
|
||||
-- ============================================================================
|
||||
-- MoonWell
|
||||
-- ============================================================================
|
||||
ADDON_BUTTON_HEIGHT = 16;
|
||||
MAX_ADDONS_DISPLAYED = 19;
|
||||
|
||||
function UpdateAddonButton()
|
||||
if ( GetNumAddOns() > 0 ) then
|
||||
-- Check to see if any of them are out of date and not disabled
|
||||
if ( IsAddonVersionCheckEnabled() and AddonList_HasOutOfDate() and not HasShownAddonOutOfDateDialog ) then
|
||||
AddonDialog_Show("ADDONS_OUT_OF_DATE");
|
||||
HasShownAddonOutOfDateDialog = true;
|
||||
end
|
||||
if ( AddonList_HasNewVersion() ) then
|
||||
CharacterSelectAddonsButtonGlow:Show();
|
||||
else
|
||||
CharacterSelectAddonsButtonGlow:Hide();
|
||||
end
|
||||
CharacterSelectAddonsButton:Show();
|
||||
else
|
||||
CharacterSelectAddonsButton:Hide();
|
||||
end
|
||||
end
|
||||
|
||||
function AddonList_OnLoad(self)
|
||||
-- Asegurarse de que offset se inicialice correctamente
|
||||
if not self.offset then
|
||||
self.offset = 0
|
||||
end
|
||||
end
|
||||
|
||||
function AddonList_Update()
|
||||
local numEntrys = GetNumAddOns();
|
||||
local name, title, notes, url, loadable, reason, security, newVersion;
|
||||
local addonIndex;
|
||||
local entry, checkbox, string, status, urlButton, securityIcon, versionButton;
|
||||
|
||||
-- Verificar que numEntrys sea un número válido
|
||||
if not numEntrys then
|
||||
numEntrys = 0
|
||||
end
|
||||
|
||||
-- Get the character from the current list (nil is all characters)
|
||||
local character = GlueDropDownMenu_GetSelectedValue(AddonCharacterDropDown);
|
||||
if ( character == ALL ) then
|
||||
character = nil;
|
||||
end
|
||||
local enabled, checkboxState;
|
||||
|
||||
for i=1, MAX_ADDONS_DISPLAYED do
|
||||
addonIndex = AddonList.offset + i;
|
||||
|
||||
-- Verificar que addonIndex sea válido
|
||||
if not addonIndex then
|
||||
addonIndex = 0
|
||||
end
|
||||
|
||||
entry = _G["AddonListEntry"..i];
|
||||
if ( addonIndex > numEntrys ) then
|
||||
entry:Hide();
|
||||
else
|
||||
name, title, notes, url, loadable, reason, security, newVersion = GetAddOnInfo(addonIndex);
|
||||
|
||||
-- Verificar que GetAddOnEnableState no retorne nil
|
||||
checkboxState = GetAddOnEnableState(character, addonIndex);
|
||||
if not checkboxState then
|
||||
checkboxState = 0
|
||||
end
|
||||
enabled = (checkboxState > 0);
|
||||
-- GetAddOnEnableState() returns 0, 1, 2 (disabled, enabled for some, enabled for all)
|
||||
checkboxState = GetAddOnEnableState(character, addonIndex);
|
||||
enabled = (checkboxState > 0);
|
||||
|
||||
checkbox = _G["AddonListEntry"..i.."Enabled"];
|
||||
-- If some are enabled then set the checkbox to be gray
|
||||
TriStateCheckbox_SetState(checkboxState, checkbox);
|
||||
if ( checkboxState == 1 ) then
|
||||
checkbox.tooltip = ENABLED_FOR_SOME;
|
||||
else
|
||||
checkbox.tooltip = nil;
|
||||
end
|
||||
|
||||
string = _G["AddonListEntry"..i.."Title"];
|
||||
if ( loadable or ( enabled and (reason == "DEP_DEMAND_LOADED" or reason == "DEMAND_LOADED") ) ) then
|
||||
string:SetTextColor(1.0, 0.78, 0.0);
|
||||
elseif ( enabled and reason ~= "DEP_DISABLED" ) then
|
||||
string:SetTextColor(1.0, 0.1, 0.1);
|
||||
else
|
||||
string:SetTextColor(0.5, 0.5, 0.5);
|
||||
end
|
||||
if ( title ) then
|
||||
string:SetText(title);
|
||||
else
|
||||
string:SetText(name);
|
||||
end
|
||||
urlButton = _G["AddonListEntry"..i.."URL"];
|
||||
versionButton = _G["AddonListEntry"..i.."Update"];
|
||||
if ( url ) then
|
||||
if ( newVersion ) then
|
||||
versionButton.tooltip = ADDON_UPDATE_AVAILABLE..CLICK_TO_LAUNCH_ADDON_URL..url;
|
||||
versionButton.url = url;
|
||||
versionButton:Show();
|
||||
urlButton:Hide();
|
||||
else
|
||||
versionButton:Hide();
|
||||
urlButton.tooltip = CLICK_TO_LAUNCH_ADDON_URL..url;
|
||||
urlButton.url = url;
|
||||
urlButton:Show();
|
||||
end
|
||||
|
||||
else
|
||||
versionButton:Hide();
|
||||
urlButton:Hide();
|
||||
end
|
||||
securityIcon = _G["AddonListEntry"..i.."SecurityIcon"];
|
||||
if ( security == "SECURE" ) then
|
||||
AddonList_SetSecurityIcon(securityIcon, 1);
|
||||
elseif ( security == "INSECURE" ) then
|
||||
AddonList_SetSecurityIcon(securityIcon, 2);
|
||||
elseif ( security == "BANNED" ) then
|
||||
AddonList_SetSecurityIcon(securityIcon, 3);
|
||||
end
|
||||
_G["AddonListEntry"..i.."Security"].tooltip = _G["ADDON_"..security];
|
||||
string = _G["AddonListEntry"..i.."Status"];
|
||||
if ( reason ) then
|
||||
string:SetText(_G["ADDON_"..reason]);
|
||||
else
|
||||
string:SetText("");
|
||||
end
|
||||
|
||||
entry:SetID(addonIndex);
|
||||
entry:Show();
|
||||
end
|
||||
end
|
||||
|
||||
-- ScrollFrame stuff
|
||||
GlueScrollFrame_Update(AddonListScrollFrame, numEntrys, MAX_ADDONS_DISPLAYED, ADDON_BUTTON_HEIGHT);
|
||||
end
|
||||
|
||||
function AddonTooltip_BuildDeps(...)
|
||||
local deps = "";
|
||||
for i=1, select("#", ...) do
|
||||
if ( i == 1 ) then
|
||||
deps = ADDON_DEPENDENCIES .. select(i, ...);
|
||||
else
|
||||
deps = deps..", "..select(i, ...);
|
||||
end
|
||||
end
|
||||
return deps;
|
||||
end
|
||||
|
||||
function AddonTooltip_Update(owner)
|
||||
AddonTooltip.owner = owner;
|
||||
local name, title, notes,_,_,_, security = GetAddOnInfo(owner:GetID());
|
||||
if ( security == "BANNED" ) then
|
||||
AddonTooltipTitle:SetText(ADDON_BANNED_TOOLTIP);
|
||||
AddonTooltipNotes:SetText("");
|
||||
AddonTooltipDeps:SetText("");
|
||||
else
|
||||
if ( title ) then
|
||||
AddonTooltipTitle:SetText(title);
|
||||
else
|
||||
AddonTooltipTitle:SetText(name);
|
||||
end
|
||||
AddonTooltipNotes:SetText(notes);
|
||||
AddonTooltipDeps:SetText(AddonTooltip_BuildDeps(GetAddOnDependencies(owner:GetID())));
|
||||
end
|
||||
|
||||
local titleHeight = AddonTooltipTitle:GetHeight();
|
||||
local notesHeight = AddonTooltipNotes:GetHeight();
|
||||
local depsHeight = AddonTooltipDeps:GetHeight();
|
||||
AddonTooltip:SetHeight(10+titleHeight+2+notesHeight+2+depsHeight+10);
|
||||
end
|
||||
|
||||
function AddonList_OnKeyDown(key)
|
||||
if ( key == "ESCAPE" ) then
|
||||
AddonList_OnCancel();
|
||||
elseif ( key == "ENTER" ) then
|
||||
AddonList_OnOk();
|
||||
elseif ( key == "PRINTSCREEN" ) then
|
||||
Screenshot();
|
||||
end
|
||||
end
|
||||
|
||||
function AddonList_Enable(index, enabled)
|
||||
local character = GlueDropDownMenu_GetSelectedValue(AddonCharacterDropDown);
|
||||
if ( character == ALL ) then
|
||||
character = nil;
|
||||
end
|
||||
if ( enabled ) then
|
||||
EnableAddOn(character, index);
|
||||
else
|
||||
DisableAddOn(character, index);
|
||||
end
|
||||
AddonList_Update();
|
||||
end
|
||||
|
||||
function AddonList_OnOk()
|
||||
PlaySound("gsLoginChangeRealmOK");
|
||||
SaveAddOns();
|
||||
AddonList:Hide();
|
||||
end
|
||||
|
||||
function AddonList_OnCancel()
|
||||
PlaySound("gsLoginChangeRealmCancel");
|
||||
ResetAddOns();
|
||||
AddonList:Hide();
|
||||
end
|
||||
|
||||
function AddonListScrollFrame_OnVerticalScroll(self, offset)
|
||||
local scrollbar = _G[self:GetName().."ScrollBar"];
|
||||
|
||||
-- Verificar que offset no sea nil
|
||||
if not offset then
|
||||
offset = 0
|
||||
end
|
||||
|
||||
scrollbar:SetValue(offset);
|
||||
AddonList.offset = floor((offset / ADDON_BUTTON_HEIGHT) + 0.5);
|
||||
|
||||
-- Verificar que AddonList.offset no sea nil
|
||||
if not AddonList.offset then
|
||||
AddonList.offset = 0
|
||||
end
|
||||
|
||||
AddonList_Update();
|
||||
if ( AddonTooltip:IsShown() ) then
|
||||
AddonTooltip_Update(AddonTooltip.owner);
|
||||
end
|
||||
end
|
||||
|
||||
function AddonList_OnShow()
|
||||
AddonList_Update();
|
||||
end
|
||||
|
||||
function AddonList_HasOutOfDate()
|
||||
local hasOutOfDate = false;
|
||||
for i=1, GetNumAddOns() do
|
||||
local name, title, notes, url, loadable, reason = GetAddOnInfo(i);
|
||||
if ( enabled and not loadable and reason == "INTERFACE_VERSION" ) then
|
||||
hasOutOfDate = true;
|
||||
break;
|
||||
end
|
||||
end
|
||||
return hasOutOfDate;
|
||||
end
|
||||
|
||||
function AddonList_SetSecurityIcon(texture, index)
|
||||
local width = 64;
|
||||
local height = 16;
|
||||
local iconWidth = 16;
|
||||
local increment = iconWidth/width;
|
||||
local left = (index - 1) * increment;
|
||||
local right = index * increment;
|
||||
texture:SetTexCoord( left, right, 0, 1.0);
|
||||
end
|
||||
|
||||
function AddonList_DisableOutOfDate()
|
||||
for i=1, GetNumAddOns() do
|
||||
local name, title, notes, url, loadable, reason = GetAddOnInfo(i);
|
||||
if ( enabled and not loadable and reason == "INTERFACE_VERSION" ) then
|
||||
DisableAddOn(i);
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function AddonList_HasNewVersion()
|
||||
local hasNewVersion = false;
|
||||
for i=1, GetNumAddOns() do
|
||||
local name, title, notes, url, loadable, reason, security, newVersion = GetAddOnInfo(i);
|
||||
if ( newVersion ) then
|
||||
hasNewVersion = true;
|
||||
break;
|
||||
end
|
||||
end
|
||||
return hasNewVersion;
|
||||
end
|
||||
|
||||
AddonDialogTypes = { };
|
||||
|
||||
AddonDialogTypes["ADDONS_OUT_OF_DATE"] = {
|
||||
text = ADDONS_OUT_OF_DATE,
|
||||
button1 = DISABLE_ADDONS,
|
||||
button2 = LOAD_ADDONS,
|
||||
OnAccept = function()
|
||||
AddonDialog_Show("CONFIRM_DISABLE_ADDONS");
|
||||
end,
|
||||
OnCancel = function()
|
||||
AddonDialog_Show("CONFIRM_LOAD_ADDONS");
|
||||
end,
|
||||
}
|
||||
|
||||
AddonDialogTypes["CONFIRM_LOAD_ADDONS"] = {
|
||||
text = CONFIRM_LOAD_ADDONS,
|
||||
button1 = OKAY,
|
||||
button2 = CANCEL,
|
||||
OnAccept = function()
|
||||
SetAddonVersionCheck(0);
|
||||
end,
|
||||
OnCancel = function()
|
||||
AddonDialog_Show("ADDONS_OUT_OF_DATE");
|
||||
end,
|
||||
}
|
||||
|
||||
AddonDialogTypes["CONFIRM_DISABLE_ADDONS"] = {
|
||||
text = CONFIRM_DISABLE_ADDONS,
|
||||
button1 = OKAY,
|
||||
button2 = CANCEL,
|
||||
OnAccept = function()
|
||||
AddonList_DisableOutOfDate();
|
||||
end,
|
||||
OnCancel = function()
|
||||
AddonDialog_Show("ADDONS_OUT_OF_DATE");
|
||||
end,
|
||||
}
|
||||
|
||||
AddonDialogTypes["CONFIRM_LAUNCH_ADDON_URL"] = {
|
||||
text = CONFIRM_LAUNCH_ADDON_URL,
|
||||
button1 = OKAY,
|
||||
button2 = CANCEL,
|
||||
OnAccept = function()
|
||||
LaunchAddOnURL(AddonList.selectedID);
|
||||
end
|
||||
}
|
||||
|
||||
function AddonDialog_Show(which, arg1)
|
||||
-- Set the text of the dialog
|
||||
if ( arg1 ) then
|
||||
AddonDialogText:SetFormattedText(AddonDialogTypes[which].text, arg1);
|
||||
else
|
||||
AddonDialogText:SetText(AddonDialogTypes[which].text);
|
||||
end
|
||||
|
||||
-- Set the buttons of the dialog
|
||||
if ( AddonDialogTypes[which].button2 ) then
|
||||
AddonDialogButton1:ClearAllPoints();
|
||||
AddonDialogButton1:SetPoint("BOTTOMRIGHT", "AddonDialogBackground", "BOTTOM", -6, 16);
|
||||
AddonDialogButton2:ClearAllPoints();
|
||||
AddonDialogButton2:SetPoint("LEFT", "AddonDialogButton1", "RIGHT", 13, 0);
|
||||
AddonDialogButton2:SetText(AddonDialogTypes[which].button2);
|
||||
AddonDialogButton2:Show();
|
||||
else
|
||||
AddonDialogButton1:ClearAllPoints();
|
||||
AddonDialogButton1:SetPoint("BOTTOM", "AddonDialogBackground", "BOTTOM", 0, 16);
|
||||
AddonDialogButton2:Hide();
|
||||
end
|
||||
|
||||
AddonDialogButton1:SetText(AddonDialogTypes[which].button1);
|
||||
|
||||
-- Set the miscellaneous variables for the dialog
|
||||
AddonDialog.which = which;
|
||||
|
||||
-- Finally size and show the dialog
|
||||
AddonDialogBackground:SetHeight(16 + AddonDialogText:GetHeight() + 8 + AddonDialogButton1:GetHeight() + 16);
|
||||
AddonDialog:Show();
|
||||
end
|
||||
|
||||
function AddonDialog_OnClick(index)
|
||||
AddonDialog:Hide();
|
||||
if ( index == 1 ) then
|
||||
local OnAccept = AddonDialogTypes[AddonDialog.which].OnAccept;
|
||||
if ( OnAccept ) then
|
||||
OnAccept();
|
||||
end
|
||||
else
|
||||
local OnCancel = AddonDialogTypes[AddonDialog.which].OnCancel;
|
||||
if ( OnCancel ) then
|
||||
OnCancel();
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function AddonDialog_OnKeyDown(key)
|
||||
if ( key == "PRINTSCREEN" ) then
|
||||
Screenshot();
|
||||
return;
|
||||
end
|
||||
|
||||
if ( key == "ESCAPE" ) then
|
||||
if ( AddonDialogButton2:IsShown() ) then
|
||||
AddonDialogButton2:Click();
|
||||
else
|
||||
AddonDialogButton1:Click();
|
||||
end
|
||||
elseif (key == "ENTER" ) then
|
||||
AddonDialogButton1:Click();
|
||||
end
|
||||
end
|
||||
|
||||
function AddonListCharacterDropDown_OnClick(self)
|
||||
GlueDropDownMenu_SetSelectedValue(AddonCharacterDropDown, self.value);
|
||||
AddonList_Update();
|
||||
end
|
||||
|
||||
function AddonListCharacterDropDown_Initialize()
|
||||
local selectedValue = GlueDropDownMenu_GetSelectedValue(AddonCharacterDropDown);
|
||||
local info = GlueDropDownMenu_CreateInfo();
|
||||
info.text = ALL;
|
||||
info.value = ALL;
|
||||
info.func = AddonListCharacterDropDown_OnClick;
|
||||
if ( not selectedValue ) then
|
||||
info.checked = 1;
|
||||
end
|
||||
GlueDropDownMenu_AddButton(info);
|
||||
|
||||
for i=1, GetNumCharacters() do
|
||||
info.text = GetCharacterInfo(i);
|
||||
info.value = GetCharacterInfo(i);
|
||||
info.func = AddonListCharacterDropDown_OnClick;
|
||||
if ( selectedValue == info.value ) then
|
||||
info.checked = 1;
|
||||
else
|
||||
info.checked = nil;
|
||||
end
|
||||
GlueDropDownMenu_AddButton(info);
|
||||
end
|
||||
end
|
||||
@@ -1,831 +0,0 @@
|
||||
<!-- MoonWell -->
|
||||
<Ui xmlns="http://www.blizzard.com/wow/ui/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.blizzard.com/wow/ui/
|
||||
..\FrameXML\UI.xsd">
|
||||
<Script file="AddonList.lua"/>
|
||||
<Button name="AddonListButtonTemplate" virtual="true">
|
||||
<ButtonText>
|
||||
<Anchors>
|
||||
<Anchor point="CENTER">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="2"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</ButtonText>
|
||||
<NormalFont style="GlueFontNormal"/>
|
||||
<HighlightFont style="GlueFontHighlight"/>
|
||||
<NormalTexture inherits="GluePanelButtonUpTexture">
|
||||
<TexCoords left="0.025" right="0.535" top="0" bottom="0.75"/>
|
||||
</NormalTexture>
|
||||
<PushedTexture inherits="GluePanelButtonDownTexture">
|
||||
<TexCoords left="0.025" right="0.535" top="0" bottom="0.75"/>
|
||||
</PushedTexture>
|
||||
<HighlightTexture inherits="GluePanelButtonHighlightTexture">
|
||||
<TexCoords left="0.025" right="0.535" top="0" bottom="0.75"/>
|
||||
</HighlightTexture>
|
||||
</Button>
|
||||
<Button name="AddonListEntryTemplate" virtual="true">
|
||||
<Size>
|
||||
<AbsDimension x="520" y="16"/>
|
||||
</Size>
|
||||
<Layers>
|
||||
<Layer level="BACKGROUND">
|
||||
<FontString name="$parentTitle" inherits="GlueFontNormal" justifyH="LEFT">
|
||||
<Size>
|
||||
<AbsDimension x="220" y="12"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="LEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="42" y="0"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</FontString>
|
||||
<FontString name="$parentStatus" inherits="GlueFontNormalSmall" justifyH="LEFT">
|
||||
<Size>
|
||||
<AbsDimension x="220" y="12"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="LEFT" relativeTo="$parentTitle" relativePoint="RIGHT">
|
||||
<Offset>
|
||||
<AbsDimension x="30" y="0"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</FontString>
|
||||
</Layer>
|
||||
</Layers>
|
||||
<Frames>
|
||||
<Button name="$parentSecurity" hidden="true">
|
||||
<Size>
|
||||
<AbsDimension x="16" y="16"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="RIGHT" relativePoint="LEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="2" y="0"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnEnter>
|
||||
GlueTooltip_SetOwner(self);
|
||||
GlueTooltip_SetText(self.tooltip);
|
||||
</OnEnter>
|
||||
<OnLeave>
|
||||
GlueTooltip:Hide();
|
||||
</OnLeave>
|
||||
</Scripts>
|
||||
<NormalTexture name="$parentIcon" file="Interface\Glues\CharacterSelect\Glues-AddOn-Icons"/>
|
||||
</Button>
|
||||
<CheckButton name="$parentEnabled">
|
||||
<Size>
|
||||
<AbsDimension x="22" y="22"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="LEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="5" y="0"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<HitRectInsets>
|
||||
<AbsInset left="0" right="0" top="0" bottom="8"/>
|
||||
</HitRectInsets>
|
||||
<Scripts>
|
||||
<OnClick>
|
||||
AddonList_Enable(self:GetParent():GetID(), self:GetChecked());
|
||||
</OnClick>
|
||||
<OnEnter>
|
||||
if ( self.tooltip ) then
|
||||
GlueTooltip_SetOwner(self);
|
||||
GlueTooltip_SetText(self.tooltip);
|
||||
end
|
||||
</OnEnter>
|
||||
<OnLeave>
|
||||
GlueTooltip:Hide();
|
||||
</OnLeave>
|
||||
</Scripts>
|
||||
<NormalTexture file="Interface\Buttons\UI-CheckBox-Up"/>
|
||||
<PushedTexture file="Interface\Buttons\UI-CheckBox-Down"/>
|
||||
<HighlightTexture file="Interface\Buttons\UI-CheckBox-Highlight" alphaMode="ADD"/>
|
||||
<CheckedTexture name="$parentCheckedTexture" file="Interface\Buttons\UI-CheckBox-Check"/>
|
||||
<DisabledCheckedTexture file="Interface\Buttons\UI-CheckBox-Check-Disabled"/>
|
||||
</CheckButton>
|
||||
<Button name="$parentURL">
|
||||
<Size>
|
||||
<AbsDimension x="16" y="16"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="LEFT" relativeTo="$parentTitle" relativePoint="RIGHT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="0"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnClick>
|
||||
AddonList.selectedID = AddonList.offset + self:GetID();
|
||||
AddonDialog_Show("CONFIRM_LAUNCH_ADDON_URL", self.url);
|
||||
</OnClick>
|
||||
<OnEnter>
|
||||
GlueTooltip_SetOwner(self);
|
||||
GlueTooltip_SetText(self.tooltip);
|
||||
</OnEnter>
|
||||
<OnLeave>
|
||||
GlueTooltip:Hide();
|
||||
</OnLeave>
|
||||
</Scripts>
|
||||
<NormalTexture name="$parentNormalTexture" file="Interface\Buttons\UI-GuildButton-PublicNote-Up"/>
|
||||
<HighlightTexture name="$parentHighlightTexture" file="Interface\Buttons\UI-GuildButton-PublicNote-Up" alphaMode="ADD"/>
|
||||
</Button>
|
||||
<Button name="$parentUpdate">
|
||||
<Size>
|
||||
<AbsDimension x="16" y="16"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="RIGHT" relativeTo="$parentURL" relativePoint="RIGHT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="0"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnClick>
|
||||
AddonList.selectedID = AddonList.offset + self:GetParent():GetID();
|
||||
AddonDialog_Show("CONFIRM_LAUNCH_ADDON_URL", self.url);
|
||||
</OnClick>
|
||||
<OnEnter>
|
||||
GlueTooltip_SetOwner(self);
|
||||
GlueTooltip_SetText(self.tooltip);
|
||||
</OnEnter>
|
||||
<OnLeave>
|
||||
GlueTooltip:Hide();
|
||||
</OnLeave>
|
||||
</Scripts>
|
||||
<NormalTexture name="$parentIcon" file="Interface\Glues\CharacterSelect\Glues-AddOn-Icons"/>
|
||||
<HighlightTexture name="$parentIconHighlight" file="Interface\Glues\CharacterSelect\Glues-AddOn-Icons" alphaMode="ADD"/>
|
||||
</Button>
|
||||
</Frames>
|
||||
<Scripts>
|
||||
<OnLoad>
|
||||
AddonList_SetSecurityIcon(_G[self:GetName().."UpdateIcon"], 4);
|
||||
AddonList_SetSecurityIcon(_G[self:GetName().."UpdateIconHighlight"], 4);
|
||||
</OnLoad>
|
||||
<OnEnter>
|
||||
AddonTooltip:SetPoint("TOPRIGHT", self, "TOPLEFT", -14, 0);
|
||||
AddonTooltip_Update(self);
|
||||
AddonTooltip:Show();
|
||||
</OnEnter>
|
||||
<OnLeave>
|
||||
AddonTooltip:Hide();
|
||||
</OnLeave>
|
||||
</Scripts>
|
||||
</Button>
|
||||
<Frame name="AddonList" toplevel="true" parent="GlueParent" setAllPoints="true" enableMouse="true" enableKeyboard="true" frameStrata="DIALOG" hidden="true">
|
||||
<Layers>
|
||||
<Layer level="BACKGROUND">
|
||||
<Texture setAllPoints="true">
|
||||
<Color a="0.75" r="0" g="0" b="0"/>
|
||||
</Texture>
|
||||
</Layer>
|
||||
</Layers>
|
||||
<Frames>
|
||||
<Frame name="AddonListBackground">
|
||||
<Size>
|
||||
<AbsDimension x="640" y="512"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="CENTER">
|
||||
<Offset>
|
||||
<AbsDimension x="24" y="0"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<HitRectInsets>
|
||||
<AbsInset left="0" right="44" top="0" bottom="13"/>
|
||||
</HitRectInsets>
|
||||
<Backdrop bgFile="Interface\Tooltips\UI-Tooltip-Background" edgeFile="Interface\tooltips\ui-tooltip-border-maw" tile="true">
|
||||
<BackgroundInsets left="4" right="4" top="4" bottom="4"/>
|
||||
<TileSize val="16"/>
|
||||
<EdgeSize val="16"/>
|
||||
<Color r="0" g="0" b="0" a="1"/>
|
||||
</Backdrop>
|
||||
<Layers>
|
||||
<Layer level="ARTWORK">
|
||||
<Texture name="AddonListHeader" file="Interface\DialogFrame\UI-DialogBox-Header" hidden="true">
|
||||
<Size>
|
||||
<AbsDimension x="256" y="64"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOP">
|
||||
<Offset>
|
||||
<AbsDimension x="-22" y="12"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</Texture>
|
||||
<FontString inherits="GlueFontNormalSmall" text="ADDON_LIST">
|
||||
<Anchors>
|
||||
<Anchor point="TOP">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-20"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</FontString>
|
||||
</Layer>
|
||||
</Layers>
|
||||
<Frames>
|
||||
<Frame name="AddonCharacterDropDown" inherits="GlueDropDownMenuTemplate">
|
||||
<Size x="150" y="24"/>
|
||||
<Backdrop bgFile="Interface\Tooltips\UI-Tooltip-Background"
|
||||
edgeFile="Interface\Tooltips\ui-tooltip-border-mawBlack"
|
||||
tile="true">
|
||||
<EdgeSize val="12"/>
|
||||
<BackgroundInsets left="3" right="3" top="3" bottom="3"/>
|
||||
<Color r="0" g="0" b="0" a="1"/>
|
||||
</Backdrop>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="30" y="-38"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Layers>
|
||||
<Layer level="OVERLAY">
|
||||
<FontString inherits="GlueFontNormalSmall" text="CONFIGURE_MODS_FOR">
|
||||
<Anchors>
|
||||
<Anchor point="LEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="-4" y="25"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</FontString>
|
||||
</Layer>
|
||||
</Layers>
|
||||
<Scripts>
|
||||
<OnLoad>
|
||||
GlueDropDownMenu_Initialize(self, AddonListCharacterDropDown_Initialize);
|
||||
GlueDropDownMenu_SetSelectedValue(self, ALL);
|
||||
|
||||
local btn = _G[self:GetName().."Button"];
|
||||
btn:ClearAllPoints();
|
||||
btn:SetPoint("RIGHT", self, "RIGHT", -40, 0);
|
||||
btn:SetSize(14, 14);
|
||||
btn:SetNormalTexture("Interface\\ChatFrame\\UI-ChatIcon-ScrollDown-Up");
|
||||
|
||||
local text = _G[self:GetName().."Text"];
|
||||
text:ClearAllPoints();
|
||||
text:SetPoint("LEFT", self, "LEFT", 8, 1);
|
||||
text:SetPoint("RIGHT", btn, "LEFT", -15, -2);
|
||||
|
||||
_G[self:GetName().."Left"]:Hide();
|
||||
_G[self:GetName().."Middle"]:Hide();
|
||||
_G[self:GetName().."Right"]:Hide();
|
||||
</OnLoad>
|
||||
</Scripts>
|
||||
</Frame>
|
||||
<Button name="AddonListCloseButton" inherits="GlueCloseButton">
|
||||
<Anchors>
|
||||
<Anchor point="TOPRIGHT">
|
||||
<Offset>
|
||||
<AbsDimension x="-15" y="-15"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnClick>
|
||||
AddonList_OnCancel();
|
||||
</OnClick>
|
||||
</Scripts>
|
||||
</Button>
|
||||
<CheckButton name="AddonListForceLoad">
|
||||
<Size>
|
||||
<AbsDimension x="22" y="22"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOP">
|
||||
<Offset>
|
||||
<AbsDimension x="50" y="-42"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Layers>
|
||||
<Layer level="ARTWORK">
|
||||
<FontString inherits="GlueFontNormalSmall" text="ADDON_FORCE_LOAD">
|
||||
<Anchors>
|
||||
<Anchor point="LEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="36" y="0"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</FontString>
|
||||
</Layer>
|
||||
</Layers>
|
||||
<Scripts>
|
||||
<OnShow>
|
||||
if ( IsAddonVersionCheckEnabled() ) then
|
||||
self:SetChecked(0);
|
||||
else
|
||||
self:SetChecked(1);
|
||||
end
|
||||
</OnShow>
|
||||
<OnClick>
|
||||
if ( self:GetChecked() ) then
|
||||
SetAddonVersionCheck(0);
|
||||
else
|
||||
SetAddonVersionCheck(1);
|
||||
end
|
||||
AddonList_Update();
|
||||
</OnClick>
|
||||
</Scripts>
|
||||
<NormalTexture file="Interface\Buttons\UI-CheckBox-Up"/>
|
||||
<PushedTexture file="Interface\Buttons\UI-CheckBox-Down"/>
|
||||
<HighlightTexture file="Interface\Buttons\UI-CheckBox-Highlight" alphaMode="ADD"/>
|
||||
<CheckedTexture file="Interface\Buttons\UI-CheckBox-Check"/>
|
||||
<DisabledCheckedTexture file="Interface\Buttons\UI-CheckBox-Check-Disabled"/>
|
||||
</CheckButton>
|
||||
<Button name="AddonListEntry1" inherits="AddonListEntryTemplate" id="1">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="37" y="-80"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</Button>
|
||||
<Button name="AddonListEntry2" inherits="AddonListEntryTemplate" id="2">
|
||||
<Anchors>
|
||||
<Anchor point="TOP" relativeTo="AddonListEntry1" relativePoint="BOTTOM">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-4"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</Button>
|
||||
<Button name="AddonListEntry3" inherits="AddonListEntryTemplate" id="3">
|
||||
<Anchors>
|
||||
<Anchor point="TOP" relativeTo="AddonListEntry2" relativePoint="BOTTOM">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-4"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</Button>
|
||||
<Button name="AddonListEntry4" inherits="AddonListEntryTemplate" id="4">
|
||||
<Anchors>
|
||||
<Anchor point="TOP" relativeTo="AddonListEntry3" relativePoint="BOTTOM">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-4"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</Button>
|
||||
<Button name="AddonListEntry5" inherits="AddonListEntryTemplate" id="5">
|
||||
<Anchors>
|
||||
<Anchor point="TOP" relativeTo="AddonListEntry4" relativePoint="BOTTOM">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-4"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</Button>
|
||||
<Button name="AddonListEntry6" inherits="AddonListEntryTemplate" id="6">
|
||||
<Anchors>
|
||||
<Anchor point="TOP" relativeTo="AddonListEntry5" relativePoint="BOTTOM">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-4"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</Button>
|
||||
<Button name="AddonListEntry7" inherits="AddonListEntryTemplate" id="7">
|
||||
<Anchors>
|
||||
<Anchor point="TOP" relativeTo="AddonListEntry6" relativePoint="BOTTOM">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-4"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</Button>
|
||||
<Button name="AddonListEntry8" inherits="AddonListEntryTemplate" id="8">
|
||||
<Anchors>
|
||||
<Anchor point="TOP" relativeTo="AddonListEntry7" relativePoint="BOTTOM">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-4"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</Button>
|
||||
<Button name="AddonListEntry9" inherits="AddonListEntryTemplate" id="9">
|
||||
<Anchors>
|
||||
<Anchor point="TOP" relativeTo="AddonListEntry8" relativePoint="BOTTOM">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-4"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</Button>
|
||||
<Button name="AddonListEntry10" inherits="AddonListEntryTemplate" id="10">
|
||||
<Anchors>
|
||||
<Anchor point="TOP" relativeTo="AddonListEntry9" relativePoint="BOTTOM">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-4"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</Button>
|
||||
<Button name="AddonListEntry11" inherits="AddonListEntryTemplate" id="11">
|
||||
<Anchors>
|
||||
<Anchor point="TOP" relativeTo="AddonListEntry10" relativePoint="BOTTOM">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-4"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</Button>
|
||||
<Button name="AddonListEntry12" inherits="AddonListEntryTemplate" id="12">
|
||||
<Anchors>
|
||||
<Anchor point="TOP" relativeTo="AddonListEntry11" relativePoint="BOTTOM">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-4"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</Button>
|
||||
<Button name="AddonListEntry13" inherits="AddonListEntryTemplate" id="13">
|
||||
<Anchors>
|
||||
<Anchor point="TOP" relativeTo="AddonListEntry12" relativePoint="BOTTOM">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-4"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</Button>
|
||||
<Button name="AddonListEntry14" inherits="AddonListEntryTemplate" id="14">
|
||||
<Anchors>
|
||||
<Anchor point="TOP" relativeTo="AddonListEntry13" relativePoint="BOTTOM">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-4"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</Button>
|
||||
<Button name="AddonListEntry15" inherits="AddonListEntryTemplate" id="15">
|
||||
<Anchors>
|
||||
<Anchor point="TOP" relativeTo="AddonListEntry14" relativePoint="BOTTOM">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-4"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</Button>
|
||||
<Button name="AddonListEntry16" inherits="AddonListEntryTemplate" id="16">
|
||||
<Anchors>
|
||||
<Anchor point="TOP" relativeTo="AddonListEntry15" relativePoint="BOTTOM">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-4"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</Button>
|
||||
<Button name="AddonListEntry17" inherits="AddonListEntryTemplate" id="17">
|
||||
<Anchors>
|
||||
<Anchor point="TOP" relativeTo="AddonListEntry16" relativePoint="BOTTOM">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-4"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</Button>
|
||||
<Button name="AddonListEntry18" inherits="AddonListEntryTemplate" id="18">
|
||||
<Anchors>
|
||||
<Anchor point="TOP" relativeTo="AddonListEntry17" relativePoint="BOTTOM">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-4"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</Button>
|
||||
<Button name="AddonListEntry19" inherits="AddonListEntryTemplate" id="19">
|
||||
<Anchors>
|
||||
<Anchor point="TOP" relativeTo="AddonListEntry18" relativePoint="BOTTOM">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-4"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</Button>
|
||||
<ScrollFrame name="AddonListScrollFrame" inherits="GlueScrollFrameTemplate">
|
||||
<Size>
|
||||
<AbsDimension x="510" y="390"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="49" y="-73"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Layers>
|
||||
<Layer level="BACKGROUND">
|
||||
<Texture name="$parentScrollBarTop" file="Interface\PaperDollInfoFrame\UI-Character-ScrollBar">
|
||||
<Size>
|
||||
<AbsDimension x="31" y="256"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativePoint="TOPRIGHT">
|
||||
<Offset>
|
||||
<AbsDimension x="-2" y="5"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<TexCoords left="0" right="0.484375" top="0" bottom="1.0"/>
|
||||
</Texture>
|
||||
<Texture name="$parentScrollBarBottom" file="Interface\PaperDollInfoFrame\UI-Character-ScrollBar">
|
||||
<Size>
|
||||
<AbsDimension x="31" y="106"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="BOTTOMLEFT" relativePoint="BOTTOMRIGHT">
|
||||
<Offset>
|
||||
<AbsDimension x="-2" y="-2"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<TexCoords left="0.515625" right="1.0" top="0" bottom="0.4140625"/>
|
||||
</Texture>
|
||||
<Texture name="$parentScrollBarMiddle" file="Interface\PaperDollInfoFrame\UI-Character-ScrollBar">
|
||||
<Size>
|
||||
<AbsDimension x="31" y="60"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOP" relativeTo="$parentScrollBarTop" relativePoint="BOTTOM"/>
|
||||
<Anchor point="BOTTOM" relativeTo="$parentScrollBarBottom" relativePoint="TOP"/>
|
||||
</Anchors>
|
||||
<TexCoords left="0" right="0.484375" top=".75" bottom="1.0"/>
|
||||
</Texture>
|
||||
</Layer>
|
||||
</Layers>
|
||||
<Scripts>
|
||||
<OnVerticalScroll>
|
||||
AddonListScrollFrame_OnVerticalScroll(self, offset);
|
||||
</OnVerticalScroll>
|
||||
</Scripts>
|
||||
<ScrollChild>
|
||||
<Frame name="AddonListScrollFrameScrollChildFrame">
|
||||
<Size>
|
||||
<AbsDimension x="510" y="395"/>
|
||||
</Size>
|
||||
</Frame>
|
||||
</ScrollChild>
|
||||
</ScrollFrame>
|
||||
<Button name="AddonListDisableAllButton" inherits="AddonListButtonTemplate" text="DISABLE_ALL_ADDONS">
|
||||
<Size>
|
||||
<AbsDimension x="160" y="45"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="BOTTOMLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="16" y="13"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnClick>
|
||||
local character = GlueDropDownMenu_GetSelectedValue(AddonCharacterDropDown);
|
||||
if ( character == ALL ) then
|
||||
character = nil;
|
||||
end
|
||||
DisableAllAddOns(character);
|
||||
AddonList_Update();
|
||||
</OnClick>
|
||||
</Scripts>
|
||||
</Button>
|
||||
<Button name="AddonListEnableAllButton" inherits="AddonListButtonTemplate" text="ENABLE_ALL_ADDONS">
|
||||
<Size>
|
||||
<AbsDimension x="160" y="45"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="LEFT" relativeTo="AddonListDisableAllButton" relativePoint="RIGHT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="0"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnClick>
|
||||
local character = GlueDropDownMenu_GetSelectedValue(AddonCharacterDropDown);
|
||||
if ( character == ALL ) then
|
||||
character = nil;
|
||||
end
|
||||
EnableAllAddOns(character);
|
||||
AddonList_Update();
|
||||
</OnClick>
|
||||
</Scripts>
|
||||
</Button>
|
||||
<Button name="AddonListCancelButton" inherits="GlueDialogButtonTemplate" text="CANCEL">
|
||||
<Size>
|
||||
<AbsDimension x="125" y="45"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="BOTTOMRIGHT">
|
||||
<Offset>
|
||||
<AbsDimension x="-10" y="13"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnClick>
|
||||
AddonList_OnCancel();
|
||||
</OnClick>
|
||||
</Scripts>
|
||||
</Button>
|
||||
<Button name="AddonListOkButton" inherits="GlueDialogButtonTemplate" text="OKAY">
|
||||
<Size>
|
||||
<AbsDimension x="125" y="45"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="RIGHT" relativeTo="AddonListCancelButton" relativePoint="LEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="8" y="0"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnClick>
|
||||
AddonList_OnOk();
|
||||
</OnClick>
|
||||
</Scripts>
|
||||
</Button>
|
||||
</Frames>
|
||||
</Frame>
|
||||
</Frames>
|
||||
<Scripts>
|
||||
<OnLoad>
|
||||
AddonList_OnLoad(self);
|
||||
</OnLoad>
|
||||
<OnKeyDown>
|
||||
AddonList_OnKeyDown(key);
|
||||
</OnKeyDown>
|
||||
<OnShow>
|
||||
AddonList_OnShow();
|
||||
</OnShow>
|
||||
</Scripts>
|
||||
</Frame>
|
||||
<Frame name="AddonTooltip" frameStrata="TOOLTIP" hidden="true">
|
||||
<Size>
|
||||
<AbsDimension x="220" y="0"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPRIGHT" relativeTo="AddonListBackground" relativePoint="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="6" y="-4"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Backdrop bgFile="Interface\Tooltips\UI-Tooltip-Background" edgeFile="Interface\tooltips\ui-tooltip-border-maw" tile="true">
|
||||
<EdgeSize>
|
||||
<AbsValue val="16"/>
|
||||
</EdgeSize>
|
||||
<TileSize>
|
||||
<AbsValue val="16"/>
|
||||
</TileSize>
|
||||
<BackgroundInsets>
|
||||
<AbsInset left="5" right="5" top="5" bottom="5"/>
|
||||
</BackgroundInsets>
|
||||
</Backdrop>
|
||||
<Layers>
|
||||
<Layer level="ARTWORK">
|
||||
<FontString name="$parentTitle" inherits="GlueFontNormal" justifyH="LEFT">
|
||||
<Size>
|
||||
<AbsDimension x="200" y="0"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="10" y="-10"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</FontString>
|
||||
<FontString name="$parentNotes" inherits="GlueFontNormalSmall" justifyH="LEFT">
|
||||
<Size>
|
||||
<AbsDimension x="200" y="0"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="$parentTitle" relativePoint="BOTTOMLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-2"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Color r="1.0" g="1.0" b="1.0"/>
|
||||
</FontString>
|
||||
<FontString name="$parentDeps" inherits="GlueFontNormalSmall" justifyH="LEFT">
|
||||
<Size>
|
||||
<AbsDimension x="200" y="0"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="$parentNotes" relativePoint="BOTTOMLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-2"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</FontString>
|
||||
</Layer>
|
||||
</Layers>
|
||||
<Scripts>
|
||||
<OnLoad>
|
||||
self:SetBackdropBorderColor(1.0, 1.0, 1.0);
|
||||
self:SetBackdropColor(0.09, 0.09, 0.19 );
|
||||
</OnLoad>
|
||||
</Scripts>
|
||||
</Frame>
|
||||
<Button name="AddonDialogButtonTemplate" virtual="true">
|
||||
<Size>
|
||||
<AbsDimension x="200" y="40"/>
|
||||
</Size>
|
||||
<Scripts>
|
||||
<OnClick>
|
||||
AddonDialog_OnClick(self:GetID());
|
||||
</OnClick>
|
||||
</Scripts>
|
||||
<ButtonText>
|
||||
<Anchors>
|
||||
<Anchor point="CENTER">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="2"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</ButtonText>
|
||||
<NormalFont style="GlueFontNormal"/>
|
||||
<HighlightFont style="GlueFontHighlight"/>
|
||||
<NormalTexture inherits="GluePanelButtonUpTexture"/>
|
||||
<PushedTexture inherits="GluePanelButtonDownTexture"/>
|
||||
<DisabledTexture inherits="GluePanelButtonDisabledTexture"/>
|
||||
<HighlightTexture inherits="GluePanelButtonHighlightTexture"/>
|
||||
</Button>
|
||||
<Frame name="AddonDialog" toplevel="true" parent="GlueParent" setAllPoints="true" enableMouse="true" enableKeyboard="true" frameStrata="DIALOG" hidden="true">
|
||||
<Frames>
|
||||
<Frame name="AddonDialogBackground">
|
||||
<Size>
|
||||
<AbsDimension x="512" y="256"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="CENTER">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="0"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Backdrop bgFile="Interface\DialogFrame\UI-DialogBox-Background" edgeFile="Interface\tooltips\ui-tooltip-border-maw" tile="true">
|
||||
<BackgroundInsets>
|
||||
<AbsInset left="11" right="12" top="12" bottom="11"/>
|
||||
</BackgroundInsets>
|
||||
<TileSize>
|
||||
<AbsValue val="32"/>
|
||||
</TileSize>
|
||||
<EdgeSize>
|
||||
<AbsValue val="32"/>
|
||||
</EdgeSize>
|
||||
</Backdrop>
|
||||
<Layers>
|
||||
<Layer level="ARTWORK">
|
||||
<FontString name="AddonDialogText" inherits="GlueFontNormalLarge">
|
||||
<Size>
|
||||
<AbsDimension x="440" y="0"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOP">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-16"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</FontString>
|
||||
</Layer>
|
||||
</Layers>
|
||||
<Frames>
|
||||
<Button name="AddonDialogButton1" inherits="AddonDialogButtonTemplate" id="1"/>
|
||||
<Button name="AddonDialogButton2" inherits="AddonDialogButtonTemplate" id="2"/>
|
||||
</Frames>
|
||||
</Frame>
|
||||
</Frames>
|
||||
<Scripts>
|
||||
<OnShow>
|
||||
self:Raise();
|
||||
</OnShow>
|
||||
<OnKeyDown>
|
||||
AddonDialog_OnKeyDown(key);
|
||||
</OnKeyDown>
|
||||
</Scripts>
|
||||
</Frame>
|
||||
</Ui>
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,792 +0,0 @@
|
||||
<!-- MoonWell -->
|
||||
<Ui xmlns="http://www.blizzard.com/wow/ui/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.blizzard.com/wow/ui/
|
||||
..\FrameXML\UI.xsd">
|
||||
<Script file="CharacterCreate.lua"/>
|
||||
<Frame name="CharacterCreateTooltip" frameStrata="TOOLTIP" hidden="true" parent="GlueParent" inherits="GlueTooltipTemplate">
|
||||
<Scripts>
|
||||
<OnLoad>
|
||||
GlueTooltip_SetFont(self, CharacterCreateTooltipFont);
|
||||
self:SetBackdropBorderColor(1.0, 1.0, 1.0);
|
||||
self:SetBackdropColor(0.09, 0.09, 0.19 );
|
||||
</OnLoad>
|
||||
</Scripts>
|
||||
</Frame>
|
||||
<CheckButton name="CharacterCreateIconButtonTemplate" virtual="true" motionScriptsWhileDisabled="true">
|
||||
<Size x="38" y="38"/>
|
||||
<Layers>
|
||||
<Layer level="OVERLAY">
|
||||
<Texture name="$parentDisableTexture" hidden="true">
|
||||
<Size x="38" y="38"/>
|
||||
<Anchors>
|
||||
<Anchor point="CENTER" x="0" y="0"/>
|
||||
</Anchors>
|
||||
</Texture>
|
||||
</Layer>
|
||||
</Layers>
|
||||
<Scripts>
|
||||
</Scripts>
|
||||
</CheckButton>
|
||||
<CheckButton name="CharacterCreateRaceButtonTemplate" inherits="CharacterCreateIconButtonTemplate" virtual="true">
|
||||
<Layers>
|
||||
<Layer level="ARTWORK">
|
||||
<FontString name="$parentText" inherits="GlueFontNormalSmall">
|
||||
<Anchors>
|
||||
<Anchor point="BOTTOM" relativePoint="TOP" x="0" y="2"/>
|
||||
</Anchors>
|
||||
</FontString>
|
||||
</Layer>
|
||||
</Layers>
|
||||
|
||||
<Scripts>
|
||||
<OnClick>
|
||||
if( self.enable ) then
|
||||
CharacterRace_OnClick(self, self:GetID());
|
||||
CharacterCreateTooltip:Hide();
|
||||
end
|
||||
</OnClick>
|
||||
<OnEnter>
|
||||
-- GlueTooltip_SetOwner(self, CharacterCreateTooltip, -3, -5);
|
||||
-- GlueTooltip_SetText(self.tooltip, CharacterCreateTooltip);
|
||||
</OnEnter>
|
||||
<OnLeave>
|
||||
-- CharacterCreateTooltip:Hide();
|
||||
</OnLeave>
|
||||
</Scripts>
|
||||
|
||||
<NormalTexture name="$parentNormalTexture" file="Interface\Glues\CharacterCreate\UI-CHARACTERCREATE-RACES-ClASS">
|
||||
<Size x="50" y="50"/>
|
||||
<Anchors>
|
||||
<Anchor point="CENTER" x="0" y="0"/>
|
||||
</Anchors>
|
||||
</NormalTexture>
|
||||
|
||||
<PushedTexture name="$parentPushedTexture" file="Interface\Glues\CharacterCreate\UI-CHARACTERCREATE-RACES-ClASS">
|
||||
<Size x="50" y="50"/>
|
||||
<Anchors>
|
||||
<Anchor point="CENTER" x="0" y="0"/>
|
||||
</Anchors>
|
||||
</PushedTexture>
|
||||
</CheckButton>
|
||||
|
||||
<CheckButton name="CharacterCreateClassButtonTemplate" inherits="CharacterCreateIconButtonTemplate" virtual="true">
|
||||
<Scripts>
|
||||
<OnClick>
|
||||
if( self.enable ) then
|
||||
CharacterClass_OnClick(self:GetID());
|
||||
CharacterCreateTooltip:Hide();
|
||||
end
|
||||
</OnClick>
|
||||
<OnEnter>
|
||||
-- GlueTooltip_SetOwner(self, CharacterCreateTooltip, -3, -5);
|
||||
-- GlueTooltip_SetText(self.tooltip, CharacterCreateTooltip);
|
||||
</OnEnter>
|
||||
<OnLeave>
|
||||
-- CharacterCreateTooltip:Hide();
|
||||
</OnLeave>
|
||||
</Scripts>
|
||||
|
||||
<NormalTexture name="$parentNormalTexture" file="Interface\Glues\CharacterCreate\UI-CHARACTERCREATE-RACES-ClASS">
|
||||
<Size x="52" y="52"/>
|
||||
<Anchors>
|
||||
<Anchor point="CENTER" x="0" y="0"/>
|
||||
</Anchors>
|
||||
</NormalTexture>
|
||||
|
||||
<PushedTexture name="$parentPushedTexture" file="Interface\Glues\CharacterCreate\UI-CHARACTERCREATE-RACES-ClASS">
|
||||
<Size x="52" y="52"/>
|
||||
<Anchors>
|
||||
<Anchor point="CENTER" x="0" y="0"/>
|
||||
</Anchors>
|
||||
</PushedTexture>
|
||||
</CheckButton>
|
||||
|
||||
<CheckButton name="CharacterCreateGenderButtonTemplate" inherits="CharacterCreateIconButtonTemplate" virtual="true">
|
||||
<Scripts>
|
||||
<OnEnter>
|
||||
-- GlueTooltip_SetOwner(self, CharacterCreateTooltip, -3, -5);
|
||||
-- GlueTooltip_SetText(MALE, CharacterCreateTooltip);
|
||||
</OnEnter>
|
||||
<OnLeave>
|
||||
-- CharacterCreateTooltip:Hide();
|
||||
</OnLeave>
|
||||
</Scripts>
|
||||
|
||||
<NormalTexture name="$parentNormalTexture" file="Interface\Glues\CharacterCreate\UI-CharacterCreate-Gender_Round">
|
||||
<Size x="38" y="38"/>
|
||||
<Anchors>
|
||||
<Anchor point="CENTER" x="0" y="0"/>
|
||||
</Anchors>
|
||||
</NormalTexture>
|
||||
|
||||
<PushedTexture name="$parentPushedTexture" file="Interface\Glues\CharacterCreate\UI-CharacterCreate-Gender_Round">
|
||||
<Size x="38" y="38"/>
|
||||
<Anchors>
|
||||
<Anchor point="CENTER" x="0" y="0"/>
|
||||
</Anchors>
|
||||
</PushedTexture>
|
||||
</CheckButton>
|
||||
|
||||
<Frame name="CharacterCustomizationFrameTemplate" virtual="true">
|
||||
<Size>
|
||||
<AbsDimension x="230" y="32"/>
|
||||
</Size>
|
||||
<Layers>
|
||||
<Layer level="BACKGROUND">
|
||||
<Texture name="$parentBackground" file="Interface\Glues\CharacterCreate\charactercreate">
|
||||
<Size>
|
||||
<AbsDimension x="150" y="34"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="CENTER"/>
|
||||
</Anchors>
|
||||
<TexCoords left="0.508300781" right="0.656738281" top="0.244140625" bottom="0.279296875"/>
|
||||
</Texture>
|
||||
<FontString name="$parentText" inherits="GlueFontHighlightSmall">
|
||||
<Anchors>
|
||||
<Anchor point="CENTER" x="0" y="2"/>
|
||||
</Anchors>
|
||||
</FontString>
|
||||
</Layer>
|
||||
</Layers>
|
||||
<Frames>
|
||||
<Button name="$parentRightButton">
|
||||
<Size x="24" y="24"/>
|
||||
<Anchors>
|
||||
<Anchor point="RIGHT" x="0" y="0"/>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>
|
||||
self:GetNormalTexture():SetTexCoord(0.937500000, 0.976562500, 0.445312500, 0.462890625);
|
||||
self:GetPushedTexture():SetTexCoord(0.716796875, 0.755859375, 0.537109375, 0.554687500);
|
||||
</OnLoad>
|
||||
<OnClick>
|
||||
CharacterCustomization_Right(self:GetParent():GetID());
|
||||
</OnClick>
|
||||
</Scripts>
|
||||
<NormalTexture file="Interface\Glues\Common\perks"/>
|
||||
<PushedTexture file="Interface\Glues\Common\perks"/>
|
||||
<HighlightTexture file="Interface\Buttons\UI-Common-MouseHilight" alphaMode="ADD"/>
|
||||
</Button>
|
||||
<Button name="$parentLeftButton">
|
||||
<Size x="24" y="24"/>
|
||||
<Anchors>
|
||||
<Anchor point="LEFT" x="0" y="0"/>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>
|
||||
self:GetNormalTexture():SetTexCoord(0.936523438, 0.975585938, 0.200195313, 0.217773438);
|
||||
self:GetPushedTexture():SetTexCoord(0.934570313, 0.973632813, 0.375000000, 0.392578125);
|
||||
</OnLoad>
|
||||
<OnClick>
|
||||
CharacterCustomization_Left(self:GetParent():GetID());
|
||||
</OnClick>
|
||||
</Scripts>
|
||||
<NormalTexture file="Interface\Glues\Common\perks"/>
|
||||
<PushedTexture file="Interface\Glues\Common\perks"/>
|
||||
<HighlightTexture file="Interface\Buttons\UI-Common-MouseHilight" alphaMode="ADD"/>
|
||||
</Button>
|
||||
</Frames>
|
||||
</Frame>
|
||||
<ModelFFX name="CharacterCreate" toplevel="true" parent="GlueParent" setAllPoints="true" enableKeyboard="true" hidden="true">
|
||||
<Frames>
|
||||
<Frame name="CharacterCreateFrame" setAllPoints="true" enableMouse="true">
|
||||
<Frames>
|
||||
<Frame name="CharacterCreateWoWLogo" hidden="true">
|
||||
<Size x="256" y="128"/>
|
||||
<Anchors>
|
||||
<Anchor point="TOPRIGHT" x="-9" y="0"/>
|
||||
</Anchors>
|
||||
<Layers>
|
||||
<Layer level="ARTWORK">
|
||||
<Texture name="CharacterCreateLogo" file="Interface\Glues\Common\Glues-WoW-WotLKLogo" hidden="true">
|
||||
<Size x="256" y="128"/>
|
||||
<Anchors>
|
||||
<Anchor point="TOP" relativePoint="TOPLEFT" x="128" y="0"/>
|
||||
</Anchors>
|
||||
</Texture>
|
||||
</Layer>
|
||||
</Layers>
|
||||
</Frame>
|
||||
<Frame name="CharacterCreateCharacterRace" hidden="true">
|
||||
<Size x="267" y="287"/>
|
||||
<Anchors>
|
||||
<Anchor point="TOP" relativeTo="CharacterCreateWoWLogo" relativePoint="BOTTOM" x="-5" y="5"/>
|
||||
</Anchors>
|
||||
<Layers>
|
||||
<Layer level="BORDER">
|
||||
<Texture name="CharacterCreateRaceIcon" file="Interface\Glues\CharacterCreate\UI-CharacterCreate-RacesRound">
|
||||
<Size x="48" y="48"/>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" x="4" y="-4"/>
|
||||
</Anchors>
|
||||
<TexCoords left="0" right="0.375" top="0" bottom="0.75"/>
|
||||
</Texture>
|
||||
</Layer>
|
||||
<Layer level="ARTWORK">
|
||||
<Texture file="Interface\Glues\CharacterCreate\UI-CharacterCreate-InfoBox" setAllPoints="true">
|
||||
<TexCoords left="0.005859375" right="0.52734375" top="0.005859375" bottom="0.56640625"/>
|
||||
</Texture>
|
||||
</Layer>
|
||||
<Layer level="OVERLAY">
|
||||
<FontString name="CharacterCreateRaceLabel" inherits="FactionName_Shadow_Huge" justifyH="LEFT" text="RACE">
|
||||
<Size x="220" y="0"/>
|
||||
<Anchors>
|
||||
<Anchor point="TOP" x="40" y="-10"/>
|
||||
</Anchors>
|
||||
</FontString>
|
||||
</Layer>
|
||||
</Layers>
|
||||
<Backdrop bgFile="Interface\Tooltips\UI-Tooltip-Background">
|
||||
<BackgroundInsets>
|
||||
<AbsInset left="12" right="3" top="20" bottom="6"/>
|
||||
</BackgroundInsets>
|
||||
</Backdrop>
|
||||
<Frames>
|
||||
<ScrollFrame name="CharacterCreateRaceScrollFrame" inherits="GlueScrollFrameTemplate">
|
||||
<Size x="220" y="220"/>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" x="20" y="-55"/>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>
|
||||
CharacterCreateRaceScrollFrameScrollBar:ClearAllPoints();
|
||||
CharacterCreateRaceScrollFrameScrollBar:SetPoint("TOPLEFT", CharacterCreateRaceScrollFrame, "TOPRIGHT", 7, 4);
|
||||
CharacterCreateRaceScrollFrameScrollBar:SetPoint("BOTTOMLEFT", CharacterCreateRaceScrollFrame, "BOTTOMRIGHT", 7, 12);
|
||||
GlueScrollFrame_OnScrollRangeChanged(self, yrange);
|
||||
</OnLoad>
|
||||
<OnScrollRangeChanged>
|
||||
GlueScrollFrame_OnScrollRangeChanged(self, yrange);
|
||||
</OnScrollRangeChanged>
|
||||
</Scripts>
|
||||
<ScrollChild>
|
||||
<Frame name="CharacterCreateRaceScrollChild">
|
||||
<Size x="220" y="10"/>
|
||||
<Layers>
|
||||
<Layer level="BACKGROUND">
|
||||
<FontString name="CharacterCreateRaceAbilityText" inherits="GlueFontNormalSmall" justifyH="LEFT">
|
||||
<Size x="220" y="0"/>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" x="0" y="0"/>
|
||||
</Anchors>
|
||||
</FontString>
|
||||
<FontString name="CharacterCreateRaceText" inherits="GlueFontCharacterCreate" justifyH="LEFT">
|
||||
<Size x="220" y="0"/>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="CharacterCreateRaceAbilityText" relativePoint="BOTTOMLEFT" x="0" y="-2"/>
|
||||
</Anchors>
|
||||
</FontString>
|
||||
</Layer>
|
||||
</Layers>
|
||||
</Frame>
|
||||
</ScrollChild>
|
||||
</ScrollFrame>
|
||||
</Frames>
|
||||
</Frame>
|
||||
<Frame name="CharacterCreateCharacterClass" hidden="true">
|
||||
<Size x="267" y="287"/>
|
||||
<Anchors>
|
||||
<Anchor point="TOP" relativeTo="CharacterCreateCharacterRace" relativePoint="BOTTOM" x="-5" y="-5"/>
|
||||
</Anchors>
|
||||
<Layers>
|
||||
<Layer level="BORDER">
|
||||
<Texture name="CharacterCreateClassIcon" file="Interface\TargetingFrame\UI-Classes-Circles" hidden="">
|
||||
<Size x="48" y="48"/>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" x="4" y="-4"/>
|
||||
</Anchors>
|
||||
<TexCoords left="0" right="0.375" top="0" bottom="0.75"/>
|
||||
</Texture>
|
||||
</Layer>
|
||||
<Layer level="ARTWORK">
|
||||
<Texture file="Interface\Glues\CharacterCreate\UI-CharacterCreate-InfoBox" setAllPoints="true">
|
||||
<TexCoords left="0.005859375" right="0.52734375" top="0.005859375" bottom="0.56640625"/>
|
||||
</Texture>
|
||||
</Layer>
|
||||
<Layer level="OVERLAY">
|
||||
<FontString name="CharacterCreateClassLabel" inherits="FactionName_Shadow_Huge" justifyH="LEFT" text="RACE">
|
||||
<Size x="220" y="0"/>
|
||||
<Anchors>
|
||||
<Anchor point="TOP" x="40" y="-10"/>
|
||||
</Anchors>
|
||||
</FontString>
|
||||
</Layer>
|
||||
</Layers>
|
||||
<Backdrop bgFile="Interface\Tooltips\UI-Tooltip-Background">
|
||||
<BackgroundInsets>
|
||||
<AbsInset left="12" right="3" top="20" bottom="6"/>
|
||||
</BackgroundInsets>
|
||||
</Backdrop>
|
||||
<Frames>
|
||||
<ScrollFrame name="CharacterCreateClassScrollFrame" inherits="GlueScrollFrameTemplate">
|
||||
<Size x="220" y="220"/>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" x="20" y="-55"/>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>
|
||||
CharacterCreateClassScrollFrameScrollBar:ClearAllPoints();
|
||||
CharacterCreateClassScrollFrameScrollBar:SetPoint("TOPLEFT", CharacterCreateClassScrollFrame, "TOPRIGHT", 7, 4);
|
||||
CharacterCreateClassScrollFrameScrollBar:SetPoint("BOTTOMLEFT", CharacterCreateClassScrollFrame, "BOTTOMRIGHT", 7, 12);
|
||||
GlueScrollFrame_OnScrollRangeChanged(self, yrange);
|
||||
</OnLoad>
|
||||
<OnScrollRangeChanged>
|
||||
GlueScrollFrame_OnScrollRangeChanged(self, yrange);
|
||||
</OnScrollRangeChanged>
|
||||
</Scripts>
|
||||
<ScrollChild>
|
||||
<Frame name="CharacterCreateClassScrollChild">
|
||||
<Size x="220" y="10"/>
|
||||
<Layers>
|
||||
<Layer level="BACKGROUND">
|
||||
<FontString name="CharacterCreateClassRolesText" inherits="GlueFontNormalSmall" justifyH="LEFT">
|
||||
<Size x="220" y="0"/>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" x="0" y="0"/>
|
||||
</Anchors>
|
||||
</FontString>
|
||||
<FontString name="CharacterCreateClassText" inherits="GlueFontCharacterCreate" justifyH="LEFT">
|
||||
<Size x="220" y="0"/>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="CharacterCreateClassRolesText" relativePoint="BOTTOMLEFT" x="0" y="-2"/>
|
||||
</Anchors>
|
||||
</FontString>
|
||||
</Layer>
|
||||
</Layers>
|
||||
</Frame>
|
||||
</ScrollChild>
|
||||
</ScrollFrame>
|
||||
</Frames>
|
||||
</Frame>
|
||||
<Frame name="CharacterCreateConfigurationFrame">
|
||||
<Size x="256" y="758"/>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="CharacterCreateFrame" relativePoint="TOPLEFT" x="9" y="-5"/>
|
||||
</Anchors>
|
||||
<Layers>
|
||||
<Layer level="BACKGROUND">
|
||||
<Texture name="CharacterCreateConfigurationBackground" file="Interface\Tooltips\UI-Tooltip-Background" hidden="true">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="CharacterCreateOuterBorder1" relativePoint="TOPLEFT" x="10" y="-8"/>
|
||||
<Anchor point="BOTTOMRIGHT" relativeTo="CharacterCreateOuterBorder3" relativePoint="BOTTOMRIGHT" x="-10" y="8"/>
|
||||
</Anchors>
|
||||
</Texture>
|
||||
</Layer>
|
||||
<Layer level="OVERLAY">
|
||||
<FontString name="CharacterCreateGender" inherits="CharacterCreateTooltipFont" hidden="true">
|
||||
<Anchors>
|
||||
<Anchor point="BOTTOM" relativePoint="TOP" x="0" y="-388"/>
|
||||
</Anchors>
|
||||
<Color r="1.0" g="0.78" b="0"/>
|
||||
</FontString>
|
||||
<FontString name="CharacterCreateClassName" inherits="CharacterCreateTooltipFont" hidden="true">
|
||||
<Anchors>
|
||||
<Anchor point="BOTTOM" relativePoint="TOP" x="0" y="-456"/>
|
||||
</Anchors>
|
||||
<Color r="1.0" g="0.78" b="0"/>
|
||||
</FontString>
|
||||
</Layer>
|
||||
</Layers>
|
||||
<Frames>
|
||||
<!-- Frame contenedor para botones de raza -->
|
||||
<Frame name="CharacterCreateRaceButtonsContainer">
|
||||
<Size x="1000" y="600"/>
|
||||
<Anchors>
|
||||
<Anchor point="CENTER" relativePoint="CENTER" x="0" y="0"/>
|
||||
</Anchors>
|
||||
<Frames>
|
||||
<CheckButton name="CharacterCreateRaceButton1" inherits="CharacterCreateRaceButtonTemplate" id="1"/>
|
||||
<CheckButton name="CharacterCreateRaceButton2" inherits="CharacterCreateRaceButtonTemplate" id="2"/>
|
||||
<CheckButton name="CharacterCreateRaceButton3" inherits="CharacterCreateRaceButtonTemplate" id="3"/>
|
||||
<CheckButton name="CharacterCreateRaceButton4" inherits="CharacterCreateRaceButtonTemplate" id="4"/>
|
||||
<CheckButton name="CharacterCreateRaceButton5" inherits="CharacterCreateRaceButtonTemplate" id="5"/>
|
||||
<CheckButton name="CharacterCreateRaceButton6" inherits="CharacterCreateRaceButtonTemplate" id="6"/>
|
||||
<CheckButton name="CharacterCreateRaceButton7" inherits="CharacterCreateRaceButtonTemplate" id="7"/>
|
||||
<CheckButton name="CharacterCreateRaceButton8" inherits="CharacterCreateRaceButtonTemplate" id="8"/>
|
||||
<CheckButton name="CharacterCreateRaceButton9" inherits="CharacterCreateRaceButtonTemplate" id="9"/>
|
||||
<CheckButton name="CharacterCreateRaceButton10" inherits="CharacterCreateRaceButtonTemplate" id="10"/>
|
||||
</Frames>
|
||||
</Frame>
|
||||
<!-- Frame contenedor para botones de género -->
|
||||
<Frame name="CharacterCreateGenderButtonsContainer">
|
||||
<Size x="200" y="50"/>
|
||||
<Anchors>
|
||||
<Anchor point="CENTER" relativePoint="CENTER" x="0" y="-250"/>
|
||||
</Anchors>
|
||||
<Frames>
|
||||
<CheckButton name="CharacterCreateGenderButtonMale" inherits="CharacterCreateGenderButtonTemplate">
|
||||
<Scripts>
|
||||
<OnLoad>
|
||||
_G[self:GetName().."NormalTexture"]:SetTexCoord(0, 0.5, 0, 1.0);
|
||||
_G[self:GetName().."PushedTexture"]:SetTexCoord(0, 0.5, 0, 1.0);
|
||||
</OnLoad>
|
||||
<OnClick>
|
||||
PlaySound("gsCharacterCreationClass");
|
||||
if ( GetSelectedSex() ~= SEX_MALE ) then
|
||||
SetCharacterGender(SEX_MALE);
|
||||
end
|
||||
</OnClick>
|
||||
<OnEnter>
|
||||
GlueTooltip_SetOwner(self, CharacterCreateTooltip, -70, 5);
|
||||
GlueTooltip_SetText(MALE, CharacterCreateTooltip);
|
||||
</OnEnter>
|
||||
<OnLeave>
|
||||
CharacterCreateTooltip:Hide();
|
||||
</OnLeave>
|
||||
</Scripts>
|
||||
</CheckButton>
|
||||
<CheckButton name="CharacterCreateGenderButtonFemale" inherits="CharacterCreateGenderButtonTemplate">
|
||||
<Scripts>
|
||||
<OnLoad>
|
||||
_G[self:GetName().."NormalTexture"]:SetTexCoord(0.5, 1.0, 0, 1.0);
|
||||
_G[self:GetName().."PushedTexture"]:SetTexCoord(0.5, 1.0, 0, 1.0);
|
||||
</OnLoad>
|
||||
<OnClick>
|
||||
PlaySound("gsCharacterCreationClass");
|
||||
if ( GetSelectedSex() ~= SEX_FEMALE ) then
|
||||
SetCharacterGender(SEX_FEMALE);
|
||||
end
|
||||
</OnClick>
|
||||
<OnEnter>
|
||||
GlueTooltip_SetOwner(self, CharacterCreateTooltip, -70, 5);
|
||||
GlueTooltip_SetText(FEMALE, CharacterCreateTooltip);
|
||||
</OnEnter>
|
||||
<OnLeave>
|
||||
CharacterCreateTooltip:Hide();
|
||||
</OnLeave>
|
||||
</Scripts>
|
||||
</CheckButton>
|
||||
</Frames>
|
||||
</Frame>
|
||||
<!-- Frame contenedor para botones de clase -->
|
||||
<Frame name="CharacterCreateClassButtonsContainer">
|
||||
<Size x="900" y="100"/>
|
||||
<Anchors>
|
||||
<Anchor point="BOTTOM" relativePoint="BOTTOM" x="0" y="50"/>
|
||||
</Anchors>
|
||||
<Frames>
|
||||
<CheckButton name="CharacterCreateClassButton1" inherits="CharacterCreateClassButtonTemplate" id="1"/>
|
||||
<CheckButton name="CharacterCreateClassButton2" inherits="CharacterCreateClassButtonTemplate" id="2"/>
|
||||
<CheckButton name="CharacterCreateClassButton3" inherits="CharacterCreateClassButtonTemplate" id="3"/>
|
||||
<CheckButton name="CharacterCreateClassButton4" inherits="CharacterCreateClassButtonTemplate" id="4"/>
|
||||
<CheckButton name="CharacterCreateClassButton5" inherits="CharacterCreateClassButtonTemplate" id="5"/>
|
||||
<CheckButton name="CharacterCreateClassButton6" inherits="CharacterCreateClassButtonTemplate" id="6"/>
|
||||
<CheckButton name="CharacterCreateClassButton7" inherits="CharacterCreateClassButtonTemplate" id="7"/>
|
||||
<CheckButton name="CharacterCreateClassButton8" inherits="CharacterCreateClassButtonTemplate" id="8"/>
|
||||
<CheckButton name="CharacterCreateClassButton9" inherits="CharacterCreateClassButtonTemplate" id="9"/>
|
||||
<CheckButton name="CharacterCreateClassButton10" inherits="CharacterCreateClassButtonTemplate" id="10"/>
|
||||
</Frames>
|
||||
</Frame>
|
||||
<!-- Frames de personalización independientes -->
|
||||
<Frame name="CharacterCustomizationButtonFrame1" inherits="CharacterCustomizationFrameTemplate" id="1">
|
||||
<Anchors>
|
||||
<Anchor point="CENTER" x="900" y="150"/>
|
||||
</Anchors>
|
||||
</Frame>
|
||||
<Frame name="CharacterCustomizationButtonFrame2" inherits="CharacterCustomizationFrameTemplate" id="2">
|
||||
<Anchors>
|
||||
<Anchor point="CENTER" x="900" y="100"/>
|
||||
</Anchors>
|
||||
</Frame>
|
||||
<Frame name="CharacterCustomizationButtonFrame3" inherits="CharacterCustomizationFrameTemplate" id="3">
|
||||
<Anchors>
|
||||
<Anchor point="CENTER" x="900" y="50"/>
|
||||
</Anchors>
|
||||
</Frame>
|
||||
<Frame name="CharacterCustomizationButtonFrame4" inherits="CharacterCustomizationFrameTemplate" id="4">
|
||||
<Anchors>
|
||||
<Anchor point="CENTER" x="900" y="00"/>
|
||||
</Anchors>
|
||||
</Frame>
|
||||
<Frame name="CharacterCustomizationButtonFrame5" inherits="CharacterCustomizationFrameTemplate" id="5">
|
||||
<Anchors>
|
||||
<Anchor point="CENTER" x="900" y="-50"/>
|
||||
</Anchors>
|
||||
</Frame>
|
||||
</Frames>
|
||||
</Frame>
|
||||
<EditBox name="CharacterCreateNameEdit" inherits="GlueDark_EditBoxTemplate" letters="12">
|
||||
<Size x="156" y="40"/>
|
||||
<Anchors>
|
||||
<Anchor point="BOTTOM" x="0" y="55"/>
|
||||
</Anchors>
|
||||
<Layers>
|
||||
<Layer level="BACKGROUND">
|
||||
<FontString inherits="GlueFontNormalLarge" text="NAME">
|
||||
<Size x="256" y="64"/>
|
||||
<Anchors>
|
||||
<Anchor point="BOTTOM" relativePoint="TOP" x="0" y="-13"/>
|
||||
</Anchors>
|
||||
</FontString>
|
||||
</Layer>
|
||||
</Layers>
|
||||
<Scripts>
|
||||
<OnEscapePressed>
|
||||
CharacterCreate_Back();
|
||||
</OnEscapePressed>
|
||||
<OnEnterPressed>
|
||||
CharacterCreate_Okay();
|
||||
</OnEnterPressed>
|
||||
</Scripts>
|
||||
<TextInsets>
|
||||
<AbsInset left="15" right="12" top="8" bottom="8"/>
|
||||
</TextInsets>
|
||||
</EditBox>
|
||||
<Button name="CharacterCreateRandomName" inherits="GlueButtonSmallTemplate" text="RANDOMIZE" hidden="true">
|
||||
<Size x="146" y="30"/>
|
||||
<Anchors>
|
||||
<Anchor point="LEFT" relativeTo="CharacterCreateNameEdit" relativePoint="RIGHT" x="-30" y="35"/>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>
|
||||
self:SetWidth(self:GetTextWidth() + 50);
|
||||
</OnLoad>
|
||||
<OnClick>
|
||||
CharacterCreateNameEdit:SetText(GetRandomName());
|
||||
PlaySound("gsCharacterCreationLook");
|
||||
</OnClick>
|
||||
</Scripts>
|
||||
</Button>
|
||||
<Button name="CharCreateRandomizeButton" inherits="GlueButtonSmallTemplate" text="RANDOMIZE" hidden="true">
|
||||
<Size x="146" y="30"/>
|
||||
<Anchors>
|
||||
<Anchor point="CENTER" x="280" y="-100"/>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnClick>
|
||||
CharacterCreate_Randomize();
|
||||
</OnClick>
|
||||
<OnUpdate>
|
||||
CharacterCreate_DeathKnightSwap(self);
|
||||
</OnUpdate>
|
||||
</Scripts>
|
||||
</Button>
|
||||
<Button name="CharacterCreateRotateLeft">
|
||||
<Size x="36" y="36"/>
|
||||
<Anchors>
|
||||
<Anchor point="CENTER" x="250" y="200"/>
|
||||
</Anchors>
|
||||
<HitRectInsets>
|
||||
<AbsInset left="5" right="5" top="5" bottom="5"/>
|
||||
</HitRectInsets>
|
||||
<Scripts>
|
||||
<OnLoad>
|
||||
self:RegisterForClicks("LeftButtonDown", "LeftButtonUp");
|
||||
</OnLoad>
|
||||
<OnClick>
|
||||
PlaySound("igInventoryRotateCharacter");
|
||||
</OnClick>
|
||||
<OnUpdate>
|
||||
CharacterCreateRotateLeft_OnUpdate(self);
|
||||
</OnUpdate>
|
||||
</Scripts>
|
||||
<NormalTexture file="Interface\Glues\CharacterCreate\UI-RotationRight-Big-Up">
|
||||
<TexCoords left="1.0" right="0" top="0" bottom="1.0"/>
|
||||
</NormalTexture>
|
||||
<PushedTexture file="Interface\Glues\CharacterCreate\UI-RotationRight-Big-Down">
|
||||
<TexCoords left="1.0" right="0" top="0" bottom="1.0"/>
|
||||
</PushedTexture>
|
||||
<HighlightTexture file="Interface\Buttons\UI-Common-MouseHilight" alphaMode="ADD">
|
||||
<Size x="30" y="30"/>
|
||||
<Anchors>
|
||||
<Anchor point="CENTER" x="0" y="0"/>
|
||||
</Anchors>
|
||||
</HighlightTexture>
|
||||
</Button>
|
||||
<Button name="CharacterCreateRotateRight">
|
||||
<Size x="36" y="36"/>
|
||||
<Anchors>
|
||||
<Anchor point="CENTER" x="300" y="200"/>
|
||||
</Anchors>
|
||||
<HitRectInsets>
|
||||
<AbsInset left="5" right="5" top="5" bottom="5"/>
|
||||
</HitRectInsets>
|
||||
<Scripts>
|
||||
<OnLoad>
|
||||
self:RegisterForClicks("LeftButtonDown", "LeftButtonUp");
|
||||
</OnLoad>
|
||||
<OnClick>
|
||||
PlaySound("igInventoryRotateCharacter");
|
||||
</OnClick>
|
||||
<OnUpdate>
|
||||
CharacterCreateRotateRight_OnUpdate(self);
|
||||
</OnUpdate>
|
||||
</Scripts>
|
||||
<NormalTexture file="Interface\Glues\CharacterCreate\UI-RotationRight-Big-Up"/>
|
||||
<PushedTexture file="Interface\Glues\CharacterCreate\UI-RotationRight-Big-Down"/>
|
||||
<HighlightTexture file="Interface\Buttons\UI-Common-MouseHilight" alphaMode="ADD">
|
||||
<Size x="30" y="30"/>
|
||||
<Anchors>
|
||||
<Anchor point="CENTER" x="0" y="0"/>
|
||||
</Anchors>
|
||||
</HighlightTexture>
|
||||
</Button>
|
||||
|
||||
<Button name="CharacterCreateRotateLeft30">
|
||||
<Size x="28" y="28"/>
|
||||
<Anchors>
|
||||
<Anchor point="CENTER" x="350" y="200"/>
|
||||
</Anchors>
|
||||
<HitRectInsets>
|
||||
<AbsInset left="5" right="5" top="5" bottom="5"/>
|
||||
</HitRectInsets>
|
||||
<Scripts>
|
||||
<OnLoad>
|
||||
self:RegisterForClicks("LeftButtonDown");
|
||||
</OnLoad>
|
||||
<OnClick>
|
||||
PlaySound("igInventoryRotateCharacter");
|
||||
CharacterCreate_RotateLeft30();
|
||||
</OnClick>
|
||||
</Scripts>
|
||||
<NormalTexture file="Interface\Glues\CharacterCreate\charactercreate">
|
||||
<TexCoords left="0.256347656" right="0.294921875" top="0.921386719" bottom="0.956542969"/>
|
||||
</NormalTexture>
|
||||
<PushedTexture file="Interface\Glues\CharacterCreate\charactercreate">
|
||||
<TexCoords left="0.218261719" right="0.256835938" top="0.921386719" bottom="0.957031250"/>
|
||||
</PushedTexture>
|
||||
<HighlightTexture file="Interface\Buttons\UI-Common-MouseHilight" alphaMode="ADD">
|
||||
<Size x="30" y="30"/>
|
||||
<Anchors>
|
||||
<Anchor point="CENTER" x="0" y="0"/>
|
||||
</Anchors>
|
||||
</HighlightTexture>
|
||||
</Button>
|
||||
|
||||
<Button name="CharacterCreateRotateRight30">
|
||||
<Size x="28" y="28"/>
|
||||
<Anchors>
|
||||
<Anchor point="CENTER" x="400" y="200"/>
|
||||
</Anchors>
|
||||
<HitRectInsets>
|
||||
<AbsInset left="5" right="5" top="5" bottom="5"/>
|
||||
</HitRectInsets>
|
||||
<Scripts>
|
||||
<OnLoad>
|
||||
self:RegisterForClicks("LeftButtonDown");
|
||||
</OnLoad>
|
||||
<OnClick>
|
||||
PlaySound("igInventoryRotateCharacter");
|
||||
CharacterCreate_RotateRight30();
|
||||
</OnClick>
|
||||
</Scripts>
|
||||
<NormalTexture file="Interface\Glues\CharacterCreate\charactercreate">
|
||||
<TexCoords left="0.256835938" right="0.295410156" top="0.958007813" bottom="0.994140625"/>
|
||||
</NormalTexture>
|
||||
<PushedTexture file="Interface\Glues\CharacterCreate\charactercreate">
|
||||
<TexCoords left="0.218750000" right="0.257324219" top="0.958007813" bottom="0.994140625"/>
|
||||
</PushedTexture>
|
||||
<HighlightTexture file="Interface\Buttons\UI-Common-MouseHilight" alphaMode="ADD">
|
||||
<Size x="30" y="30"/>
|
||||
<Anchors>
|
||||
<Anchor point="CENTER" x="0" y="0"/>
|
||||
</Anchors>
|
||||
</HighlightTexture>
|
||||
</Button>
|
||||
|
||||
<Button name="CharCreatePersonalizeButton" inherits="GlueButtonTemplate" text="CHARACTER_CREATE_CUSTOMIZE">
|
||||
<Anchors>
|
||||
<Anchor point="BOTTOMRIGHT" x="-40" y="20"/>
|
||||
</Anchors>
|
||||
<Size x="150" y="50"/>
|
||||
<Layers>
|
||||
<Layer level="OVERLAY">
|
||||
<Texture name="$parentIcon" file="Interface\Glues\Common\Arrow">
|
||||
<Size x="20" y="20"/>
|
||||
<Anchors>
|
||||
<Anchor point="RIGHT" x="-13" y="2"/>
|
||||
</Anchors>
|
||||
</Texture>
|
||||
</Layer>
|
||||
</Layers>
|
||||
<Scripts>
|
||||
<OnClick>
|
||||
CharacterCreate_TogglePersonalization();
|
||||
</OnClick>
|
||||
</Scripts>
|
||||
</Button>
|
||||
|
||||
<Button name="CharCreateOkayButton" inherits="GlueButtonTemplate" text="CHARACTER_CREATE_ACCEPT" hidden="true">
|
||||
<Size x="150" y="50"/>
|
||||
<Anchors>
|
||||
<Anchor point="BOTTOMRIGHT" x="-40" y="20"/>
|
||||
</Anchors>
|
||||
<Layers>
|
||||
<Layer level="OVERLAY">
|
||||
<Texture name="$parentIcon" file="Interface\Glues\Common\Arrow">
|
||||
<Size x="20" y="20"/>
|
||||
<Anchors>
|
||||
<Anchor point="RIGHT" x="-30" y="2"/>
|
||||
</Anchors>
|
||||
</Texture>
|
||||
</Layer>
|
||||
</Layers>
|
||||
<Scripts>
|
||||
<OnClick>
|
||||
CharacterCreate_Okay();
|
||||
</OnClick>
|
||||
</Scripts>
|
||||
</Button>
|
||||
|
||||
<Button name="CharCreateBackButton" inherits="GlueButtonTemplate" text="BACK">
|
||||
<Size x="150" y="50"/>
|
||||
<Anchors>
|
||||
<Anchor point="BOTTOMLEFT" x="40" y="20"/>
|
||||
</Anchors>
|
||||
<Layers>
|
||||
<Layer level="OVERLAY">
|
||||
<Texture name="$parentIcon" file="Interface\Glues\Common\Arrow">
|
||||
<Size x="20" y="20"/>
|
||||
<Anchors>
|
||||
<Anchor point="LEFT" x="38" y="2"/>
|
||||
</Anchors>
|
||||
<TexCoords left="1.0" right="0.0" top="0.0" bottom="1.0"/>
|
||||
</Texture>
|
||||
</Layer>
|
||||
</Layers>
|
||||
<Scripts>
|
||||
<OnClick>
|
||||
CharacterCreate_Back();
|
||||
</OnClick>
|
||||
<OnUpdate>
|
||||
CharacterCreate_DeathKnightSwap(self);
|
||||
</OnUpdate>
|
||||
</Scripts>
|
||||
</Button>
|
||||
|
||||
</Frames>
|
||||
<Scripts>
|
||||
<OnMouseDown>
|
||||
CharacterCreateFrame_OnMouseDown(button);
|
||||
</OnMouseDown>
|
||||
<OnMouseUp>
|
||||
CharacterCreateFrame_OnMouseUp(button);
|
||||
</OnMouseUp>
|
||||
<OnUpdate>
|
||||
CharacterCreateFrame_OnUpdate();
|
||||
</OnUpdate>
|
||||
</Scripts>
|
||||
</Frame>
|
||||
</Frames>
|
||||
<Scripts>
|
||||
<OnLoad>
|
||||
CharacterCreate_OnLoad(self);
|
||||
</OnLoad>
|
||||
<OnShow>
|
||||
CharacterCreate_OnShow();
|
||||
CharacterCreateRandomName:Show();
|
||||
</OnShow>
|
||||
<OnHide>
|
||||
CharacterCreate_OnHide();
|
||||
</OnHide>
|
||||
<OnChar>
|
||||
CharacterCreate_OnChar();
|
||||
</OnChar>
|
||||
<OnKeyDown>
|
||||
CharacterCreate_OnKeyDown(key);
|
||||
</OnKeyDown>
|
||||
<OnUpdateModel>
|
||||
CharacterCreate_UpdateModel(self);
|
||||
</OnUpdateModel>
|
||||
</Scripts>
|
||||
</ModelFFX>
|
||||
</Ui>
|
||||
@@ -1,424 +0,0 @@
|
||||
-- ============================================================================
|
||||
-- Character info used by glue tooltips and class/race descriptions.
|
||||
-- ============================================================================
|
||||
|
||||
local Races_Informations = {
|
||||
[1] = {
|
||||
Name = "Человек",
|
||||
Description = "Люди - молодая и потому очень универсальная раса. Они одинаково хорошо владеют боевым искусством, ремеслами и магией. Мужество и оптимизм помогли им возвести одни из величайших королевств мира. В эту беспокойную эпоху, после поколений войн, люди стремятся вернуть былую славу и построить новое светлое будущее.",
|
||||
Spell_1 = {name = "Каждый за себя", icon = "spell_shadow_charm", description = "Снимает все эффекты, затрудняющие передвижение, а также все эффекты потери контроля над персонажем."},
|
||||
Spell_2 = {name = "Специализация на мечах", icon = "ability_meleedamage", description = "Мастерство владения мечами и двуручными мечами повышается на 3."},
|
||||
Spell_3 = {name = "Специализация на дробящем оружии", icon = "inv_hammer_05", description = "Мастерство владения булавами и двуручными булавами повышается на 3."},
|
||||
Spell_4 = {name = "Человеческий дух", icon = "inv_enchant_shardbrilliantsmall", description = "Показатель духа увеличивается на 3%."},
|
||||
Spell_5 = {name = "Внимательность", icon = "spell_nature_sleep", description = "Повышает вашу способность обнаруживать скрытность."},
|
||||
Spell_6 = {name = "Дипломатия", icon = "inv_misc_note_02", description = "Получаемая репутация увеличивается на 10%."},
|
||||
},
|
||||
[2] = {
|
||||
Name = "Дворф",
|
||||
Description = "Когда-то дворфов интересовали лишь богатства, скрытые в недрах земли. Именно так они нашли следы божественной расы, которая, возможно, и даровала им жизнь. Потрясенные открытием, дворфы посвятили себя поиску утраченных артефактов и древних знаний. Сегодня дворфские археологи встречаются по всему миру.",
|
||||
Spell_1 = {name = "Специализация на дробящем оружии", icon = "inv_hammer_05", description = "Мастерство владения булавами и двуручными булавами повышается на 5."},
|
||||
Spell_2 = {name = "Каменная форма", icon = "spell_shadow_unholystrength", description = "Снимает все эффекты яда, болезни и кровотечения, а также увеличивает броню на 10% на 0,1 сек."},
|
||||
Spell_3 = {name = "Специализация на огнестрельном оружии", icon = "inv_musket_03", description = "Вероятность критического удара из огнестрельного оружия повышается на 1%."},
|
||||
Spell_4 = {name = "Сопротивление магии льда", icon = "spell_frost_wizardmark", description = "Снижает вероятность быть пораженным заклинаниями льда на 2%."},
|
||||
Spell_5 = {name = "Поиск сокровищ", icon = "racial_dwarf_findtreasure", description = "Позволяет дворфу ощущать близлежащие сокровища и показывает их на миникарте. Действует до отмены."},
|
||||
},
|
||||
[3] = {
|
||||
Name = "Ночной эльф",
|
||||
Description = "Десять тысяч лет назад ночные эльфы создали огромную империю, но безрассудное использование первородной магии привело ее к гибели. Потрясенные случившимся, они ушли в леса и скрывались там до возвращения своего древнего врага - Пылающего Легиона. Тогда ночные эльфы были вынуждены покинуть уединение и вновь сразиться за свое место в новом мире.",
|
||||
Spell_1 = {name = "Слиться с тенью", icon = "ability_ambush", description = "Позволяет слиться с тенями, снижая вероятность обнаружения врагами. Действует до отмены или движения. После отмены угроза к противникам в бою восстанавливается."},
|
||||
Spell_2 = {name = "Неуловимость", icon = "ability_racial_ultravision", description = "Снижает вероятность обнаружения, пока вы находитесь в скрытности или под действием способности \"Слиться с тенью\"."},
|
||||
Spell_3 = {name = "Сопротивление силам природы", icon = "spell_nature_spiritarmor", description = "Снижает вероятность быть пораженным заклинаниями природы на 2%."},
|
||||
Spell_4 = {name = "Расторопность", icon = "ability_racial_shadowmeld", description = "Снижает вероятность быть пораженным атаками ближнего и дальнего боя на 2%."},
|
||||
Spell_5 = {name = "Огонек", icon = "spell_nature_wispsplode", description = "После смерти вы превращаетесь в огонька, а скорость передвижения увеличивается на 75%."},
|
||||
},
|
||||
[4] = {
|
||||
Name = "Гном",
|
||||
Description = "Несмотря на малый рост, гномы Хаз Модана сумели вписать себя в историю благодаря выдающемуся уму. Их подземное королевство Гномреган когда-то считалось чудом паровой техники. Но даже это не спасло город от нашествия троггов. Теперь создатели этого чуда странствуют по землям дворфов и помогают союзникам всем, чем могут.",
|
||||
Spell_1 = {name = "Мастер побега", icon = "ability_rogue_trip", description = "Позволяет освободиться от любого эффекта, обездвиживающего вас или замедляющего скорость передвижения."},
|
||||
Spell_2 = {name = "Сопротивление тайной магии", icon = "spell_nature_wispsplode", description = "Снижает вероятность быть пораженным заклинаниями тайной магии на 2%."},
|
||||
Spell_3 = {name = "Пытливый ум", icon = "inv_enchant_essenceeternallarge", description = "Показатель интеллекта увеличивается на 5%."},
|
||||
Spell_4 = {name = "Специализация в инженерном деле", icon = "inv_misc_gear_01", description = "Навык инженерного дела повышается на 15."},
|
||||
},
|
||||
[5] = {
|
||||
Name = "Дреней",
|
||||
Description = "Покинув родной Аргус, благородные дренеи долгие эпохи спасались от Пылающего Легиона, пока не нашли далекий мир для нового дома. Там они соседствовали с шаманскими орками и назвали планету Дренором. Со временем Легион развратил орков, и те почти уничтожили мирных дренеев. Немногим счастливцам удалось спастись и добраться до Азерота, где теперь они ищут союзников в борьбе против Легиона.",
|
||||
Spell_1 = {name = "Дар наару", icon = "spell_holy_holyprotection", description = "Исцеляет цель в течение 15 сек. Количество исцеления зависит от вашей силы атаки."},
|
||||
Spell_2 = {name = "Огранка самоцветов", icon = "spell_misc_conjuremanajewel", description = "Навык ювелирного дела повышается на 5."},
|
||||
Spell_3 = {name = "Героическое присутствие", icon = "inv_helmet_21", description = "Повышает вероятность попадания всеми атаками и заклинаниями на 1% для вас и членов вашей группы в радиусе 30 м."},
|
||||
Spell_4 = {name = "Сопротивление темной магии", icon = "spell_shadow_detectinvisibility", description = "Снижает вероятность быть пораженным заклинаниями тьмы на 2%."},
|
||||
},
|
||||
[6] = {
|
||||
Name = "Орк",
|
||||
Description = "Орки происходят с планеты Дренор. Этот некогда мирный народ, следовавший шаманским традициям, был порабощен Пылающим Легионом и вынужден вести войну против людей Азерота. Прошли годы, прежде чем орки вырвались из демонической порчи и вновь обрели свободу. Теперь они сражаются за свою честь в мире, который их ненавидит и презирает.",
|
||||
Spell_1 = {name = "Кровавое неистовство", icon = "racial_orc_berserkerstrength", description = "Увеличивает силу атаки на 6%. Длится 15 сек."},
|
||||
Spell_2 = {name = "Командование", icon = "ability_warrior_warcry", description = "Урон, наносимый вашими питомцами, увеличивается на 5%."},
|
||||
Spell_3 = {name = "Твердость", icon = "inv_helmet_23", description = "Дополнительно сокращает длительность эффектов оглушения на 15%."},
|
||||
Spell_4 = {name = "Специализация на топорах", icon = "inv_axe_02", description = "Мастерство владения кистевым оружием, топорами и двуручными топорами повышается на 5."},
|
||||
},
|
||||
[7] = {
|
||||
Name = "Нежить",
|
||||
Description = "Вырвавшись из-под власти Короля-лича, Отрекшиеся ищут способ свергнуть его. Сильвана Ветрокрылая ведет их в жажде мести Плети. Люди тоже стали для них врагом, решив во что бы то ни стало очистить мир от нежити. Даже союзники значат для Отрекшихся немногое: Орда для них - лишь средство достижения собственных мрачных целей.",
|
||||
Spell_1 = {name = "Каннибализм", icon = "ability_racial_cannibalize", description = "При активации восстанавливает 7% от максимального здоровья каждые 2 сек. в течение 10 сек. Работает только рядом с трупами гуманоидов или нежити в радиусе 5 м."},
|
||||
Spell_2 = {name = "Воля Отрекшихся", icon = "spell_shadow_raisedead", description = "Снимает эффекты очарования, страха и сна. Имеет общее время восстановления 45 сек. с аналогичными эффектами."},
|
||||
Spell_3 = {name = "Сопротивление темной магии", icon = "spell_shadow_detectinvisibility", description = "Снижает вероятность быть пораженным заклинаниями тьмы на 2%."},
|
||||
Spell_4 = {name = "Подводное дыхание", icon = "spell_shadow_demonbreath", description = "Время задержки дыхания под водой увеличивается на 233%."},
|
||||
},
|
||||
[8] = {
|
||||
Name = "Таурен",
|
||||
Description = "Таурены неустанно стремятся сохранять равновесие природы и чтить волю почитаемой ими Матери-Земли. Недавно на них обрушились смертоносные кентавры, и таурены были бы уничтожены, если бы не помощь орков. В память об этом кровном долге таурены присоединились к Орде и скрепили союз двух народов.",
|
||||
Spell_1 = {name = "Громовая поступь", icon = "ability_warstomp", description = "Оглушает до 5 противников в радиусе 8 м на 2 сек."},
|
||||
Spell_2 = {name = "Закалка", icon = "spell_nature_unyeildingstamina", description = "Базовый запас здоровья увеличивается на 5%."},
|
||||
Spell_3 = {name = "Сопротивление силам природы", icon = "spell_nature_spiritarmor", description = "Снижает вероятность быть пораженным заклинаниями природы на 2%."},
|
||||
Spell_4 = {name = "Культивация", icon = "inv_misc_flower_01", description = "Навык травничества повышается на 15."},
|
||||
},
|
||||
[9] = {
|
||||
Name = "Тролль",
|
||||
Description = "Свирепые тролли Черного Копья когда-то жили в джунглях Тернистой долины, пока враждебные племена не изгнали их оттуда. Со временем они заключили союз с орками Орды, а молодой вождь Тралл убедил их отправиться вместе с ним в Калимдор. Несмотря на мрачное наследие, тролли Черного Копья заняли почетное место в Орде.",
|
||||
Spell_1 = {name = "Берсерк", icon = "racial_troll_berserk", description = "Увеличивает скорость атаки и произнесения заклинаний на 20% на 10 сек."},
|
||||
Spell_2 = {name = "Регенерация", icon = "spell_nature_regenerate", description = "Скорость восстановления здоровья увеличивается на 10%. 10% обычной регенерации продолжают действовать в бою."},
|
||||
Spell_3 = {name = "Убийство животных", icon = "inv_misc_pelt_bear_ruin_02", description = "Урон, наносимый животным, увеличивается на 5%."},
|
||||
Spell_4 = {name = "Специализация на метательном оружии", icon = "inv_throwingaxe_03", description = "Вероятность критического удара метательным оружием повышается на 1%."},
|
||||
Spell_5 = {name = "Специализация на луках", icon = "inv_weapon_bow_12", description = "Вероятность критического удара из луков повышается на 1%."},
|
||||
Spell_6 = {name = "Ловкость вуду", icon = "inv_misc_idol_02", description = "Сокращает длительность всех эффектов, препятствующих движению, на 15%. Тролли всегда выкручиваются, мон!"},
|
||||
},
|
||||
[10] = {
|
||||
Name = "Эльф крови",
|
||||
Description = "Давным-давно изгнанные высшие эльфы основали Кель'Талас и создали там магический источник - Солнечный Колодец. Его сила наделила их могуществом, но породила опасную зависимость.\n\nГоды спустя Плеть уничтожила Солнечный Колодец и почти весь народ высших эльфов. Теперь, называя себя эльфами крови, эти рассеянные выжившие пытаются восстановить Кель'Талас и ищут новый источник магии, способный утолить их мучительную жажду.",
|
||||
Spell_1 = {name = "Волшебный поток", icon = "spell_shadow_teleport", description = "Заставляет замолчать всех врагов в радиусе 8 м на 2 сек. и восстанавливает 6% маны. Также прерывает заклинания у целей, не являющихся игроками, на 3 сек."},
|
||||
Spell_2 = {name = "Магическое сродство", icon = "inv_enchant_shardglimmeringlarge", description = "Навык наложения чар повышается на 10."},
|
||||
Spell_3 = {name = "Сопротивление магии", icon = "spell_shadow_antimagicshell", description = "Снижает вероятность быть пораженным заклинаниями на 2%."},
|
||||
},
|
||||
}
|
||||
|
||||
local Class_Informations = {
|
||||
[1] = {
|
||||
Name = "Воин",
|
||||
Description = "Воины - мастера ближнего боя, способные использовать огромное количество оружия и доспехов. Их сила и выносливость делают их грозными защитниками, которые могут прикрывать союзников и наносить сокрушительный урон врагам.",
|
||||
Roles = "Ближний бой, Танк.",
|
||||
},
|
||||
[2] = {
|
||||
Name = "Паладин",
|
||||
Description = "Паладины - священные воины, сочетающие рукопашный бой с божественной магией. Они стоят на страже справедливости, исцеляют союзников, укрепляют их благословениями и карают нечестивых силой Света.",
|
||||
Roles = "Ближний бой, Танк, Лекарь.",
|
||||
},
|
||||
[3] = {
|
||||
Name = "Охотник",
|
||||
Description = "Охотники превосходно чувствуют себя в дальнем бою и в дикой природе. Вместе с верными питомцами они выслеживают врагов, расставляют ловушки и поражают цель издалека из луков и огнестрельного оружия.",
|
||||
Roles = "Дальний бой.",
|
||||
},
|
||||
[4] = {
|
||||
Name = "Разбойник",
|
||||
Description = "Разбойники - мастера скрытности и обмана. Они двигаются незаметно, бьют из тени и наносят смертельные критические удары, уходя от ответных атак за счет ловкости и скорости.",
|
||||
Roles = "Ближний бой.",
|
||||
},
|
||||
[5] = {
|
||||
Name = "Жрец",
|
||||
Description = "Жрецы владеют божественной магией и посвящают себя исцелению и защите союзников. При необходимости они также способны обращаться к темным силам, но главная их сила - в восстановлении жизни и духовной поддержке.",
|
||||
Roles = "Дальний бой, Лекарь.",
|
||||
},
|
||||
[6] = {
|
||||
Name = "Рыцарь смерти",
|
||||
Description = "Рыцари смерти - бывшие слуги Короля-лича, овладевшие некромантией и мрачной боевой магией. Они сочетают тяжелое оружие, темные руны и нечестивую силу, чтобы сокрушать врагов на передовой.",
|
||||
Roles = "Ближний бой, Танк.",
|
||||
},
|
||||
[7] = {
|
||||
Name = "Шаман",
|
||||
Description = "Шаманы служат связующим звеном между духами и материальным миром. Они управляют стихиями, призывают тотемы, исцеляют союзников и обрушивают на врагов ярость огня, земли, воды и воздуха.",
|
||||
Roles = "Ближний бой, Дальний бой, Лекарь.",
|
||||
},
|
||||
[8] = {
|
||||
Name = "Маг",
|
||||
Description = "Маги - повелители тайных искусств, способные направлять разрушительную силу льда, огня и чистой арканы. При своей хрупкости они остаются одной из самых опасных сил на поле боя.",
|
||||
Roles = "Дальний бой.",
|
||||
},
|
||||
[9] = {
|
||||
Name = "Чернокнижник",
|
||||
Description = "Чернокнижники заключают сделки с демоническими силами ради могущества. Они призывают демонов, высасывают жизнь из врагов и насылают разрушительную скверну, превращая бой в кошмар для своих противников.",
|
||||
Roles = "Дальний бой.",
|
||||
},
|
||||
[10] = {
|
||||
Name = "Друид",
|
||||
Description = "Друиды - хранители природы, способные принимать разные звериные облики. Их универсальность позволяет им выполнять множество ролей: исцелять, защищать союзников, сражаться в ближнем бою или поражать врагов заклинаниями издали.",
|
||||
Roles = "Ближний бой, Дальний бой, Танк, Лекарь.",
|
||||
},
|
||||
}
|
||||
|
||||
local RaceTooltipPositions = {
|
||||
Alliance = {
|
||||
[1] = {
|
||||
high = {point = "TOPLEFT", relPoint = "TOPRIGHT", x = 20, y = 20},
|
||||
low = {point = "BOTTOMLEFT", relPoint = "TOPRIGHT", x = 20, y = -80},
|
||||
veryLow = {point = "BOTTOMLEFT", relPoint = "TOPRIGHT", x = 20, y = -180},
|
||||
default = {point = "LEFT", relPoint = "RIGHT", x = 20, y = 0},
|
||||
},
|
||||
[2] = {
|
||||
high = {point = "TOPLEFT", relPoint = "TOPRIGHT", x = 20, y = 40},
|
||||
low = {point = "BOTTOMLEFT", relPoint = "TOPRIGHT", x = 20, y = -60},
|
||||
veryLow = {point = "BOTTOMLEFT", relPoint = "TOPRIGHT", x = 20, y = -140},
|
||||
default = {point = "LEFT", relPoint = "RIGHT", x = 20, y = 20},
|
||||
},
|
||||
[3] = {
|
||||
high = {point = "TOPLEFT", relPoint = "TOPRIGHT", x = 20, y = 20},
|
||||
low = {point = "BOTTOMLEFT", relPoint = "TOPRIGHT", x = 20, y = -80},
|
||||
veryLow = {point = "BOTTOMLEFT", relPoint = "TOPRIGHT", x = 20, y = -180},
|
||||
default = {point = "LEFT", relPoint = "RIGHT", x = 20, y = 0},
|
||||
},
|
||||
[4] = {
|
||||
high = {point = "TOPLEFT", relPoint = "TOPRIGHT", x = 20, y = 40},
|
||||
low = {point = "BOTTOMLEFT", relPoint = "TOPRIGHT", x = 20, y = -60},
|
||||
veryLow = {point = "BOTTOMLEFT", relPoint = "TOPRIGHT", x = 20, y = -140},
|
||||
default = {point = "LEFT", relPoint = "RIGHT", x = 20, y = 20},
|
||||
},
|
||||
[5] = {
|
||||
high = {point = "TOPLEFT", relPoint = "TOPRIGHT", x = 20, y = 20},
|
||||
low = {point = "BOTTOMLEFT", relPoint = "TOPRIGHT", x = 20, y = -80},
|
||||
veryLow = {point = "BOTTOMLEFT", relPoint = "TOPRIGHT", x = 20, y = -180},
|
||||
default = {point = "LEFT", relPoint = "RIGHT", x = 20, y = 0},
|
||||
},
|
||||
},
|
||||
Horde = {
|
||||
[6] = {
|
||||
high = {point = "TOPRIGHT", relPoint = "TOPLEFT", x = -20, y = 20},
|
||||
veryLow = {point = "BOTTOMRIGHT", relPoint = "TOPLEFT", x = -20, y = -120},
|
||||
default = {point = "RIGHT", relPoint = "LEFT", x = -20, y = 0},
|
||||
},
|
||||
[7] = {
|
||||
high = {point = "TOPRIGHT", relPoint = "TOPLEFT", x = -20, y = 40},
|
||||
veryLow = {point = "BOTTOMRIGHT", relPoint = "TOPLEFT", x = -20, y = -80},
|
||||
default = {point = "RIGHT", relPoint = "LEFT", x = -20, y = 20},
|
||||
},
|
||||
[8] = {
|
||||
high = {point = "TOPRIGHT", relPoint = "TOPLEFT", x = -20, y = 20},
|
||||
veryLow = {point = "BOTTOMRIGHT", relPoint = "TOPLEFT", x = -20, y = -120},
|
||||
default = {point = "RIGHT", relPoint = "LEFT", x = -20, y = 0},
|
||||
},
|
||||
[9] = {
|
||||
high = {point = "TOPRIGHT", relPoint = "TOPLEFT", x = -20, y = 40},
|
||||
veryLow = {point = "BOTTOMRIGHT", relPoint = "TOPLEFT", x = -20, y = -80},
|
||||
default = {point = "RIGHT", relPoint = "LEFT", x = -20, y = 20},
|
||||
},
|
||||
[10] = {
|
||||
high = {point = "TOPRIGHT", relPoint = "TOPLEFT", x = -20, y = 20},
|
||||
veryLow = {point = "BOTTOMRIGHT", relPoint = "TOPLEFT", x = -20, y = -120},
|
||||
default = {point = "RIGHT", relPoint = "LEFT", x = -20, y = 0},
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
function GetRaceTooltipPosition(raceID, button)
|
||||
local screenHeight = GetScreenHeight()
|
||||
local buttonTop = button:GetTop()
|
||||
local buttonBottom = button:GetBottom()
|
||||
|
||||
local faction = raceID <= 5 and "Alliance" or "Horde"
|
||||
local positions = RaceTooltipPositions[faction][raceID]
|
||||
|
||||
if not positions then
|
||||
return {point = "CENTER", relPoint = "CENTER", x = 0, y = 0}
|
||||
end
|
||||
|
||||
if buttonTop > screenHeight * 0.66 then
|
||||
return positions.high
|
||||
elseif buttonBottom < screenHeight * 0.44 and positions.low then
|
||||
return positions.low
|
||||
elseif buttonBottom < screenHeight * 0.33 and positions.veryLow then
|
||||
return positions.veryLow
|
||||
else
|
||||
return positions.default
|
||||
end
|
||||
end
|
||||
|
||||
local RACE_DATA = {
|
||||
[1] = { glueString = "HUMAN", faction = "Alliance" },
|
||||
[2] = { glueString = "DWARF", faction = "Alliance" },
|
||||
[3] = { glueString = "NIGHT_ELF", faction = "Alliance" },
|
||||
[4] = { glueString = "GNOME", faction = "Alliance" },
|
||||
[5] = { glueString = "DRAENEI", faction = "Alliance" },
|
||||
[6] = { glueString = "ORC", faction = "Horde" },
|
||||
[7] = { glueString = "UNDEAD", faction = "Horde" },
|
||||
[8] = { glueString = "TAUREN", faction = "Horde" },
|
||||
[9] = { glueString = "TROLL", faction = "Horde" },
|
||||
[10] = { glueString = "BLOOD_ELF", faction = "Horde" },
|
||||
}
|
||||
|
||||
local ALLIANCE_RACES = {1, 2, 3, 4, 5}
|
||||
local HORDE_RACES = {6, 7, 8, 9, 10}
|
||||
|
||||
local RACE_NAME_TO_FACTION = {
|
||||
["Человек"] = "Alliance",
|
||||
["Человечка"] = "Alliance",
|
||||
["Humano"] = "Alliance",
|
||||
["Humana"] = "Alliance",
|
||||
["Human"] = "Alliance",
|
||||
["Дворф"] = "Alliance",
|
||||
["Дворфийка"] = "Alliance",
|
||||
["Enano"] = "Alliance",
|
||||
["Enana"] = "Alliance",
|
||||
["Dwarf"] = "Alliance",
|
||||
["Ночной эльф"] = "Alliance",
|
||||
["Ночная эльфийка"] = "Alliance",
|
||||
["Elfo de la noche"] = "Alliance",
|
||||
["Elfa de la noche"] = "Alliance",
|
||||
["Night Elf"] = "Alliance",
|
||||
["Гном"] = "Alliance",
|
||||
["Гномка"] = "Alliance",
|
||||
["Gnomo"] = "Alliance",
|
||||
["Gnoma"] = "Alliance",
|
||||
["Gnome"] = "Alliance",
|
||||
["Дреней"] = "Alliance",
|
||||
["Дренейка"] = "Alliance",
|
||||
["Draenei"] = "Alliance",
|
||||
["Орк"] = "Horde",
|
||||
["Орчиха"] = "Horde",
|
||||
["Orco"] = "Horde",
|
||||
["Orca"] = "Horde",
|
||||
["Orc"] = "Horde",
|
||||
["Нежить"] = "Horde",
|
||||
["No-muerto"] = "Horde",
|
||||
["No Muerto"] = "Horde",
|
||||
["No-muerta"] = "Horde",
|
||||
["Undead"] = "Horde",
|
||||
["Таурен"] = "Horde",
|
||||
["Тауренка"] = "Horde",
|
||||
["Tauren"] = "Horde",
|
||||
["Тролль"] = "Horde",
|
||||
["Троллиха"] = "Horde",
|
||||
["Trol"] = "Horde",
|
||||
["Troll"] = "Horde",
|
||||
["Эльф крови"] = "Horde",
|
||||
["Эльфийка крови"] = "Horde",
|
||||
["Elfo de sangre"] = "Horde",
|
||||
["Elfa de sangre"] = "Horde",
|
||||
["Blood Elf"] = "Horde",
|
||||
}
|
||||
|
||||
local function GetRaceName(raceID)
|
||||
local raceData = RACE_DATA[raceID]
|
||||
if not raceData then
|
||||
return "Человек"
|
||||
end
|
||||
|
||||
return _G[raceData.glueString] or raceData.glueString
|
||||
end
|
||||
|
||||
local function GetFactionForRaceID(raceID)
|
||||
local raceData = RACE_DATA[raceID]
|
||||
return raceData and raceData.faction or "Alliance"
|
||||
end
|
||||
|
||||
local function GetRaceNamesByFaction(faction)
|
||||
local names = {}
|
||||
local raceList = (faction == "Alliance") and ALLIANCE_RACES or HORDE_RACES
|
||||
|
||||
for _, raceID in ipairs(raceList) do
|
||||
table.insert(names, GetRaceName(raceID))
|
||||
end
|
||||
|
||||
return names
|
||||
end
|
||||
|
||||
local AllianceRaces = GetRaceNamesByFaction("Alliance")
|
||||
local HordeRaces = GetRaceNamesByFaction("Horde")
|
||||
|
||||
local function GetCurrentRaceName()
|
||||
local raceID = GetSelectedRace()
|
||||
return GetRaceName(raceID)
|
||||
end
|
||||
|
||||
local function GetRacesByFaction(allowedRaces)
|
||||
local allianceList = {}
|
||||
local hordeList = {}
|
||||
|
||||
for _, race in ipairs(allowedRaces) do
|
||||
local isAlliance = false
|
||||
for _, allianceRace in ipairs(AllianceRaces) do
|
||||
if race == allianceRace then
|
||||
table.insert(allianceList, race)
|
||||
isAlliance = true
|
||||
break
|
||||
end
|
||||
end
|
||||
|
||||
if not isAlliance then
|
||||
for _, hordeRace in ipairs(HordeRaces) do
|
||||
if race == hordeRace then
|
||||
table.insert(hordeList, race)
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
return allianceList, hordeList
|
||||
end
|
||||
|
||||
local RACE_NAME_CACHE = {}
|
||||
|
||||
local function GetFactionForRaceName(raceName)
|
||||
if not raceName then
|
||||
return "Horde"
|
||||
end
|
||||
|
||||
if RACE_NAME_CACHE[raceName] then
|
||||
return RACE_NAME_CACHE[raceName]
|
||||
end
|
||||
|
||||
local faction = RACE_NAME_TO_FACTION[raceName]
|
||||
if faction then
|
||||
RACE_NAME_CACHE[raceName] = faction
|
||||
return faction
|
||||
end
|
||||
|
||||
for _, raceData in pairs(RACE_DATA) do
|
||||
local baseKey = raceData.glueString
|
||||
|
||||
for _, genderKey in ipairs({"", "_MALE", "_FEMALE"}) do
|
||||
local localizedName = _G[baseKey .. genderKey]
|
||||
if localizedName and localizedName == raceName then
|
||||
faction = raceData.faction
|
||||
break
|
||||
end
|
||||
end
|
||||
|
||||
if faction then
|
||||
break
|
||||
end
|
||||
end
|
||||
|
||||
if not faction then
|
||||
faction = "Horde"
|
||||
end
|
||||
|
||||
RACE_NAME_CACHE[raceName] = faction
|
||||
return faction
|
||||
end
|
||||
|
||||
_G.RACE_1 = "Человек"
|
||||
_G.RACE_2 = "Дворф"
|
||||
_G.RACE_3 = "Ночной эльф"
|
||||
_G.RACE_4 = "Гном"
|
||||
_G.RACE_5 = "Дреней"
|
||||
_G.RACE_6 = "Орк"
|
||||
_G.RACE_7 = "Нежить"
|
||||
_G.RACE_8 = "Таурен"
|
||||
_G.RACE_9 = "Тролль"
|
||||
_G.RACE_10 = "Эльф крови"
|
||||
|
||||
_G.Races_Informations = Races_Informations
|
||||
_G.Class_Informations = Class_Informations
|
||||
_G.ClassRaces = ClassRaces or {}
|
||||
_G.GetRaceTooltipPosition = GetRaceTooltipPosition
|
||||
|
||||
_G.GetRaceName = GetRaceName
|
||||
_G.GetFactionForRaceID = GetFactionForRaceID
|
||||
_G.GetRaceNamesByFaction = GetRaceNamesByFaction
|
||||
_G.GetCurrentRaceName = GetCurrentRaceName
|
||||
_G.GetRacesByFaction = GetRacesByFaction
|
||||
|
||||
_G.ALLIANCE_RACES = ALLIANCE_RACES
|
||||
_G.HORDE_RACES = HORDE_RACES
|
||||
_G.RACE_DATA = RACE_DATA
|
||||
_G.AllianceRaces = AllianceRaces
|
||||
_G.HordeRaces = HordeRaces
|
||||
|
||||
_G.GetFactionForRaceName = GetFactionForRaceName
|
||||
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@@ -1,106 +0,0 @@
|
||||
<!-- MoonWell -->
|
||||
<Ui xmlns="http://www.blizzard.com/wow/ui/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.blizzard.com/wow/ui/
|
||||
..\FrameXML\UI.xsd">
|
||||
<!-- This function is called when a script error occurs -->
|
||||
<Script>
|
||||
function _ERRORMESSAGE(message)
|
||||
debuginfo();
|
||||
if ( not ScriptErrors:IsShown() ) then
|
||||
ScriptErrors_Message:SetText(message);
|
||||
ScriptErrors:Show();
|
||||
end
|
||||
return message;
|
||||
end
|
||||
function message(text)
|
||||
_ERRORMESSAGE(text);
|
||||
end
|
||||
seterrorhandler(_ERRORMESSAGE);
|
||||
</Script>
|
||||
<Texture name="DialogButtonNormalTexture" file="Interface\Buttons\UI-Panel-Button-Up" virtual="true">
|
||||
<TexCoords left="0" right="0.625" top="0" bottom="0.6875"/>
|
||||
</Texture>
|
||||
<Texture name="DialogButtonPushedTexture" file="Interface\Buttons\UI-Panel-Button-Down" virtual="true">
|
||||
<TexCoords left="0" right="0.625" top="0" bottom="0.6875"/>
|
||||
</Texture>
|
||||
<Texture name="DialogButtonDisabledTexture" file="Interface\Buttons\UI-Panel-Button-Disabled" virtual="true">
|
||||
<TexCoords left="0" right="0.625" top="0" bottom="0.6875"/>
|
||||
</Texture>
|
||||
<Texture name="DialogButtonHighlightTexture" file="Interface\Buttons\UI-Panel-Button-Highlight" alphaMode="ADD" virtual="true">
|
||||
<TexCoords left="0" right="0.625" top="0" bottom="0.6875"/>
|
||||
</Texture>
|
||||
<Button name="GlueMenuButtonTemplate" virtual="true">
|
||||
<Size>
|
||||
<AbsDimension x="128" y="24"/>
|
||||
</Size>
|
||||
<NormalTexture inherits="DialogButtonNormalTexture"/>
|
||||
<PushedTexture inherits="DialogButtonPushedTexture"/>
|
||||
<DisabledTexture inherits="DialogButtonDisabledTexture"/>
|
||||
<HighlightTexture inherits="DialogButtonHighlightTexture"/>
|
||||
<NormalFont style="DialogButtonNormalText"/>
|
||||
<HighlightFont style="DialogButtonHighlightText"/>
|
||||
<DisabledFont style="GlueFontDisable"/>
|
||||
</Button>
|
||||
<Frame name="DialogBoxFrame" virtual="true" toplevel="true" frameStrata="DIALOG" hidden="true">
|
||||
<Anchors>
|
||||
<Anchor point="CENTER"/>
|
||||
</Anchors>
|
||||
<Backdrop bgFile="Interface\DialogFrame\UI-DialogBox-Background" edgeFile="Interface\DialogFrame\UI-DialogBox-Border" tile="true">
|
||||
<EdgeSize>
|
||||
<AbsValue val="16"/>
|
||||
</EdgeSize>
|
||||
<TileSize>
|
||||
<AbsValue val="16"/>
|
||||
</TileSize>
|
||||
<BackgroundInsets>
|
||||
<AbsInset left="4" right="4" top="4" bottom="4"/>
|
||||
</BackgroundInsets>
|
||||
</Backdrop>
|
||||
<Frames>
|
||||
<Button name="$parentButton">
|
||||
<Size>
|
||||
<AbsDimension x="128" y="32"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="BOTTOM">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="16"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnClick>
|
||||
self:GetParent():Hide();
|
||||
</OnClick>
|
||||
</Scripts>
|
||||
<NormalTexture inherits="DialogButtonNormalTexture"/>
|
||||
<PushedTexture inherits="DialogButtonPushedTexture"/>
|
||||
<HighlightTexture inherits="DialogButtonHighlightTexture"/>
|
||||
<ButtonText text="OKAY"/>
|
||||
<NormalFont style="DialogButtonNormalText"/>
|
||||
<HighlightFont style="DialogButtonHighlightText"/>
|
||||
</Button>
|
||||
</Frames>
|
||||
</Frame>
|
||||
<!-- This is the general scripting error dialog -->
|
||||
<Frame name="ScriptErrors" inherits="DialogBoxFrame">
|
||||
<Size>
|
||||
<AbsDimension x="384" y="228"/>
|
||||
</Size>
|
||||
<Layers>
|
||||
<Layer level="ARTWORK">
|
||||
<FontString name="ScriptErrors_Message" inherits="GlueFontRedLarge" justifyH="CENTER" justifyV="TOP" nonspacewrap="true">
|
||||
<Size>
|
||||
<AbsDimension x="360" y="0"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOP">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-16"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</FontString>
|
||||
</Layer>
|
||||
</Layers>
|
||||
</Frame>
|
||||
</Ui>
|
||||
@@ -1,29 +0,0 @@
|
||||
SECONDS_PER_PULSE = 1;
|
||||
|
||||
function GlueButtonMaster_OnUpdate(self, elapsed)
|
||||
if ( _G[self:GetName().."Glow"]:IsShown() ) then
|
||||
local sign = self.pulseSign;
|
||||
local counter;
|
||||
|
||||
if ( not self.pulsing ) then
|
||||
counter = 0;
|
||||
self.pulsing = 1;
|
||||
sign = 1;
|
||||
else
|
||||
counter = self.pulseCounter + (sign * elapsed);
|
||||
if ( counter > SECONDS_PER_PULSE ) then
|
||||
counter = SECONDS_PER_PULSE;
|
||||
sign = -sign;
|
||||
elseif ( counter < 0) then
|
||||
counter = 0;
|
||||
sign = -sign;
|
||||
end
|
||||
end
|
||||
|
||||
local alpha = counter / SECONDS_PER_PULSE;
|
||||
_G[self:GetName().."Glow"]:SetVertexColor(1.0, 1.0, 1.0, alpha);
|
||||
|
||||
self.pulseSign = sign;
|
||||
self.pulseCounter = counter;
|
||||
end
|
||||
end
|
||||
@@ -1,130 +0,0 @@
|
||||
<!-- MoonWell -->
|
||||
<Ui xmlns="http://www.blizzard.com/wow/ui/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.blizzard.com/wow/ui/
|
||||
..\FrameXML\UI.xsd">
|
||||
<Script file="GlueButtons.lua"/>
|
||||
<Button name="GlueButtonMasterTemplate" virtual="true" hidden="false">
|
||||
<Scripts>
|
||||
<OnLoad>
|
||||
self.pulseCounter = 0;
|
||||
self.pulseSign = 1;
|
||||
</OnLoad>
|
||||
<OnUpdate>
|
||||
GlueButtonMaster_OnUpdate(self, elapsed);
|
||||
</OnUpdate>
|
||||
<OnEnter>
|
||||
_G[self:GetName().."Rays"]:Show();
|
||||
self.startPulse = 1;
|
||||
</OnEnter>
|
||||
<OnLeave>
|
||||
_G[self:GetName().."Rays"]:Hide();
|
||||
self.startPulse = nil;
|
||||
</OnLeave>
|
||||
</Scripts>
|
||||
</Button>
|
||||
|
||||
<Texture name="GluePanelButtonUpTexture" file="Interface\Glues\Common\Glue-Panel-Button-Up" virtual="true">
|
||||
<TexCoords left="0" right="0.578125" top="0" bottom="0.75"/>
|
||||
</Texture>
|
||||
<Texture name="GluePanelButtonDownTexture" file="Interface\Glues\Common\Glue-Panel-Button-Down" virtual="true">
|
||||
<TexCoords left="0" right="0.578125" top="0" bottom="0.75"/>
|
||||
</Texture>
|
||||
<Texture name="GluePanelButtonDisabledTexture" file="Interface\Glues\Common\Glue-Panel-Button-Disabled" virtual="true">
|
||||
<TexCoords left="0" right="0.578125" top="0" bottom="0.75"/>
|
||||
</Texture>
|
||||
<Texture name="GluePanelButtonHighlightTexture" file="Interface\Glues\Common\Glue-Panel-Button-Highlight" alphaMode="ADD" virtual="true">
|
||||
<TexCoords left="0" right="0.625" top="0" bottom="0.6875"/>
|
||||
</Texture>
|
||||
<Texture name="GluePanelButtonUpTextureBlue" file="Interface\Glues\Common\Glue-Panel-Button-Up-Blue" virtual="true">
|
||||
<TexCoords left="0" right="0.578125" top="0" bottom="0.75"/>
|
||||
</Texture>
|
||||
<Texture name="GluePanelButtonDownTextureBlue" file="Interface\Glues\Common\Glue-Panel-Button-Down-Blue" virtual="true">
|
||||
<TexCoords left="0" right="0.578125" top="0" bottom="0.75"/>
|
||||
</Texture>
|
||||
<Texture name="GluePanelButtonHighlightTextureBlue" file="Interface\Glues\Common\Glue-Panel-Button-Highlight-Blue" alphaMode="ADD" virtual="true">
|
||||
<TexCoords left="0" right="0.625" top="0" bottom="0.6875"/>
|
||||
</Texture>
|
||||
<Button name="GlueButtonTemplate" virtual="true">
|
||||
<Size>
|
||||
<AbsDimension x="170" y="45"/>
|
||||
</Size>
|
||||
<ButtonText>
|
||||
<Anchors>
|
||||
<Anchor point="CENTER">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="3"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</ButtonText>
|
||||
<NormalFont style="GlueFontNormal"/>
|
||||
<HighlightFont style="GlueFontHighlight"/>
|
||||
<DisabledFont style="GlueFontDisable"/>
|
||||
<NormalTexture inherits="GluePanelButtonUpTexture"/>
|
||||
<PushedTexture inherits="GluePanelButtonDownTexture"/>
|
||||
<DisabledTexture inherits="GluePanelButtonDisabledTexture"/>
|
||||
<HighlightTexture inherits="GluePanelButtonHighlightTexture" alphaMode="ADD"/>
|
||||
</Button>
|
||||
<Button name="GlueButtonTemplateBlue" virtual="true">
|
||||
<Size>
|
||||
<AbsDimension x="170" y="45"/>
|
||||
</Size>
|
||||
<ButtonText>
|
||||
<Anchors>
|
||||
<Anchor point="CENTER">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="3"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</ButtonText>
|
||||
<NormalFont style="GlueFontNormal"/>
|
||||
<HighlightFont style="GlueFontHighlight"/>
|
||||
<DisabledFont style="GlueFontDisable"/>
|
||||
<NormalTexture inherits="GluePanelButtonUpTextureBlue"/>
|
||||
<PushedTexture inherits="GluePanelButtonDownTextureBlue"/>
|
||||
<DisabledTexture inherits="GluePanelButtonDisabledTexture"/>
|
||||
<HighlightTexture inherits="GluePanelButtonHighlightTextureBlue" alphaMode="ADD"/>
|
||||
</Button>
|
||||
<Button name="GlueButtonSmallTemplate" virtual="true">
|
||||
<Size>
|
||||
<AbsDimension x="150" y="38"/>
|
||||
</Size>
|
||||
<ButtonText>
|
||||
<Anchors>
|
||||
<Anchor point="CENTER">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="3"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</ButtonText>
|
||||
<NormalFont style="GlueFontNormalSmall"/>
|
||||
<HighlightFont style="GlueFontHighlightSmall"/>
|
||||
<DisabledFont style="GlueFontDisableSmall"/>
|
||||
<NormalTexture inherits="GluePanelButtonUpTexture"/>
|
||||
<PushedTexture inherits="GluePanelButtonDownTexture"/>
|
||||
<DisabledTexture inherits="GluePanelButtonDisabledTexture"/>
|
||||
<HighlightTexture inherits="GluePanelButtonHighlightTexture" alphaMode="ADD"/>
|
||||
</Button>
|
||||
<Button name="GlueButtonSmallTemplateBlue" virtual="true">
|
||||
<Size>
|
||||
<AbsDimension x="150" y="38"/>
|
||||
</Size>
|
||||
<ButtonText>
|
||||
<Anchors>
|
||||
<Anchor point="CENTER">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="3"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</ButtonText>
|
||||
<NormalFont style="GlueFontNormalSmall"/>
|
||||
<HighlightFont style="GlueFontHighlightSmall"/>
|
||||
<DisabledFont style="GlueFontDisableSmall"/>
|
||||
<NormalTexture inherits="GluePanelButtonUpTextureBlue"/>
|
||||
<PushedTexture inherits="GluePanelButtonDownTextureBlue"/>
|
||||
<DisabledTexture inherits="GluePanelButtonDisabledTexture"/>
|
||||
<HighlightTexture inherits="GluePanelButtonHighlightTextureBlue" alphaMode="ADD"/>
|
||||
</Button>
|
||||
</Ui>
|
||||
@@ -1,742 +0,0 @@
|
||||
-- ============================================================================
|
||||
-- MoonWell
|
||||
-- ============================================================================
|
||||
MAX_NUM_GLUE_DIALOG_BUTTONS = 3;
|
||||
|
||||
GlueDialogTypes = { };
|
||||
|
||||
GlueDialogTypes["SYSTEM_INCOMPATIBLE_SSE"] = {
|
||||
text = SYSTEM_INCOMPATIBLE_SSE,
|
||||
button1 = OKAY,
|
||||
html = 1,
|
||||
showAlert = 1,
|
||||
escapeHides = true,
|
||||
OnAccept = function ()
|
||||
end,
|
||||
OnCancel = function()
|
||||
end,
|
||||
}
|
||||
|
||||
GlueDialogTypes["CANCEL_RESET_SETTINGS"] = {
|
||||
text = CANCEL_RESET_SETTINGS,
|
||||
button1 = OKAY,
|
||||
button2 = CANCEL,
|
||||
escapeHides = true,
|
||||
OnAccept = function ()
|
||||
AccountLoginUIResetFrame:Hide();
|
||||
-- Switch the reset settings button back to reset mode
|
||||
OptionsSelectResetSettingsButton:SetText(RESET_SETTINGS);
|
||||
OptionsSelectResetSettingsButton:SetScript("OnClick", OptionsSelectResetSettingsButton_OnClick_Reset);
|
||||
SetClearConfigData(false);
|
||||
end,
|
||||
OnCancel = function()
|
||||
end,
|
||||
}
|
||||
|
||||
GlueDialogTypes["RESET_SERVER_SETTINGS"] = {
|
||||
text = RESET_SERVER_SETTINGS,
|
||||
button1 = OKAY,
|
||||
button2 = CANCEL,
|
||||
escapeHides = true,
|
||||
OnAccept = function ()
|
||||
AccountLoginUIResetFrame:Show();
|
||||
-- Switch the reset settings button to cancel mode
|
||||
OptionsSelectResetSettingsButton:SetText(CANCEL_RESET);
|
||||
OptionsSelectResetSettingsButton:SetScript("OnClick", OptionsSelectResetSettingsButton_OnClick_Cancel);
|
||||
SetClearConfigData(true);
|
||||
end,
|
||||
OnCancel = function ()
|
||||
end,
|
||||
}
|
||||
|
||||
GlueDialogTypes["CONFIRM_RESET_VIDEO_SETTINGS"] = {
|
||||
text = CONFIRM_RESET_SETTINGS,
|
||||
button1 = ALL_SETTINGS,
|
||||
button2 = CURRENT_SETTINGS,
|
||||
button3 = CANCEL,
|
||||
showAlert = 1,
|
||||
OnAccept = function ()
|
||||
VideoOptionsFrame_SetAllToDefaults();
|
||||
end,
|
||||
OnCancel = function ()
|
||||
VideoOptionsFrame_SetCurrentToDefaults();
|
||||
end,
|
||||
OnAlt = function() end,
|
||||
escapeHides = true,
|
||||
}
|
||||
|
||||
GlueDialogTypes["CONFIRM_RESET_AUDIO_SETTINGS"] = {
|
||||
text = CONFIRM_RESET_SETTINGS,
|
||||
button1 = ALL_SETTINGS,
|
||||
button2 = CURRENT_SETTINGS,
|
||||
button3 = CANCEL,
|
||||
showAlert = 1,
|
||||
OnAccept = function ()
|
||||
AudioOptionsFrame_SetAllToDefaults();
|
||||
end,
|
||||
OnCancel = function ()
|
||||
AudioOptionsFrame_SetCurrentToDefaults();
|
||||
end,
|
||||
OnAlt = function() end,
|
||||
escapeHides = true,
|
||||
}
|
||||
|
||||
GlueDialogTypes["CLIENT_RESTART_ALERT"] = {
|
||||
text = CLIENT_RESTART_ALERT,
|
||||
button1 = OKAY,
|
||||
showAlert = 1,
|
||||
}
|
||||
|
||||
GlueDialogTypes["REALM_IS_FULL"] = {
|
||||
text = REALM_IS_FULL_WARNING,
|
||||
button1 = YES,
|
||||
button2 = NO,
|
||||
showAlert = 1,
|
||||
OnAccept = function()
|
||||
SetGlueScreen("charselect");
|
||||
ChangeRealm(RealmList.selectedCategory , RealmList.currentRealm);
|
||||
end,
|
||||
OnCancel = function()
|
||||
CharacterSelect_ChangeRealm();
|
||||
end,
|
||||
}
|
||||
|
||||
GlueDialogTypes["SUGGEST_REALM"] = {
|
||||
text = format(SUGGESTED_REALM_TEXT,"UNKNOWN REALM"),
|
||||
button1 = ACCEPT,
|
||||
button2 = VIEW_ALL_REALMS,
|
||||
OnShow = function()
|
||||
GlueDialogText:SetFormattedText(SUGGESTED_REALM_TEXT, RealmWizard.suggestedRealmName);
|
||||
end,
|
||||
OnAccept = function()
|
||||
SetGlueScreen("charselect");
|
||||
ChangeRealm(RealmWizard.suggestedCategory, RealmWizard.suggestedID);
|
||||
end,
|
||||
OnCancel = function()
|
||||
SetGlueScreen("charselect");
|
||||
CharacterSelect_ChangeRealm();
|
||||
end,
|
||||
}
|
||||
|
||||
GlueDialogTypes["DISCONNECTED"] = {
|
||||
text = DISCONNECTED,
|
||||
button1 = OKAY,
|
||||
button2 = nil,
|
||||
OnShow = function()
|
||||
RealmList:Hide();
|
||||
VirtualKeypadFrame:Hide();
|
||||
SecurityMatrixLoginFrame:Hide();
|
||||
StatusDialogClick();
|
||||
end,
|
||||
OnAccept = function()
|
||||
end,
|
||||
OnCancel = function()
|
||||
end,
|
||||
}
|
||||
|
||||
GlueDialogTypes["PARENTAL_CONTROL"] = {
|
||||
text = AUTH_PARENTAL_CONTROL,
|
||||
button1 = MANAGE_ACCOUNT,
|
||||
button2 = OKAY,
|
||||
OnShow = function()
|
||||
RealmList:Hide();
|
||||
VirtualKeypadFrame:Hide();
|
||||
SecurityMatrixLoginFrame:Hide();
|
||||
StatusDialogClick();
|
||||
end,
|
||||
OnAccept = function()
|
||||
LaunchURL(AUTH_NO_TIME_URL);
|
||||
end,
|
||||
OnCancel = function()
|
||||
StatusDialogClick();
|
||||
end,
|
||||
}
|
||||
|
||||
GlueDialogTypes["INVALID_NAME"] = {
|
||||
text = CHAR_CREATE_INVALID_NAME,
|
||||
button1 = OKAY,
|
||||
button2 = nil,
|
||||
OnAccept = function()
|
||||
end,
|
||||
OnCancel = function()
|
||||
end,
|
||||
}
|
||||
|
||||
GlueDialogTypes["CANCEL"] = {
|
||||
text = "",
|
||||
button1 = CANCEL,
|
||||
button2 = nil,
|
||||
OnAccept = function()
|
||||
StatusDialogClick();
|
||||
end,
|
||||
OnCancel = function()
|
||||
end,
|
||||
}
|
||||
|
||||
GlueDialogTypes["QUEUED_WITH_FCM"] = {
|
||||
text = "",
|
||||
button1 = CANCEL,
|
||||
button2 = QUEUE_FCM_BUTTON,
|
||||
OnAccept = function()
|
||||
StatusDialogClick();
|
||||
end,
|
||||
OnCancel = function()
|
||||
LaunchURL(QUEUE_FCM_URL)
|
||||
end,
|
||||
}
|
||||
|
||||
GlueDialogTypes["OKAY"] = {
|
||||
text = "",
|
||||
button1 = OKAY,
|
||||
button2 = nil,
|
||||
OnShow = function()
|
||||
if ( VirtualKeypadFrame:IsShown() ) then
|
||||
VirtualKeypadFrame:Hide();
|
||||
CancelLogin();
|
||||
end
|
||||
end,
|
||||
OnAccept = function()
|
||||
StatusDialogClick();
|
||||
end,
|
||||
OnCancel = function()
|
||||
end,
|
||||
}
|
||||
|
||||
GlueDialogTypes["OKAY_HTML"] = {
|
||||
text = "",
|
||||
button1 = OKAY,
|
||||
button2 = nil,
|
||||
html = 1,
|
||||
OnShow = function()
|
||||
if ( VirtualKeypadFrame:IsShown() ) then
|
||||
VirtualKeypadFrame:Hide();
|
||||
CancelLogin();
|
||||
end
|
||||
end,
|
||||
OnAccept = function()
|
||||
StatusDialogClick();
|
||||
end,
|
||||
OnCancel = function()
|
||||
end,
|
||||
}
|
||||
|
||||
GlueDialogTypes["OKAY_HTML_EXIT"] = {
|
||||
text = "",
|
||||
button1 = OKAY,
|
||||
button2 = EXIT_GAME,
|
||||
html = 1,
|
||||
OnShow = function()
|
||||
if ( VirtualKeypadFrame:IsShown() ) then
|
||||
VirtualKeypadFrame:Hide();
|
||||
CancelLogin();
|
||||
end
|
||||
end,
|
||||
OnAccept = function()
|
||||
StatusDialogClick();
|
||||
end,
|
||||
OnCancel = function()
|
||||
AccountLogin_Exit();
|
||||
end,
|
||||
}
|
||||
|
||||
GlueDialogTypes["CONFIRM_PAID_SERVICE"] = {
|
||||
text = CONFIRM_PAID_SERVICE,
|
||||
button1 = DONE,
|
||||
button2 = CANCEL,
|
||||
OnAccept = function()
|
||||
CreateCharacter(CharacterCreateNameEdit:GetText());
|
||||
end,
|
||||
OnCancel = function()
|
||||
end,
|
||||
}
|
||||
|
||||
GlueDialogTypes["OKAY_WITH_URL"] = {
|
||||
text = "",
|
||||
button1 = HELP,
|
||||
button2 = OKAY,
|
||||
OnAccept = function()
|
||||
LaunchURL(_G[GlueDialog.data]);
|
||||
end,
|
||||
OnCancel = function()
|
||||
StatusDialogClick();
|
||||
end,
|
||||
}
|
||||
|
||||
GlueDialogTypes["CONNECTION_HELP"] = {
|
||||
text = "",
|
||||
button1 = HELP,
|
||||
button2 = OKAY,
|
||||
OnShow = function()
|
||||
VirtualKeypadFrame:Hide();
|
||||
StatusDialogClick();
|
||||
end,
|
||||
OnAccept = function()
|
||||
AccountLoginUI:Hide();
|
||||
ConnectionHelpFrame:Show();
|
||||
end,
|
||||
OnCancel = function()
|
||||
end,
|
||||
}
|
||||
|
||||
GlueDialogTypes["CONNECTION_HELP_HTML"] = {
|
||||
text = "",
|
||||
button1 = HELP,
|
||||
button2 = OKAY,
|
||||
html = 1,
|
||||
OnShow = function()
|
||||
VirtualKeypadFrame:Hide();
|
||||
StatusDialogClick();
|
||||
end,
|
||||
OnAccept = function()
|
||||
AccountLoginUI:Hide();
|
||||
ConnectionHelpFrame:Show();
|
||||
end,
|
||||
OnCancel = function()
|
||||
end,
|
||||
}
|
||||
|
||||
GlueDialogTypes["CLIENT_ACCOUNT_MISMATCH"] = {
|
||||
button1 = RETURN_TO_LOGIN,
|
||||
button2 = EXIT_GAME,
|
||||
html = 1,
|
||||
OnAccept = function()
|
||||
SetGlueScreen("login");
|
||||
end,
|
||||
OnCancel = function()
|
||||
PlaySound("gsTitleQuit");
|
||||
QuitGame();
|
||||
end,
|
||||
}
|
||||
|
||||
GlueDialogTypes["CLIENT_TRIAL"] = {
|
||||
text = CLIENT_TRIAL,
|
||||
button1 = RETURN_TO_LOGIN,
|
||||
button2 = EXIT_GAME,
|
||||
html = 1,
|
||||
OnAccept = function()
|
||||
SetGlueScreen("login");
|
||||
end,
|
||||
OnCancel = function()
|
||||
PlaySound("gsTitleQuit");
|
||||
QuitGame();
|
||||
end,
|
||||
}
|
||||
|
||||
|
||||
GlueDialogTypes["SCANDLL_DOWNLOAD"] = {
|
||||
text = "",
|
||||
button1 = QUIT,
|
||||
button2 = nil,
|
||||
OnAccept = function()
|
||||
AccountLogin_Exit();
|
||||
end,
|
||||
OnCancel = function()
|
||||
end,
|
||||
}
|
||||
|
||||
GlueDialogTypes["SCANDLL_ERROR"] = {
|
||||
text = "",
|
||||
button1 = SCANDLL_BUTTON_CONTINUEANYWAY,
|
||||
button2 = QUIT,
|
||||
OnAccept = function()
|
||||
GlueDialog:Hide();
|
||||
ScanDLLContinueAnyway();
|
||||
AccountLoginUI:Show();
|
||||
end,
|
||||
OnCancel = function()
|
||||
-- Opposite semantics
|
||||
AccountLogin_Exit();
|
||||
end,
|
||||
}
|
||||
|
||||
GlueDialogTypes["SCANDLL_HACKFOUND"] = {
|
||||
text = "",
|
||||
button1 = SCANDLL_BUTTON_CONTINUEANYWAY,
|
||||
button2 = QUIT,
|
||||
html = 1,
|
||||
showAlert = 1,
|
||||
OnAccept = function()
|
||||
local formatString = _G["SCANDLL_MESSAGE_"..AccountLogin.hackType.."FOUND_CONFIRM"];
|
||||
GlueDialog_Show("SCANDLL_HACKFOUND_CONFIRM", format(formatString, AccountLogin.hackName, AccountLogin.hackURL));
|
||||
end,
|
||||
OnCancel = function()
|
||||
AccountLogin_Exit();
|
||||
end,
|
||||
}
|
||||
|
||||
GlueDialogTypes["SCANDLL_HACKFOUND_NOCONTINUE"] = {
|
||||
text = "",
|
||||
button1 = QUIT,
|
||||
button2 = nil,
|
||||
html = 1,
|
||||
showAlert = 1,
|
||||
OnAccept = function()
|
||||
AccountLogin_Exit();
|
||||
end,
|
||||
OnCancel = function()
|
||||
AccountLogin_Exit();
|
||||
end,
|
||||
}
|
||||
|
||||
GlueDialogTypes["SCANDLL_HACKFOUND_CONFIRM"] = {
|
||||
text = "",
|
||||
button1 = SCANDLL_BUTTON_CONTINUEANYWAY,
|
||||
button2 = QUIT,
|
||||
html = 1,
|
||||
showAlert = 1,
|
||||
OnAccept = function()
|
||||
GlueDialog:Hide();
|
||||
ScanDLLContinueAnyway();
|
||||
AccountLoginUI:Show();
|
||||
end,
|
||||
OnCancel = function()
|
||||
AccountLogin_Exit();
|
||||
end,
|
||||
}
|
||||
|
||||
GlueDialogTypes["SERVER_SPLIT"] = {
|
||||
text = SERVER_SPLIT,
|
||||
button1 = SERVER_SPLIT_SERVER_ONE,
|
||||
button2 = SERVER_SPLIT_SERVER_TWO,
|
||||
button3 = SERVER_SPLIT_NOT_NOW,
|
||||
escapeHides = true;
|
||||
|
||||
OnAccept = function()
|
||||
SetStateRequestInfo( 1 );
|
||||
end,
|
||||
OnCancel = function()
|
||||
SetStateRequestInfo( 2 );
|
||||
end,
|
||||
OnAlt = function()
|
||||
SetStateRequestInfo( 0 );
|
||||
end,
|
||||
}
|
||||
|
||||
GlueDialogTypes["SERVER_SPLIT_WITH_CHOICE"] = {
|
||||
text = SERVER_SPLIT,
|
||||
button1 = SERVER_SPLIT_SERVER_ONE,
|
||||
button2 = SERVER_SPLIT_SERVER_TWO,
|
||||
button3 = SERVER_SPLIT_DONT_CHANGE,
|
||||
escapeHides = true;
|
||||
|
||||
OnAccept = function()
|
||||
SetStateRequestInfo( 1 );
|
||||
end,
|
||||
OnCancel = function()
|
||||
SetStateRequestInfo( 2 );
|
||||
end,
|
||||
OnAlt = function()
|
||||
SetStateRequestInfo( 0 );
|
||||
end,
|
||||
}
|
||||
|
||||
GlueDialogTypes["ACCOUNT_MSG"] = {
|
||||
text = "",
|
||||
button1 = OKAY,
|
||||
button2 = ACCOUNT_MESSAGE_BUTTON_READ,
|
||||
html = 1,
|
||||
escapeHides = true,
|
||||
|
||||
OnShow = function()
|
||||
VirtualKeypadFrame:Hide();
|
||||
StatusDialogClick();
|
||||
end,
|
||||
OnAccept = function()
|
||||
ACCOUNT_MSG_NUM_AVAILABLE = ACCOUNT_MSG_NUM_AVAILABLE - 1;
|
||||
if ( ACCOUNT_MSG_NUM_AVAILABLE > 0 ) then
|
||||
ACCOUNT_MSG_CURRENT_INDEX = AccountMsg_GetIndexNextUnreadMsg(ACCOUNT_MSG_CURRENT_INDEX);
|
||||
ACCOUNT_MSG_BODY_LOADED = false;
|
||||
AccountMsg_LoadBody( ACCOUNT_MSG_CURRENT_INDEX );
|
||||
end
|
||||
StatusDialogClick();
|
||||
end,
|
||||
OnCancel = function()
|
||||
AccountMsg_SetMsgRead(ACCOUNT_MSG_CURRENT_INDEX);
|
||||
ACCOUNT_MSG_NUM_AVAILABLE = ACCOUNT_MSG_NUM_AVAILABLE - 1;
|
||||
if ( ACCOUNT_MSG_NUM_AVAILABLE > 0 ) then
|
||||
ACCOUNT_MSG_CURRENT_INDEX = AccountMsg_GetIndexNextUnreadMsg(ACCOUNT_MSG_CURRENT_INDEX);
|
||||
ACCOUNT_MSG_BODY_LOADED = false;
|
||||
AccountMsg_LoadBody( ACCOUNT_MSG_CURRENT_INDEX );
|
||||
end
|
||||
StatusDialogClick();
|
||||
end,
|
||||
}
|
||||
|
||||
GlueDialogTypes["DECLINE_FAILED"] = {
|
||||
text = "",
|
||||
button1 = OKAY,
|
||||
button2 = nil,
|
||||
OnAccept = function()
|
||||
DeclensionFrame:Show();
|
||||
end,
|
||||
OnCancel = function()
|
||||
end,
|
||||
}
|
||||
|
||||
GlueDialogTypes["REALM_LOCALE_WARNING"] = {
|
||||
text = REALM_TYPE_LOCALE_WARNING,
|
||||
button1 = OKAY,
|
||||
button2 = nil,
|
||||
OnAccept = function()
|
||||
end,
|
||||
OnCancel = function()
|
||||
end,
|
||||
}
|
||||
|
||||
GlueDialogTypes["REALM_TOURNAMENT_WARNING"] = {
|
||||
text = REALM_TYPE_TOURNAMENT_WARNING,
|
||||
button1 = OKAY,
|
||||
button2 = nil,
|
||||
OnAccept = function()
|
||||
end,
|
||||
OnCancel = function()
|
||||
end,
|
||||
}
|
||||
|
||||
function GlueDialog_Show(which, text, data)
|
||||
local dialogInfo = GlueDialogTypes[which];
|
||||
-- Pick a free dialog to use
|
||||
if ( GlueDialog:IsShown() ) then
|
||||
if ( GlueDialog.which ~= which ) then -- We don't actually want to hide, we just want to redisplay?
|
||||
if ( GlueDialogTypes[GlueDialog.which].OnHide ) then
|
||||
GlueDialogTypes[GlueDialog.which].OnHide();
|
||||
end
|
||||
|
||||
GlueDialog:Hide();
|
||||
end
|
||||
end
|
||||
|
||||
GlueDialog.data = data;
|
||||
local glueText;
|
||||
if ( dialogInfo.html ) then
|
||||
glueText = GlueDialogHTML;
|
||||
GlueDialogHTML:Show();
|
||||
GlueDialogText:Hide();
|
||||
else
|
||||
glueText = GlueDialogText;
|
||||
GlueDialogHTML:Hide();
|
||||
GlueDialogText:Show();
|
||||
end
|
||||
|
||||
-- Set the text of the dialog
|
||||
if ( text ) then
|
||||
glueText:SetText(text);
|
||||
else
|
||||
glueText:SetText(dialogInfo.text);
|
||||
end
|
||||
|
||||
-- Set the buttons of the dialog
|
||||
if ( dialogInfo.button3 ) then
|
||||
GlueDialogButton1:ClearAllPoints();
|
||||
GlueDialogButton2:ClearAllPoints();
|
||||
GlueDialogButton3:ClearAllPoints();
|
||||
|
||||
if ( dialogInfo.displayVertical ) then
|
||||
GlueDialogButton3:SetPoint("BOTTOM", "GlueDialogBackground", "BOTTOM", 0, 16);
|
||||
GlueDialogButton2:SetPoint("BOTTOM", "GlueDialogButton3", "TOP", 0, 0);
|
||||
GlueDialogButton1:SetPoint("BOTTOM", "GlueDialogButton2", "TOP", 0, 0);
|
||||
else
|
||||
GlueDialogButton1:SetPoint("BOTTOMLEFT", "GlueDialogBackground", "BOTTOMLEFT", 60, 16);
|
||||
GlueDialogButton2:SetPoint("LEFT", "GlueDialogButton1", "RIGHT", -8, 0);
|
||||
GlueDialogButton3:SetPoint("LEFT", "GlueDialogButton2", "RIGHT", -8, 0);
|
||||
end
|
||||
|
||||
GlueDialogButton2:SetText(dialogInfo.button2);
|
||||
GlueDialogButton2:Show();
|
||||
GlueDialogButton3:SetText(dialogInfo.button3);
|
||||
GlueDialogButton3:Show();
|
||||
elseif ( dialogInfo.button2 ) then
|
||||
GlueDialogButton1:ClearAllPoints();
|
||||
GlueDialogButton2:ClearAllPoints();
|
||||
|
||||
if ( dialogInfo.displayVertical ) then
|
||||
GlueDialogButton2:SetPoint("BOTTOM", "GlueDialogBackground", "BOTTOM", 0, 16);
|
||||
GlueDialogButton1:SetPoint("BOTTOM", "GlueDialogButton2", "TOP", 0, 0);
|
||||
else
|
||||
GlueDialogButton1:SetPoint("BOTTOMRIGHT", "GlueDialogBackground", "BOTTOM", -6, 16);
|
||||
GlueDialogButton2:SetPoint("LEFT", "GlueDialogButton1", "RIGHT", 13, 0);
|
||||
end
|
||||
|
||||
GlueDialogButton2:SetText(dialogInfo.button2);
|
||||
GlueDialogButton2:Show();
|
||||
GlueDialogButton3:Hide();
|
||||
else
|
||||
GlueDialogButton1:ClearAllPoints();
|
||||
GlueDialogButton1:SetPoint("BOTTOM", "GlueDialogBackground", "BOTTOM", 0, 16);
|
||||
GlueDialogButton2:Hide();
|
||||
GlueDialogButton3:Hide();
|
||||
end
|
||||
|
||||
GlueDialogButton1:SetText(dialogInfo.button1);
|
||||
|
||||
-- Set the miscellaneous variables for the dialog
|
||||
GlueDialog.which = which;
|
||||
GlueDialog.data = data;
|
||||
|
||||
-- Show or hide the alert icon
|
||||
if ( dialogInfo.showAlert ) then
|
||||
GlueDialogBackground:SetWidth(GlueDialogBackground.alertWidth);
|
||||
GlueDialogAlertIcon:Show();
|
||||
else
|
||||
GlueDialogBackground:SetWidth(GlueDialogBackground.origWidth);
|
||||
GlueDialogAlertIcon:Hide();
|
||||
end
|
||||
GlueDialogText:SetWidth(GlueDialogText.origWidth);
|
||||
|
||||
-- Editbox setup
|
||||
if ( dialogInfo.hasEditBox ) then
|
||||
GlueDialogEditBox:Show();
|
||||
if ( dialogInfo.maxLetters ) then
|
||||
GlueDialogEditBox:SetMaxLetters(dialogInfo.maxLetters);
|
||||
end
|
||||
if ( dialogInfo.maxBytes ) then
|
||||
GlueDialogEditBox:SetMaxBytes(dialogInfo.maxBytes);
|
||||
end
|
||||
else
|
||||
GlueDialogEditBox:Hide();
|
||||
end
|
||||
|
||||
-- size the width first
|
||||
if( dialogInfo.displayVertical ) then
|
||||
GlueDialogBackground:SetWidth(16 + GlueDialogButton1:GetWidth() + 16);
|
||||
elseif ( dialogInfo.button3 ) then
|
||||
local displayWidth = 45 + GlueDialogButton1:GetWidth() + 8 + GlueDialogButton2:GetWidth() + 8 + GlueDialogButton3:GetWidth() + 45;
|
||||
GlueDialogBackground:SetWidth(displayWidth);
|
||||
GlueDialogText:SetWidth(displayWidth - 40);
|
||||
end
|
||||
|
||||
-- Get the height of the string
|
||||
local textHeight, _;
|
||||
if ( dialogInfo.html ) then
|
||||
_,_,_,textHeight = GlueDialogHTML:GetBoundsRect();
|
||||
else
|
||||
textHeight = GlueDialogText:GetHeight();
|
||||
end
|
||||
|
||||
-- now size the dialog box height
|
||||
if ( dialogInfo.hasEditBox ) then
|
||||
GlueDialogBackground:SetHeight(16 + textHeight + 8 + GlueDialogEditBox:GetHeight() + 8 + GlueDialogButton1:GetHeight() + 16);
|
||||
elseif( dialogInfo.displayVertical ) then
|
||||
local displayHeight = 16 + textHeight + 8 + GlueDialogButton1:GetHeight() + 16;
|
||||
if ( dialogInfo.button2 ) then
|
||||
displayHeight = displayHeight + 8 + GlueDialogButton2:GetHeight();
|
||||
end
|
||||
if ( dialogInfo.button3 ) then
|
||||
displayHeight = displayHeight + 8 + GlueDialogButton3:GetHeight();
|
||||
end
|
||||
GlueDialogBackground:SetHeight(displayHeight);
|
||||
else
|
||||
GlueDialogBackground:SetHeight(16 + textHeight + 8 + GlueDialogButton1:GetHeight() + 16);
|
||||
end
|
||||
|
||||
GlueDialog:Show();
|
||||
end
|
||||
|
||||
function GlueDialog_OnLoad(self)
|
||||
self:RegisterEvent("OPEN_STATUS_DIALOG");
|
||||
self:RegisterEvent("UPDATE_STATUS_DIALOG");
|
||||
self:RegisterEvent("CLOSE_STATUS_DIALOG");
|
||||
GlueDialogText.origWidth = GlueDialogText:GetWidth();
|
||||
GlueDialogBackground.origWidth = GlueDialogBackground:GetWidth();
|
||||
GlueDialogBackground.alertWidth = 600;
|
||||
end
|
||||
|
||||
function GlueDialog_OnShow(self)
|
||||
local OnShow = GlueDialogTypes[self.which].OnShow;
|
||||
if ( OnShow ) then
|
||||
OnShow();
|
||||
end
|
||||
end
|
||||
|
||||
function GlueDialog_OnUpdate(self, elapsed)
|
||||
for i=1, MAX_NUM_GLUE_DIALOG_BUTTONS do
|
||||
button = _G[ "GlueDialogButton"..i ];
|
||||
if ( button and (CURRENT_GLUE_SCREEN == "login") or (CURRENT_GLUE_SCREEN == "realmwizard") or CURRENT_GLUE_SCREEN == "movie" ) then
|
||||
button:SetNormalTexture("Interface\\Glues\\Common\\Glue-Panel-Button-Up-Blue");
|
||||
button:SetPushedTexture("Interface\\Glues\\Common\\Glue-Panel-Button-Down-Blue");
|
||||
button:SetHighlightTexture("Interface\\Glues\\Common\\Glue-Panel-Button-Highlight-Blue");
|
||||
else
|
||||
button:SetNormalTexture("Interface\\Glues\\Common\\Glue-Panel-Button-Up");
|
||||
button:SetPushedTexture("Interface\\Glues\\Common\\Glue-Panel-Button-Down");
|
||||
button:SetHighlightTexture("Interface\\Glues\\Common\\Glue-Panel-Button-Highlight");
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function GlueDialog_OnEvent(self, event, arg1, arg2, arg3)
|
||||
if ( event == "OPEN_STATUS_DIALOG" ) then
|
||||
GlueDialog_Show(arg1, arg2, arg3);
|
||||
elseif ( event == "UPDATE_STATUS_DIALOG" and arg1 and (strlen(arg1) > 0) ) then
|
||||
GlueDialogText:SetText(arg1);
|
||||
local buttonText = nil;
|
||||
if ( arg2 ) then
|
||||
buttonText = arg2;
|
||||
elseif ( GlueDialogTypes[GlueDialog.which] ) then
|
||||
buttonText = GlueDialogTypes[GlueDialog.which].button1;
|
||||
end
|
||||
if ( buttonText ) then
|
||||
GlueDialogButton1:SetText(buttonText);
|
||||
end
|
||||
GlueDialogBackground:SetHeight(32 + GlueDialogText:GetHeight() + 8 + GlueDialogButton1:GetHeight() + 16);
|
||||
elseif ( event == "CLOSE_STATUS_DIALOG" ) then
|
||||
GlueDialog:Hide();
|
||||
end
|
||||
end
|
||||
|
||||
function GlueDialog_OnHide()
|
||||
-- PlaySound("igMainMenuClose");
|
||||
end
|
||||
|
||||
function GlueDialog_OnClick(index)
|
||||
GlueDialog:Hide();
|
||||
if ( index == 1 ) then
|
||||
local OnAccept = GlueDialogTypes[GlueDialog.which].OnAccept;
|
||||
if ( OnAccept ) then
|
||||
OnAccept();
|
||||
end
|
||||
elseif ( index == 2 ) then
|
||||
local OnCancel = GlueDialogTypes[GlueDialog.which].OnCancel;
|
||||
if ( OnCancel ) then
|
||||
OnCancel();
|
||||
end
|
||||
elseif ( index == 3 ) then
|
||||
local OnAlt = GlueDialogTypes[GlueDialog.which].OnAlt;
|
||||
if ( OnAlt ) then
|
||||
OnAlt();
|
||||
end
|
||||
end
|
||||
PlaySound("gsTitleOptionOK");
|
||||
end
|
||||
|
||||
function GlueDialog_OnKeyDown(key)
|
||||
if ( key == "PRINTSCREEN" ) then
|
||||
Screenshot();
|
||||
return;
|
||||
end
|
||||
|
||||
local info = GlueDialogTypes[GlueDialog.which];
|
||||
if ( not info or info.ignoreKeys ) then
|
||||
return;
|
||||
end
|
||||
|
||||
if ( info and info.escapeHides ) then
|
||||
if ( info.hideSound ) then
|
||||
PlaySound(info.hideSound);
|
||||
end
|
||||
GlueDialog:Hide();
|
||||
elseif ( key == "ESCAPE" ) then
|
||||
if ( GlueDialogButton2:IsShown() ) then
|
||||
GlueDialogButton2:Click();
|
||||
else
|
||||
GlueDialogButton1:Click();
|
||||
end
|
||||
if ( info.hideSound ) then
|
||||
PlaySound(info.hideSound);
|
||||
end
|
||||
elseif (key == "ENTER" ) then
|
||||
GlueDialogButton1:Click();
|
||||
if ( info.hideSound ) then
|
||||
PlaySound(info.hideSound);
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -1,179 +0,0 @@
|
||||
<!-- MoonWell -->
|
||||
<Ui xmlns="http://www.blizzard.com/wow/ui/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.blizzard.com/wow/ui/
|
||||
..\FrameXML\UI.xsd">
|
||||
<Script file="GlueDialog.lua"/>
|
||||
<Button name="GlueDialogButtonTemplate" virtual="true">
|
||||
<Size>
|
||||
<AbsDimension x="220" y="40"/>
|
||||
</Size>
|
||||
<Scripts>
|
||||
<OnClick>
|
||||
GlueDialog_OnClick(self:GetID());
|
||||
</OnClick>
|
||||
</Scripts>
|
||||
<ButtonText>
|
||||
<Anchors>
|
||||
<Anchor point="CENTER">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="2"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</ButtonText>
|
||||
<NormalFont style="GlueFontNormal"/>
|
||||
<HighlightFont style="GlueFontHighlight"/>
|
||||
<DisabledFont style="GlueFontDisable"/>
|
||||
<NormalTexture inherits="GluePanelButtonUpTexture"/>
|
||||
<PushedTexture inherits="GluePanelButtonDownTexture"/>
|
||||
<DisabledTexture inherits="GluePanelButtonDisabledTexture"/>
|
||||
<HighlightTexture inherits="GluePanelButtonHighlightTexture"/>
|
||||
</Button>
|
||||
<Frame name="GlueDialog" toplevel="true" parent="GlueParent" setAllPoints="true" enableMouse="true" enableKeyboard="true" frameStrata="DIALOG" hidden="true">
|
||||
<Frames>
|
||||
<Frame name="GlueDialogBackground">
|
||||
<Size>
|
||||
<AbsDimension x="512" y="256"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="CENTER">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="0"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Backdrop bgFile="Interface\DialogFrame\UI-DialogBox-Background" edgeFile="Interface\tooltips\BorderAlert" tile="true">
|
||||
<BackgroundInsets>
|
||||
<AbsInset left="4" right="4" top="4" bottom="4"/>
|
||||
</BackgroundInsets>
|
||||
<TileSize>
|
||||
<AbsValue val="16"/>
|
||||
</TileSize>
|
||||
<EdgeSize>
|
||||
<AbsValue val="16"/>
|
||||
</EdgeSize>
|
||||
</Backdrop>
|
||||
<Layers>
|
||||
<Layer level="ARTWORK">
|
||||
<FontString name="GlueDialogText" inherits="GlueFontNormalLarge">
|
||||
<Size>
|
||||
<AbsDimension x="450" y="0"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOP">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-16"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</FontString>
|
||||
<Texture name="GlueDialogAlertIcon" file="Interface\DialogFrame\UI-Dialog-Icon-AlertNew" hidden="true">
|
||||
<Size>
|
||||
<AbsDimension x="48" y="48"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="LEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="24" y="0"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</Texture>
|
||||
</Layer>
|
||||
</Layers>
|
||||
<Frames>
|
||||
<SimpleHTML name="GlueDialogHTML" hyperlinkFormat="|cff06ff07|H%s|h[%s]|h|r" hidden="true">
|
||||
<Size>
|
||||
<AbsDimension x="450" y="30"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOP">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-16"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnHyperlinkClick>
|
||||
LaunchURL(link);
|
||||
</OnHyperlinkClick>
|
||||
</Scripts>
|
||||
<FontString inherits="GlueFontNormalLarge" spacing="2"/>
|
||||
<FontStringHeader1 inherits="GlueFontNormalLarge" spacing="4"/>
|
||||
<FontStringHeader2 inherits="GlueFontHighlight" spacing="4"/>
|
||||
</SimpleHTML>
|
||||
<Button name="GlueDialogButton1" inherits="GlueDialogButtonTemplate" id="1"/>
|
||||
<Button name="GlueDialogButton2" inherits="GlueDialogButtonTemplate" id="2"/>
|
||||
<Button name="GlueDialogButton3" inherits="GlueDialogButtonTemplate" id="3"/>
|
||||
</Frames>
|
||||
</Frame>
|
||||
<EditBox name="$parentEditBox" historyLines="1" hidden="true">
|
||||
<Size>
|
||||
<AbsDimension x="130" y="32"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="CENTER"/>
|
||||
</Anchors>
|
||||
<Layers>
|
||||
<Layer level="BACKGROUND">
|
||||
<Texture file="Interface\ChatFrame\UI-ChatInputBorder-Left">
|
||||
<Size>
|
||||
<AbsDimension x="75" y="32"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="LEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="-10" y="0"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<TexCoords left="0" right="0.29296875" top="0" bottom="1.0"/>
|
||||
</Texture>
|
||||
<Texture file="Interface\ChatFrame\UI-ChatInputBorder-Right">
|
||||
<Size>
|
||||
<AbsDimension x="75" y="32"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="RIGHT">
|
||||
<Offset>
|
||||
<AbsDimension x="10" y="0"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<TexCoords left="0.70703125" right="1.0" top="0" bottom="1.0"/>
|
||||
</Texture>
|
||||
</Layer>
|
||||
</Layers>
|
||||
<Scripts>
|
||||
<OnEnterPressed>
|
||||
StaticPopup_EditBoxOnEnterPressed();
|
||||
</OnEnterPressed>
|
||||
<OnEscapePressed>
|
||||
StaticPopup_EditBoxOnEscapePressed();
|
||||
</OnEscapePressed>
|
||||
</Scripts>
|
||||
<FontString inherits="GlueFontHighlight"/>
|
||||
</EditBox>
|
||||
</Frames>
|
||||
<Scripts>
|
||||
<OnLoad>
|
||||
GlueDialog_OnLoad(self);
|
||||
</OnLoad>
|
||||
<OnShow>
|
||||
GlueDialog_OnShow(self);
|
||||
self:Raise();
|
||||
</OnShow>
|
||||
<OnUpdate>
|
||||
GlueDialog_OnUpdate(self, elapsed);
|
||||
</OnUpdate>
|
||||
<OnEvent>
|
||||
GlueDialog_OnEvent(self, event, ...);
|
||||
</OnEvent>
|
||||
<OnHide>
|
||||
GlueDialog_OnHide();
|
||||
</OnHide>
|
||||
<OnKeyDown>
|
||||
GlueDialog_OnKeyDown(key);
|
||||
</OnKeyDown>
|
||||
</Scripts>
|
||||
</Frame>
|
||||
</Ui>
|
||||
@@ -1,545 +0,0 @@
|
||||
-- ============================================================================
|
||||
-- MoonWell
|
||||
-- ============================================================================
|
||||
CurrentGlueMusic = "GS_LichKing";
|
||||
|
||||
GlueCreditsSoundKits = { };
|
||||
GlueCreditsSoundKits[1] = "Menu-Credits01";
|
||||
GlueCreditsSoundKits[2] = "Menu-Credits02";
|
||||
GlueCreditsSoundKits[3] = "Menu-Credits03";
|
||||
|
||||
|
||||
GlueScreenInfo = { };
|
||||
GlueScreenInfo["login"] = "AccountLogin";
|
||||
GlueScreenInfo["charselect"] = "CharacterSelect";
|
||||
GlueScreenInfo["realmwizard"] = "RealmWizard";
|
||||
GlueScreenInfo["charcreate"] = "CharacterCreate";
|
||||
GlueScreenInfo["patchdownload"] = "PatchDownload";
|
||||
GlueScreenInfo["trialconvert"] = "TrialConvert";
|
||||
GlueScreenInfo["movie"] = "MovieFrame";
|
||||
GlueScreenInfo["credits"] = "CreditsFrame";
|
||||
GlueScreenInfo["options"] = "OptionsFrame";
|
||||
|
||||
CharModelFogInfo = { };
|
||||
CharModelFogInfo["HUMAN"] = { r=0.8, g=0.65, b=0.73, far=222 };
|
||||
CharModelFogInfo["ORC"] = { r=0.5, g=0.5, b=0.5, far=270 };
|
||||
CharModelFogInfo["DWARF"] = { r=0.85, g=0.88, b=1.0, far=500 };
|
||||
CharModelFogInfo["NIGHTELF"] = { r=0.25, g=0.22, b=0.55, far=611 };
|
||||
CharModelFogInfo["TAUREN"] = { r=1.0, g=0.61, b=0.42, far=153 };
|
||||
CharModelFogInfo["SCOURGE"] = { r=0, g=0.22, b=0.22, far=26 };
|
||||
CharModelFogInfo["CHARACTERSELECT"] = { r=0.8, g=0.65, b=0.73, far=222 };
|
||||
|
||||
CharModelGlowInfo = { };
|
||||
CharModelGlowInfo["WORGEN"] = 0.0;
|
||||
CharModelGlowInfo["GOBLIN"] = 0.0;
|
||||
CharModelGlowInfo["HUMAN"] = 0.15;
|
||||
CharModelGlowInfo["DWARF"] = 0.15;
|
||||
CharModelGlowInfo["CHARACTERSELECT"] = 0.3;
|
||||
|
||||
GlueAmbienceTracks = { };
|
||||
GlueAmbienceTracks["HUMAN"] = "GlueScreenHuman";
|
||||
GlueAmbienceTracks["ORC"] = "GlueScreenOrcTroll";
|
||||
GlueAmbienceTracks["DWARF"] = "GlueScreenDwarfGnome";
|
||||
GlueAmbienceTracks["TAUREN"] = "GlueScreenTauren";
|
||||
GlueAmbienceTracks["SCOURGE"] = "GlueScreenUndead";
|
||||
GlueAmbienceTracks["NIGHTELF"] = "GlueScreenNightElf";
|
||||
GlueAmbienceTracks["DRAENEI"] = "GlueScreenDraenei";
|
||||
GlueAmbienceTracks["BLOODELF"] = "GlueScreenBloodElf";
|
||||
GlueAmbienceTracks["DARKPORTAL"] = "GlueScreenIntro";
|
||||
GlueAmbienceTracks["DEATHKNIGHT"] = "GlueScreenIntro";
|
||||
GlueAmbienceTracks["CHARACTERSELECT"] = "GlueScreenIntro";
|
||||
GlueAmbienceTracks["GOBLIN"] = "GlueScreenGoblin";
|
||||
GlueAmbienceTracks["WORGEN"] = "GlueScreenWorgen";
|
||||
|
||||
-- RaceLights[] duplicates the 3.2.2 color values in the models. Henceforth, the models no longer contain directional lights
|
||||
RaceLights = {
|
||||
HUMAN = {
|
||||
{1, 0, 0.000000, 0.000000, -1.000000, 1.0, 0.27, 0.27, .27, 1.0, 0, 0, 0},
|
||||
{1, 0, -0.45756075, -0.58900136, -0.66611975, 1.0, 0.000000, 0.000000, 0.000000, 1.0, 0.19882353, 0.34921569, 0.43588236 },
|
||||
{1, 0, -0.64623469, 0.57582057, -0.50081086, 1.0, 0.000000, 0.000000, 0.000000, 2.0, 0.52196085, 0.44, 0.29764709 },
|
||||
},
|
||||
ORC = {
|
||||
{1, 0, 0.00000, 0.00000, -1.00000, 1.0, 0.15000, 0.15000, 0.15000, 1.0, 0.00000, 0.00000, 0.00000},
|
||||
{1, 0, -0.74919, 0.35208, -0.56103, 1.0, 0.00000, 0.00000, 0.00000, 1.0, 0.44706, 0.54510, 0.73725},
|
||||
{1, 0, 0.53162, -0.84340, 0.07780, 1.0, 0.00000, 0.00000, 0.00000, 2.0, 0.55, 0.338625, 0.148825},
|
||||
},
|
||||
DWARF = {
|
||||
{1, 0, -0.00000, -0.00000, -1.00000, 1.0, 0.30000, 0.30000, 0.30000, 0.0, 0.00000, 0.00000, 0.00000},
|
||||
{1, 0, -0.88314, 0.42916, -0.18945, 1.0, 0.00000, 0.00000, 0.00000, 2.0, 0.44706, 0.67451, 0.760785},
|
||||
},
|
||||
TAUREN = {
|
||||
{1, 0, -0.48073, 0.71827, -0.50297, 1.0, 0.00000, 0.00000, 0.00000, 2.0, 0.65, 0.397645, 0.2727},
|
||||
{1, 0, -0.49767, -0.78677, 0.36513, 1.0, 0.00000, 0.00000, 0.00000, 1.0, 0.60000, 0.47059, 0.32471},
|
||||
},
|
||||
SCOURGE = {
|
||||
{1, 0, 0.00000, 0.00000, -1.00000, 1.0, 0.20000, 0.20000, 0.20000, 1.0, 0.00000, 0.00000, 0.00000},
|
||||
},
|
||||
NIGHTELF = {
|
||||
{1, 0, -0.00000, -0.00000, -1.00000, 1.0, 0.09020, 0.09020, 0.17020, 1.0, 0.00000, 0.00000, 0.00000},
|
||||
},
|
||||
DRAENEI = {
|
||||
{1, 0, 0.61185, 0.62942, -0.47903, 1.0, 0.00000, 0.00000, 0.00000, 1.0, 0.56941, 0.52000, 0.60000},
|
||||
{1, 0, -0.64345, -0.31052, -0.69968, 1.0, 0.00000, 0.00000, 0.00000, 1.0, 0.60941, 0.60392, 0.70000},
|
||||
{1, 0, -0.46481, -0.14320, 0.87376, 1.0, 0.00000, 0.00000, 0.00000, 2.0, 0.5835, 0.48941, 0.60000},
|
||||
},
|
||||
BLOODELF = {
|
||||
{1, 0, -0.82249, -0.54912, -0.14822, 1.0, 0.00000, 0.00000, 0.00000, 2.0, 0.581175, 0.50588, 0.42588},
|
||||
{1, 0, 0.00000, -0.00000, -1.00000, 1.0, 0.60392, 0.61490, 0.70000, 1.0, 0.00000, 0.00000, 0.00000},
|
||||
{1, 0, 0.02575, 0.86518, -0.50081, 1.0, 0.00000, 0.00000, 0.00000, 1.0, 0.59137, 0.51745, 0.63471},
|
||||
},
|
||||
DEATHKNIGHT = {
|
||||
{1, 0, 0.00000, 0.00000, -1.00000, 1.0, 0.38824, 0.66353, 0.76941, 1.0, 0.00000, 0.00000, 0.00000},
|
||||
},
|
||||
CHARACTERSELECT = {
|
||||
{1, 0, 0.00000, 0.00000, -1.00000, 1.0, 0.15000, 0.15000, 0.15000, 1.0, 0.00000, 0.00000, 0.00000},
|
||||
{1, 0, -0.74919, 0.35208, -0.56103, 1.0, 0.00000, 0.00000, 0.00000, 1.0, 0.44706, 0.54510, 0.73725},
|
||||
{1, 0, 0.53162, -0.84340, 0.07780, 1.0, 0.00000, 0.00000, 0.00000, 2.0, 0.55, 0.338625, 0.148825},
|
||||
},
|
||||
}
|
||||
|
||||
-- indicies for adding lights ModelFFX:Add*Light
|
||||
LIGHT_LIVE = 0;
|
||||
LIGHT_GHOST = 1;
|
||||
|
||||
-- Alpha animation stuff
|
||||
FADEFRAMES = {};
|
||||
CURRENT_GLUE_SCREEN = nil;
|
||||
PENDING_GLUE_SCREEN = nil;
|
||||
-- Time in seconds to fade
|
||||
LOGIN_FADE_IN = 1.5;
|
||||
LOGIN_FADE_OUT = 0.5;
|
||||
CHARACTER_SELECT_FADE_IN = 0.75;
|
||||
RACE_SELECT_INFO_FADE_IN = .5;
|
||||
RACE_SELECT_INFO_FADE_OUT = .5;
|
||||
|
||||
-- Realm Split info
|
||||
SERVER_SPLIT_SHOW_DIALOG = false;
|
||||
SERVER_SPLIT_CLIENT_STATE = -1; -- -1 uninitialized; 0 - no choice; 1 - realm 1; 2 - realm 2
|
||||
SERVER_SPLIT_STATE_PENDING = -1; -- -1 uninitialized; 0 - no server split; 1 - server split (choice mode); 2 - server split (no choice mode)
|
||||
SERVER_SPLIT_DATE = nil;
|
||||
|
||||
-- Account Messaging info
|
||||
ACCOUNT_MSG_NUM_AVAILABLE = 0;
|
||||
ACCOUNT_MSG_PRIORITY = 0;
|
||||
ACCOUNT_MSG_HEADERS_LOADED = false;
|
||||
ACCOUNT_MSG_BODY_LOADED = false;
|
||||
ACCOUNT_MSG_CURRENT_INDEX = nil;
|
||||
|
||||
-- Gender Constants
|
||||
SEX_NONE = 1;
|
||||
SEX_MALE = 2;
|
||||
SEX_FEMALE = 3;
|
||||
|
||||
|
||||
function SetGlueScreen(name)
|
||||
local newFrame;
|
||||
for index, value in pairs(GlueScreenInfo) do
|
||||
local frame = _G[value];
|
||||
if ( frame ) then
|
||||
frame:Hide();
|
||||
if ( index == name ) then
|
||||
newFrame = frame;
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
if ( newFrame ) then
|
||||
newFrame:Show();
|
||||
SetCurrentScreen(name);
|
||||
SetCurrentGlueScreenName(name);
|
||||
if ( name == "credits" ) then
|
||||
PlayCreditsMusic( GlueCreditsSoundKits[CreditsFrame.creditsType] );
|
||||
StopGlueAmbience();
|
||||
elseif ( name ~= "movie" ) then
|
||||
PlayGlueMusic(CurrentGlueMusic);
|
||||
if (name == "login") then
|
||||
PlayGlueAmbience(GlueAmbienceTracks["DARKPORTAL"], 4.0);
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function SetCurrentGlueScreenName(name)
|
||||
CURRENT_GLUE_SCREEN = name;
|
||||
end
|
||||
|
||||
function GetCurrentGlueScreenName()
|
||||
return CURRENT_GLUE_SCREEN;
|
||||
end
|
||||
|
||||
function SetPendingGlueScreenName(name)
|
||||
PENDING_GLUE_SCREEN = name;
|
||||
end
|
||||
|
||||
function GetPendingGlueScreenName()
|
||||
return PENDING_GLUE_SCREEN;
|
||||
end
|
||||
|
||||
function GlueParent_OnLoad(self)
|
||||
local width = GetScreenWidth();
|
||||
local height = GetScreenHeight();
|
||||
|
||||
if ( width / height > 16 / 9) then
|
||||
local maxWidth = height * 16 / 9;
|
||||
local barWidth = ( width - maxWidth ) / 2;
|
||||
self:ClearAllPoints();
|
||||
self:SetPoint("TOPLEFT", barWidth, 0);
|
||||
self:SetPoint("BOTTOMRIGHT", -barWidth, 0);
|
||||
end
|
||||
|
||||
self:RegisterEvent("FRAMES_LOADED");
|
||||
self:RegisterEvent("SET_GLUE_SCREEN");
|
||||
self:RegisterEvent("START_GLUE_MUSIC");
|
||||
self:RegisterEvent("DISCONNECTED_FROM_SERVER");
|
||||
self:RegisterEvent("GET_PREFERRED_REALM_INFO");
|
||||
self:RegisterEvent("SERVER_SPLIT_NOTICE");
|
||||
self:RegisterEvent("ACCOUNT_MESSAGES_AVAILABLE");
|
||||
self:RegisterEvent("ACCOUNT_MESSAGES_HEADERS_LOADED");
|
||||
self:RegisterEvent("ACCOUNT_MESSAGES_BODY_LOADED");
|
||||
end
|
||||
|
||||
function GlueParent_OnEvent(event, arg1, arg2, arg3)
|
||||
if ( event == "FRAMES_LOADED" ) then
|
||||
LocalizeFrames();
|
||||
elseif ( event == "SET_GLUE_SCREEN" ) then
|
||||
GlueScreenExit(GetCurrentGlueScreenName(), arg1);
|
||||
elseif ( event == "START_GLUE_MUSIC" ) then
|
||||
PlayGlueMusic(CurrentGlueMusic);
|
||||
PlayGlueAmbience(GlueAmbienceTracks["DARKPORTAL"], 4.0);
|
||||
elseif ( event == "DISCONNECTED_FROM_SERVER" ) then
|
||||
TokenEntry_Cancel(TokenEnterDialog);
|
||||
SetGlueScreen("login");
|
||||
if ( arg1 == 4 ) then
|
||||
GlueDialog_Show("PARENTAL_CONTROL");
|
||||
else
|
||||
GlueDialog_Show("DISCONNECTED");
|
||||
end
|
||||
AddonList:Hide();
|
||||
elseif ( event == "GET_PREFERRED_REALM_INFO" ) then
|
||||
if( arg1 == 1) then
|
||||
SetPreferredInfo(1);
|
||||
else
|
||||
SetGlueScreen("realmwizard");
|
||||
PlayGlueAmbience(GlueAmbienceTracks["DARKPORTAL"], 4.0);
|
||||
end
|
||||
elseif ( event == "SERVER_SPLIT_NOTICE" ) then
|
||||
CharacterSelectRealmSplitButton:Show();
|
||||
if ( SERVER_SPLIT_STATE_PENDING == -1 and arg1 == 0 and arg2 == 1 ) then
|
||||
SERVER_SPLIT_SHOW_DIALOG = true;
|
||||
end
|
||||
SERVER_SPLIT_CLIENT_STATE = arg1;
|
||||
SERVER_SPLIT_STATE_PENDING = arg2;
|
||||
SERVER_SPLIT_DATE = arg3;
|
||||
elseif ( event == "ACCOUNT_MESSAGES_AVAILABLE" ) then
|
||||
-- ACCOUNT_MSG_NUM_AVAILABLE = arg1;
|
||||
ACCOUNT_MSG_HEADERS_LOADED = false;
|
||||
ACCOUNT_MSG_BODY_LOADED = false;
|
||||
ACCOUNT_MSG_CURRENT_INDEX = nil;
|
||||
AccountMsg_LoadHeaders();
|
||||
elseif ( event == "ACCOUNT_MESSAGES_HEADERS_LOADED" ) then
|
||||
ACCOUNT_MSG_HEADERS_LOADED = true;
|
||||
ACCOUNT_MSG_NUM_AVAILABLE = AccountMsg_GetNumUnreadMsgs();
|
||||
ACCOUNT_MSG_CURRENT_INDEX = AccountMsg_GetIndexNextUnreadMsg();
|
||||
if ( ACCOUNT_MSG_NUM_AVAILABLE > 0 ) then
|
||||
AccountMsg_LoadBody( ACCOUNT_MSG_CURRENT_INDEX );
|
||||
end
|
||||
elseif ( event == "ACCOUNT_MESSAGES_BODY_LOADED" ) then
|
||||
ACCOUNT_MSG_BODY_LOADED = true;
|
||||
end
|
||||
end
|
||||
|
||||
-- Glue screen animation handling
|
||||
function GlueScreenExit(currentFrame, pendingFrame)
|
||||
if ( currentFrame == "login" and pendingFrame == "charselect" ) then
|
||||
GlueFrameFadeOut(AccountLoginUI, LOGIN_FADE_OUT, GoToPendingGlueScreen);
|
||||
SetPendingGlueScreenName(pendingFrame);
|
||||
else
|
||||
SetGlueScreen(pendingFrame);
|
||||
end
|
||||
end
|
||||
|
||||
function GoToPendingGlueScreen()
|
||||
SetGlueScreen(GetPendingGlueScreenName());
|
||||
end
|
||||
|
||||
-- Generic fade function
|
||||
function GlueFrameFade(frame, timeToFade, mode, finishedFunction)
|
||||
if ( frame ) then
|
||||
frame.fadeTimer = 0;
|
||||
frame.timeToFade = timeToFade;
|
||||
frame.mode = mode;
|
||||
-- finishedFunction is an optional function that is called when the animation is complete
|
||||
if ( finishedFunction ) then
|
||||
frame.finishedFunction = finishedFunction;
|
||||
end
|
||||
tinsert(FADEFRAMES, frame);
|
||||
end
|
||||
end
|
||||
|
||||
-- Fade in function
|
||||
function GlueFrameFadeIn(frame, timeToFade, finishedFunction)
|
||||
GlueFrameFade(frame, timeToFade, "IN", finishedFunction);
|
||||
end
|
||||
|
||||
-- Fade out function
|
||||
function GlueFrameFadeOut(frame, timeToFade, finishedFunction)
|
||||
GlueFrameFade(frame, timeToFade, "OUT", finishedFunction);
|
||||
end
|
||||
|
||||
-- Function that actually performs the alpha change
|
||||
function GlueFrameFadeUpdate(elapsed)
|
||||
local index = 1;
|
||||
while FADEFRAMES[index] do
|
||||
local frame = FADEFRAMES[index];
|
||||
frame.fadeTimer = frame.fadeTimer + elapsed;
|
||||
if ( frame.fadeTimer < frame.timeToFade ) then
|
||||
if ( frame.mode == "IN" ) then
|
||||
frame:SetAlpha(frame.fadeTimer / frame.timeToFade);
|
||||
elseif ( frame.mode == "OUT" ) then
|
||||
frame:SetAlpha((frame.timeToFade - frame.fadeTimer) / frame.timeToFade);
|
||||
end
|
||||
else
|
||||
if ( frame.mode == "IN" ) then
|
||||
frame:SetAlpha(1.0);
|
||||
elseif ( frame.mode == "OUT" ) then
|
||||
frame:SetAlpha(0);
|
||||
end
|
||||
GlueFrameFadeRemoveFrame(frame);
|
||||
if ( frame.finishedFunction ) then
|
||||
frame.finishedFunction();
|
||||
frame.finishedFunction = nil;
|
||||
end
|
||||
end
|
||||
index = index + 1;
|
||||
end
|
||||
end
|
||||
|
||||
function GlueFrameRemoveFrame(frame, list)
|
||||
local index = 1;
|
||||
while list[index] do
|
||||
if ( frame == list[index] ) then
|
||||
tremove(list, index);
|
||||
end
|
||||
index = index + 1;
|
||||
end
|
||||
end
|
||||
|
||||
function GlueFrameFadeRemoveFrame(frame)
|
||||
GlueFrameRemoveFrame(frame, FADEFRAMES);
|
||||
end
|
||||
|
||||
function SetLighting(model, race)
|
||||
model:SetSequence(0);
|
||||
model:SetCamera(0);
|
||||
local fogInfo = CharModelFogInfo[race];
|
||||
if ( fogInfo ) then
|
||||
model:SetFogColor(fogInfo.r, fogInfo.g, fogInfo.b);
|
||||
model:SetFogNear(0);
|
||||
model:SetFogFar(fogInfo.far);
|
||||
else
|
||||
model:ClearFog();
|
||||
end
|
||||
|
||||
local glowInfo = CharModelGlowInfo[race];
|
||||
if ( glowInfo ) then
|
||||
model:SetGlow(glowInfo);
|
||||
else
|
||||
model:SetGlow(0.3);
|
||||
end
|
||||
|
||||
model:ResetLights();
|
||||
|
||||
local LightValues = RaceLights[race];
|
||||
if(LightValues) then
|
||||
for index, Array in pairs (LightValues) do
|
||||
if (Array[1]==1) then -- is this light enabled?
|
||||
for j, f in pairs ({model.AddCharacterLight, model.AddLight, model.AddPetLight }) do
|
||||
f(model, LIGHT_LIVE, unpack(Array));
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
CHARACTER_MODEL_LIGHT = {
|
||||
["Alliance"] = {2.499000, -3.400000, -3.844000, 0.505020, 0.680000, 0.750000, 1.120000, 0.550000, 0.680000, 1.120000, 1.350000},
|
||||
["Horde"] = {9.800000, -8.640000, -9.600000, 0.829100, 0.980000, 0.570000, 0.380000, 0.780000, 0.840000, 0.398850, 0.273120},
|
||||
["DeathKnight"] = {2.587001, -4.596000, -2.451000, 0.533330, 0.625590, 0.885200, 1.200000, 1.300000, 0.629360, 0.889180, 1.350000}
|
||||
}
|
||||
|
||||
function SetBackgroundModel(model, name, raza, gender)
|
||||
local nameupper = strupper(name);
|
||||
local ligthning = nameupper;
|
||||
|
||||
if nameupper == "NIGHTELF" or nameupper == "SCOURGE" then
|
||||
ligthning = "NIGHTELF";
|
||||
elseif nameupper == "BLOODELF" then
|
||||
ligthning = "BLOODELF";
|
||||
end
|
||||
|
||||
local path = "Interface\\Glues\\Models\\UI_"..name.."\\UI_"..name..".m2";
|
||||
|
||||
local allianceRaces = {
|
||||
["HUMAN"] = true,
|
||||
["DWARF"] = true,
|
||||
["NIGHTELF"] = true,
|
||||
["GNOME"] = true,
|
||||
["DRAENEI"] = true,
|
||||
["WORGEN"] = true
|
||||
};
|
||||
|
||||
local hordeRaces = {
|
||||
["ORC"] = true,
|
||||
["SCOURGE"] = true,
|
||||
["TAUREN"] = true,
|
||||
["TROLL"] = true,
|
||||
["BLOODELF"] = true,
|
||||
["GOBLIN"] = true
|
||||
};
|
||||
|
||||
local backgroundType = nil;
|
||||
|
||||
if model == CharacterCreate then
|
||||
if nameupper == "DEATHKNIGHT" then
|
||||
SetCharCustomizeBackground("Interface\\Glues\\Models\\UI_DeathKnight\\UI_DeathKnight.m2");
|
||||
ligthning = "DEATHKNIGHT";
|
||||
backgroundType = "DeathKnight";
|
||||
elseif allianceRaces[nameupper] then
|
||||
SetCharCustomizeBackground("Interface\\Glues\\Models\\UI_ALLIANCE\\UI_Alliance.m2");
|
||||
ligthning = "HUMAN";
|
||||
backgroundType = "Alliance";
|
||||
elseif hordeRaces[nameupper] then
|
||||
SetCharCustomizeBackground("Interface\\Glues\\Models\\UI_HORDE\\UI_HORDE.m2");
|
||||
ligthning = "ORC";
|
||||
backgroundType = "Horde";
|
||||
else
|
||||
SetCharCustomizeBackground(path);
|
||||
end
|
||||
else
|
||||
GLOBAL_RACE_CHANGE = 0;
|
||||
|
||||
if nameupper == "DEATHKNIGHT" then
|
||||
SetCharSelectBackground("Interface\\Glues\\Models\\UI_DeathKnight\\UI_DeathKnight.m2");
|
||||
ligthning = "DEATHKNIGHT";
|
||||
backgroundType = "DeathKnight";
|
||||
elseif allianceRaces[nameupper] then
|
||||
SetCharSelectBackground("Interface\\Glues\\Models\\UI_ALLIANCE\\UI_Alliance.m2");
|
||||
ligthning = "HUMAN";
|
||||
backgroundType = "Alliance";
|
||||
elseif hordeRaces[nameupper] then
|
||||
SetCharSelectBackground("Interface\\Glues\\Models\\UI_HORDE\\UI_HORDE.m2");
|
||||
ligthning = "ORC";
|
||||
backgroundType = "Horde";
|
||||
else
|
||||
SetCharSelectBackground(path);
|
||||
end
|
||||
end
|
||||
|
||||
if backgroundType and CHARACTER_MODEL_LIGHT[backgroundType] then
|
||||
local lightSettings = CHARACTER_MODEL_LIGHT[backgroundType];
|
||||
model:ResetLights();
|
||||
model:AddCharacterLight(LIGHT_LIVE, 1, 0, unpack(lightSettings));
|
||||
model:AddLight(LIGHT_LIVE, 1, 0, unpack(lightSettings));
|
||||
model:AddPetLight(LIGHT_LIVE, 1, 0, unpack(lightSettings));
|
||||
else
|
||||
SetLighting(model, ligthning);
|
||||
end
|
||||
|
||||
PlayGlueAmbience(GlueAmbienceTracks[nameupper], 4.0);
|
||||
end
|
||||
|
||||
function SecondsToTime(seconds, noSeconds)
|
||||
local time = "";
|
||||
local count = 0;
|
||||
local tempTime;
|
||||
seconds = floor(seconds);
|
||||
if ( seconds >= 86400 ) then
|
||||
tempTime = floor(seconds / 86400);
|
||||
time = tempTime.." "..DAYS_ABBR.." ";
|
||||
seconds = mod(seconds, 86400);
|
||||
count = count + 1;
|
||||
end
|
||||
if ( seconds >= 3600 ) then
|
||||
tempTime = floor(seconds / 3600);
|
||||
time = time..tempTime.." "..HOURS_ABBR.." ";
|
||||
seconds = mod(seconds, 3600);
|
||||
count = count + 1;
|
||||
end
|
||||
if ( count < 2 and seconds >= 60 ) then
|
||||
tempTime = floor(seconds / 60);
|
||||
time = time..tempTime.." "..MINUTES_ABBR.." ";
|
||||
seconds = mod(seconds, 60);
|
||||
count = count + 1;
|
||||
end
|
||||
if ( count < 2 and seconds > 0 and not noSeconds ) then
|
||||
seconds = format("%d", seconds);
|
||||
time = time..seconds.." "..SECONDS_ABBR.." ";
|
||||
end
|
||||
return time;
|
||||
end
|
||||
|
||||
function MinutesToTime(mins, hideDays)
|
||||
local time = "";
|
||||
local count = 0;
|
||||
local tempTime;
|
||||
-- only show days if hideDays is false
|
||||
if ( mins > 1440 and not hideDays ) then
|
||||
tempTime = floor(mins / 1440);
|
||||
time = tempTime.." "..DAYS_ABBR.." ";
|
||||
mins = mod(mins, 1440);
|
||||
count = count + 1;
|
||||
end
|
||||
if ( mins > 60 ) then
|
||||
tempTime = floor(mins / 60);
|
||||
time = time..tempTime.." "..HOURS_ABBR.." ";
|
||||
mins = mod(mins, 60);
|
||||
count = count + 1;
|
||||
end
|
||||
if ( count < 2 ) then
|
||||
tempTime = mins;
|
||||
time = time..tempTime.." "..MINUTES_ABBR.." ";
|
||||
count = count + 1;
|
||||
end
|
||||
return time;
|
||||
end
|
||||
|
||||
function TriStateCheckbox_SetState(checked, checkButton)
|
||||
local checkedTexture = _G[checkButton:GetName().."CheckedTexture"];
|
||||
if ( not checkedTexture ) then
|
||||
message("Can't find checked texture");
|
||||
end
|
||||
if ( not checked or checked == 0 ) then
|
||||
-- nil or 0 means not checked
|
||||
checkButton:SetChecked(nil);
|
||||
checkButton.state = 0;
|
||||
elseif ( checked == 2 ) then
|
||||
-- 2 is a normal
|
||||
checkButton:SetChecked(1);
|
||||
checkedTexture:SetVertexColor(1, 1, 1);
|
||||
checkedTexture:SetDesaturated(0);
|
||||
checkButton.state = 2;
|
||||
else
|
||||
-- 1 is a gray check
|
||||
checkButton:SetChecked(1);
|
||||
local shaderSupported = checkedTexture:SetDesaturated(1);
|
||||
if ( not shaderSupported ) then
|
||||
checkedTexture:SetVertexColor(0.5, 0.5, 0.5);
|
||||
end
|
||||
checkButton.state = 1;
|
||||
end
|
||||
end
|
||||
|
||||
function SetStateRequestInfo( choice )
|
||||
if ( SERVER_SPLIT_CLIENT_STATE ~= choice ) then
|
||||
SERVER_SPLIT_CLIENT_STATE = choice;
|
||||
SetRealmSplitState(choice);
|
||||
RealmSplit_SetChoiceText();
|
||||
-- RequestRealmSplitInfo();
|
||||
end
|
||||
end
|
||||
|
||||
function UpgradeAccount()
|
||||
PlaySound("gsLoginNewAccount");
|
||||
LaunchURL(AUTH_NO_TIME_URL);
|
||||
end
|
||||
|
||||
@@ -1,19 +0,0 @@
|
||||
<Ui xmlns="http://www.blizzard.com/wow/ui/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.blizzard.com/wow/ui/
|
||||
..\FrameXML\UI.xsd">
|
||||
<Script file="GlueParent.lua"/>
|
||||
<Frame name="GlueParent" setAllPoints="true">
|
||||
<Scripts>
|
||||
<!-- Register here for any events you want to monitor globally -->
|
||||
<OnLoad>
|
||||
GlueParent_OnLoad(self);
|
||||
</OnLoad>
|
||||
<!-- Respond here to any events you want to monitor globally -->
|
||||
<OnEvent>
|
||||
GlueParent_OnEvent(event, ...);
|
||||
</OnEvent>
|
||||
<OnUpdate>
|
||||
GlueFrameFadeUpdate(elapsed);
|
||||
</OnUpdate>
|
||||
</Scripts>
|
||||
</Frame>
|
||||
</Ui>
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,362 +0,0 @@
|
||||
-- ============================================================================
|
||||
-- MoonWell
|
||||
-- ============================================================================
|
||||
function GlueScrollFrameTemplate_OnMouseWheel(self, value, scrollBar)
|
||||
scrollBar = scrollBar or _G[self:GetName() .. "ScrollBar"];
|
||||
if ( value > 0 ) then
|
||||
scrollBar:SetValue(scrollBar:GetValue() - (scrollBar:GetHeight() / 2));
|
||||
else
|
||||
scrollBar:SetValue(scrollBar:GetValue() + (scrollBar:GetHeight() / 2));
|
||||
end
|
||||
end
|
||||
|
||||
-- Function to handle the update of manually calculated scrollframes. Used mostly for listings with an indeterminate number of items
|
||||
function GlueScrollFrame_Update(frame, numItems, numToDisplay, valueStep, highlightFrame, smallHighlightWidth, bigHighlightWidth )
|
||||
-- If more than one screen full of skills then show the scrollbar
|
||||
local frameName = frame:GetName();
|
||||
local scrollBar = _G[ frameName.."ScrollBar" ];
|
||||
if ( numItems > numToDisplay ) then
|
||||
frame:Show();
|
||||
else
|
||||
scrollBar:SetValue(0);
|
||||
frame:Hide();
|
||||
end
|
||||
if ( frame:IsShown() ) then
|
||||
local scrollChildFrame = _G[ frameName.."ScrollChildFrame" ];
|
||||
local scrollUpButton = _G[ frameName.."ScrollBarScrollUpButton" ];
|
||||
local scrollDownButton = _G[ frameName.."ScrollBarScrollDownButton" ];
|
||||
local scrollFrameHeight = 0;
|
||||
local scrollChildHeight = 0;
|
||||
|
||||
if ( numItems > 0 ) then
|
||||
scrollFrameHeight = (numItems - numToDisplay) * valueStep;
|
||||
scrollChildHeight = numItems * valueStep;
|
||||
if ( scrollFrameHeight < 0 ) then
|
||||
scrollFrameHeight = 0;
|
||||
end
|
||||
scrollChildFrame:Show();
|
||||
else
|
||||
scrollChildFrame:Hide();
|
||||
end
|
||||
scrollBar:SetMinMaxValues(0, scrollFrameHeight);
|
||||
scrollBar:SetValueStep(valueStep);
|
||||
scrollChildFrame:SetHeight(scrollChildHeight);
|
||||
|
||||
-- Arrow button handling
|
||||
if ( scrollBar:GetValue() == 0 ) then
|
||||
scrollUpButton:Disable();
|
||||
else
|
||||
scrollUpButton:Enable();
|
||||
end
|
||||
if ((scrollBar:GetValue() - scrollFrameHeight) == 0) then
|
||||
scrollDownButton:Disable();
|
||||
else
|
||||
scrollDownButton:Enable();
|
||||
end
|
||||
-- Shrink because scrollbar is shown
|
||||
if ( highlightFrame ) then
|
||||
highlightFrame:SetWidth(smallHighlightWidth);
|
||||
end
|
||||
else
|
||||
-- Widen because scrollbar is hidden
|
||||
if ( highlightFrame ) then
|
||||
highlightFrame:SetWidth(bigHighlightWidth);
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function GlueScrollFrame_OnScrollRangeChanged(self, yrange)
|
||||
local scrollbar = _G[self:GetName().."ScrollBar"];
|
||||
if ( not yrange ) then
|
||||
yrange = self:GetVerticalScrollRange();
|
||||
end
|
||||
local value = scrollbar:GetValue();
|
||||
if ( value > yrange ) then
|
||||
value = yrange;
|
||||
end
|
||||
scrollbar:SetMinMaxValues(0, yrange);
|
||||
scrollbar:SetValue(value);
|
||||
if ( floor(yrange) == 0 ) then
|
||||
if (self.scrollBarHideable) then
|
||||
_G[self:GetName().."ScrollBar"]:Hide();
|
||||
_G[scrollbar:GetName().."ScrollDownButton"]:Hide();
|
||||
_G[scrollbar:GetName().."ScrollUpButton"]:Hide();
|
||||
else
|
||||
_G[scrollbar:GetName().."ScrollDownButton"]:Disable();
|
||||
_G[scrollbar:GetName().."ScrollUpButton"]:Disable();
|
||||
_G[scrollbar:GetName().."ScrollDownButton"]:Show();
|
||||
_G[scrollbar:GetName().."ScrollUpButton"]:Show();
|
||||
end
|
||||
else
|
||||
_G[scrollbar:GetName().."ScrollDownButton"]:Show();
|
||||
_G[scrollbar:GetName().."ScrollUpButton"]:Show();
|
||||
_G[self:GetName().."ScrollBar"]:Show();
|
||||
_G[scrollbar:GetName().."ScrollDownButton"]:Enable();
|
||||
end
|
||||
end
|
||||
|
||||
function GlueScrollFrame_OnVerticalScroll(self, value)
|
||||
local scrollbar = _G[self:GetName().."ScrollBar"];
|
||||
scrollbar:SetValue(value);
|
||||
local min;
|
||||
local max;
|
||||
min, max = scrollbar:GetMinMaxValues();
|
||||
if ( value == 0 ) then
|
||||
_G[scrollbar:GetName().."ScrollUpButton"]:Disable();
|
||||
else
|
||||
_G[scrollbar:GetName().."ScrollUpButton"]:Enable();
|
||||
end
|
||||
if ((scrollbar:GetValue() - max) == 0) then
|
||||
_G[scrollbar:GetName().."ScrollDownButton"]:Disable();
|
||||
else
|
||||
_G[scrollbar:GetName().."ScrollDownButton"]:Enable();
|
||||
end
|
||||
end
|
||||
|
||||
function GlueScrollFrame_OnLoad(self)
|
||||
_G[self:GetName().."ScrollBarScrollDownButton"]:Disable();
|
||||
_G[self:GetName().."ScrollBarScrollUpButton"]:Disable();
|
||||
|
||||
local scrollbar = _G[self:GetName().."ScrollBar"];
|
||||
scrollbar:SetMinMaxValues(0, 0);
|
||||
scrollbar:SetValue(0);
|
||||
self.offset = 0;
|
||||
end
|
||||
|
||||
-- Function to handle the update of manually calculated scrollframes. Used mostly for listings with an indeterminate number of items
|
||||
function FauxScrollFrame_Update(frame, numItems, numToDisplay, valueStep, button, smallWidth, bigWidth, highlightFrame, smallHighlightWidth, bigHighlightWidth, alwaysShowScrollBar )
|
||||
-- If more than one screen full of skills then show the scrollbar
|
||||
local frameName = frame:GetName();
|
||||
local scrollBar = _G[ frameName.."ScrollBar" ];
|
||||
local showScrollBar;
|
||||
if ( numItems > numToDisplay or alwaysShowScrollBar ) then
|
||||
frame:Show();
|
||||
showScrollBar = 1;
|
||||
else
|
||||
scrollBar:SetValue(0);
|
||||
frame:Hide();
|
||||
end
|
||||
if ( frame:IsShown() ) then
|
||||
local scrollChildFrame = _G[ frameName.."ScrollChildFrame" ];
|
||||
local scrollUpButton = _G[ frameName.."ScrollBarScrollUpButton" ];
|
||||
local scrollDownButton = _G[ frameName.."ScrollBarScrollDownButton" ];
|
||||
local scrollFrameHeight = 0;
|
||||
local scrollChildHeight = 0;
|
||||
|
||||
if ( numItems > 0 ) then
|
||||
scrollFrameHeight = (numItems - numToDisplay) * valueStep;
|
||||
scrollChildHeight = numItems * valueStep;
|
||||
if ( scrollFrameHeight < 0 ) then
|
||||
scrollFrameHeight = 0;
|
||||
end
|
||||
scrollChildFrame:Show();
|
||||
else
|
||||
scrollChildFrame:Hide();
|
||||
end
|
||||
scrollBar:SetMinMaxValues(0, scrollFrameHeight);
|
||||
scrollBar:SetValueStep(valueStep);
|
||||
scrollChildFrame:SetHeight(scrollChildHeight);
|
||||
|
||||
-- Arrow button handling
|
||||
if ( scrollBar:GetValue() == 0 ) then
|
||||
scrollUpButton:Disable();
|
||||
else
|
||||
scrollUpButton:Enable();
|
||||
end
|
||||
if ((scrollBar:GetValue() - scrollFrameHeight) == 0) then
|
||||
scrollDownButton:Disable();
|
||||
else
|
||||
scrollDownButton:Enable();
|
||||
end
|
||||
|
||||
-- Shrink because scrollbar is shown
|
||||
if ( highlightFrame ) then
|
||||
highlightFrame:SetWidth(smallHighlightWidth);
|
||||
end
|
||||
if ( button ) then
|
||||
for i=1, numToDisplay do
|
||||
_G[button..i]:SetWidth(smallWidth);
|
||||
end
|
||||
end
|
||||
else
|
||||
-- Widen because scrollbar is hidden
|
||||
if ( highlightFrame ) then
|
||||
highlightFrame:SetWidth(bigHighlightWidth);
|
||||
end
|
||||
if ( button ) then
|
||||
for i=1, numToDisplay do
|
||||
_G[button..i]:SetWidth(bigWidth);
|
||||
end
|
||||
end
|
||||
end
|
||||
return showScrollBar;
|
||||
end
|
||||
|
||||
function FauxScrollFrame_OnVerticalScroll(self, value, itemHeight, updateFunction)
|
||||
local scrollbar = _G[self:GetName().."ScrollBar"];
|
||||
scrollbar:SetValue(value);
|
||||
self.offset = floor((value / itemHeight) + 0.5);
|
||||
updateFunction(self);
|
||||
end
|
||||
|
||||
function FauxScrollFrame_GetOffset(frame)
|
||||
return frame.offset;
|
||||
end
|
||||
|
||||
function FauxScrollFrame_SetOffset(frame, offset)
|
||||
frame.offset = offset;
|
||||
end
|
||||
|
||||
--Tab stuffs
|
||||
function GlueTemplates_TabResize(padding, tab, absoluteSize)
|
||||
local tabName;
|
||||
if ( tab ) then
|
||||
tabName = tab:GetName();
|
||||
end
|
||||
local buttonMiddle = _G[tabName.."Middle"];
|
||||
local buttonMiddleDisabled = _G[tabName.."MiddleDisabled"];
|
||||
local sideWidths = 2 * _G[tabName.."Left"]:GetWidth();
|
||||
local tabText = _G[tab:GetName().."Text"];
|
||||
local width, tabWidth;
|
||||
|
||||
-- If there's an absolute size specified then use it
|
||||
if ( absoluteSize ) then
|
||||
if ( absoluteSize < sideWidths) then
|
||||
width = 1;
|
||||
tabWidth = sideWidths
|
||||
else
|
||||
width = absoluteSize - sideWidths;
|
||||
tabWidth = absoluteSize
|
||||
end
|
||||
tabText:SetWidth(width);
|
||||
else
|
||||
-- Otherwise try to use padding
|
||||
if ( padding ) then
|
||||
width = tabText:GetStringWidth() + padding;
|
||||
else
|
||||
width = tabText:GetStringWidth() + 24;
|
||||
end
|
||||
tabWidth = width + sideWidths;
|
||||
tabText:SetWidth(0);
|
||||
end
|
||||
|
||||
if ( buttonMiddle ) then
|
||||
buttonMiddle:SetWidth(width);
|
||||
end
|
||||
if ( buttonMiddleDisabled ) then
|
||||
buttonMiddleDisabled:SetWidth(width);
|
||||
end
|
||||
|
||||
tab:SetWidth(tabWidth);
|
||||
local highlightTexture = _G[tabName.."HighlightTexture"];
|
||||
if ( highlightTexture ) then
|
||||
highlightTexture:SetWidth(tabWidth);
|
||||
end
|
||||
end
|
||||
|
||||
function GlueTemplates_SetTab(frame, id)
|
||||
frame.selectedTab = id;
|
||||
GlueTemplates_UpdateTabs(frame);
|
||||
end
|
||||
|
||||
function GlueTemplates_GetSelectedTab(frame)
|
||||
return frame.selectedTab;
|
||||
end
|
||||
|
||||
function GlueTemplates_UpdateTabs(frame)
|
||||
if ( frame.selectedTab ) then
|
||||
local tab;
|
||||
for i=1, frame.numTabs, 1 do
|
||||
tab = _G[frame:GetName().."Tab"..i];
|
||||
if ( tab.isDisabled ) then
|
||||
GlueTemplates_SetDisabledTabState(tab);
|
||||
elseif ( i == frame.selectedTab ) then
|
||||
GlueTemplates_SelectTab(tab);
|
||||
else
|
||||
GlueTemplates_DeselectTab(tab);
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function GlueTemplates_SetNumTabs(frame, numTabs)
|
||||
frame.numTabs = numTabs;
|
||||
end
|
||||
|
||||
function GlueTemplates_DisableTab(frame, index)
|
||||
_G[frame:GetName().."Tab"..index].isDisabled = 1;
|
||||
GlueTemplates_UpdateTabs(frame);
|
||||
end
|
||||
|
||||
function GlueTemplates_EnableTab(frame, index)
|
||||
local tab = _G[frame:GetName().."Tab"..index];
|
||||
tab.isDisabled = nil;
|
||||
-- Reset text color
|
||||
tab:SetDisabledTextColor(HIGHLIGHT_FONT_COLOR.r, HIGHLIGHT_FONT_COLOR.g, HIGHLIGHT_FONT_COLOR.b);
|
||||
GlueTemplates_UpdateTabs(frame);
|
||||
end
|
||||
|
||||
function GlueTemplates_DeselectTab(tab)
|
||||
local name = tab:GetName();
|
||||
_G[name.."Left"]:Show();
|
||||
_G[name.."Middle"]:Show();
|
||||
_G[name.."Right"]:Show();
|
||||
--tab:UnlockHighlight();
|
||||
tab:Enable();
|
||||
_G[name.."LeftDisabled"]:Hide();
|
||||
_G[name.."MiddleDisabled"]:Hide();
|
||||
_G[name.."RightDisabled"]:Hide();
|
||||
end
|
||||
|
||||
function GlueTemplates_SelectTab(tab)
|
||||
local name = tab:GetName();
|
||||
_G[name.."Left"]:Hide();
|
||||
_G[name.."Middle"]:Hide();
|
||||
_G[name.."Right"]:Hide();
|
||||
--tab:LockHighlight();
|
||||
tab:Disable();
|
||||
_G[name.."LeftDisabled"]:Show();
|
||||
_G[name.."MiddleDisabled"]:Show();
|
||||
_G[name.."RightDisabled"]:Show();
|
||||
end
|
||||
|
||||
function GlueTemplates_SetDisabledTabState(tab)
|
||||
local name = tab:GetName();
|
||||
_G[name.."Left"]:Show();
|
||||
_G[name.."Middle"]:Show();
|
||||
_G[name.."Right"]:Show();
|
||||
--tab:UnlockHighlight();
|
||||
tab:Disable();
|
||||
tab.text = tab:GetText();
|
||||
-- Gray out text
|
||||
tab:SetDisabledTextColor(GRAY_FONT_COLOR.r, GRAY_FONT_COLOR.g, GRAY_FONT_COLOR.b);
|
||||
_G[name.."LeftDisabled"]:Hide();
|
||||
_G[name.."MiddleDisabled"]:Hide();
|
||||
_G[name.."RightDisabled"]:Hide();
|
||||
end
|
||||
|
||||
function EditBox_HandleTabbing(self, tabList)
|
||||
local editboxName = self:GetName();
|
||||
local index;
|
||||
for i=1, #tabList do
|
||||
if ( editboxName == tabList[i] ) then
|
||||
index = i;
|
||||
break;
|
||||
end
|
||||
end
|
||||
|
||||
if ( IsShiftKeyDown() ) then
|
||||
index = index - 1;
|
||||
else
|
||||
index = index + 1;
|
||||
end
|
||||
|
||||
if ( index == 0 ) then
|
||||
index = #tabList;
|
||||
elseif ( index > #tabList ) then
|
||||
index = 1;
|
||||
end
|
||||
|
||||
local target = tabList[index];
|
||||
_G[target]:SetFocus();
|
||||
end
|
||||
@@ -1,268 +0,0 @@
|
||||
<!-- MoonWell -->
|
||||
<Ui xmlns="http://www.blizzard.com/wow/ui/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.blizzard.com/wow/ui/
|
||||
..\FrameXML\UI.xsd">
|
||||
<Script file="GlueTemplates.lua"/>
|
||||
|
||||
<!-- ============================================================================ -->
|
||||
<!-- TEXTURAS DE EDITBOX GLUEDARK -->
|
||||
<!-- ============================================================================ -->
|
||||
<Texture name="GlueDark_editboxLeft" file="Interface/Glues/Common/generic" virtual="true">
|
||||
<Size x="13" y="36"/>
|
||||
<TexCoords left="0.771484375" right="0.806640625" top="0.45703125" bottom="0.556640625"/>
|
||||
</Texture>
|
||||
<Texture name="GlueDark_editboxLeftHover" file="Interface/Glues/Common/generic" virtual="true">
|
||||
<Size x="13" y="36"/>
|
||||
<TexCoords left="0.236328125" right="0.271484375" top="0.865234375" bottom="0.96484375"/>
|
||||
</Texture>
|
||||
<Texture name="GlueDark_editboxMiddle" file="Interface/Glues/Common/generic" virtual="true">
|
||||
<Size x="13" y="36"/>
|
||||
<TexCoords left="0.58984375" right="0.625" top="0.677734375" bottom="0.77734375"/>
|
||||
</Texture>
|
||||
<Texture name="GlueDark_editboxMiddleHover" file="Interface/Glues/Common/generic" virtual="true">
|
||||
<Size x="13" y="36"/>
|
||||
<TexCoords left="0.197265625" right="0.232421875" top="0.865234375" bottom="0.96484375"/>
|
||||
</Texture>
|
||||
<Texture name="GlueDark_editboxRight" file="Interface/Glues/Common/generic" virtual="true">
|
||||
<Size x="13" y="36"/>
|
||||
<TexCoords left="0.859375" right="0.89453125" top="0.234375" bottom="0.333984375"/>
|
||||
</Texture>
|
||||
<Texture name="GlueDark_editboxRightHover" file="Interface/Glues/Common/generic" virtual="true">
|
||||
<Size x="13" y="36"/>
|
||||
<TexCoords left="0.30859375" right="0.34375" top="0.83984375" bottom="0.939453125"/>
|
||||
</Texture>
|
||||
<!-- ============================================================================ -->
|
||||
|
||||
<Button name="GlueCloseButton" virtual="true">
|
||||
<Size>
|
||||
<AbsDimension x="32" y="32"/>
|
||||
</Size>
|
||||
<Scripts>
|
||||
<OnClick>
|
||||
self:GetParent():Hide();
|
||||
</OnClick>
|
||||
</Scripts>
|
||||
<NormalTexture file="Interface\Buttons\UI-Panel-MinimizeButton-Up"/>
|
||||
<PushedTexture file="Interface\Buttons\UI-Panel-MinimizeButton-Down"/>
|
||||
<HighlightTexture file="Interface\Buttons\UI-Panel-MinimizeButton-Highlight" alphaMode="ADD"/>
|
||||
</Button>
|
||||
|
||||
<EditBox name="GlueDark_EditBoxTemplate" historyLines="1" virtual="true">
|
||||
<Size x="54" y="37"/>
|
||||
<HitRectInsets left="6" right="6" top="5" bottom="5"/>
|
||||
<Layers>
|
||||
<Layer level="BACKGROUND">
|
||||
<Texture name="$parentLeft" parentKey="Left" inherits="GlueDark_editboxLeft">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT"/>
|
||||
<Anchor point="BOTTOMLEFT"/>
|
||||
</Anchors>
|
||||
</Texture>
|
||||
<Texture name="$parentRight" parentKey="Right" inherits="GlueDark_editboxRight">
|
||||
<Anchors>
|
||||
<Anchor point="TOPRIGHT"/>
|
||||
<Anchor point="BOTTOMRIGHT"/>
|
||||
</Anchors>
|
||||
</Texture>
|
||||
<Texture name="$parentMiddle" parentKey="Middle" inherits="GlueDark_editboxMiddle">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="$parentLeft" relativePoint="TOPRIGHT" x="0"/>
|
||||
<Anchor point="BOTTOMRIGHT" relativeTo="$parentRight" relativePoint="BOTTOMLEFT" x="0.3"/>
|
||||
</Anchors>
|
||||
</Texture>
|
||||
</Layer>
|
||||
|
||||
<Layer level="ARTWORK">
|
||||
<FontString name="$parentTitleText" parentKey="TitleText" inherits="GlueDark_Font_15" justifyH="CENTER">
|
||||
<Anchors>
|
||||
<Anchor point="BOTTOM" relativePoint="TOP" y="0" x="0"/>
|
||||
</Anchors>
|
||||
</FontString>
|
||||
</Layer>
|
||||
</Layers>
|
||||
<Scripts>
|
||||
<OnEnter>
|
||||
if not self.isFocused then
|
||||
self.Left:SetTexCoord(0.236328125, 0.271484375, 0.865234375, 0.96484375);
|
||||
self.Middle:SetTexCoord(0.197265625, 0.232421875, 0.865234375, 0.96484375);
|
||||
self.Right:SetTexCoord(0.30859375, 0.34375, 0.83984375, 0.939453125);
|
||||
end
|
||||
</OnEnter>
|
||||
<OnLeave>
|
||||
if not self.isFocused then
|
||||
self.Left:SetTexCoord(0.771484375, 0.806640625, 0.45703125, 0.556640625);
|
||||
self.Middle:SetTexCoord(0.58984375, 0.625, 0.677734375, 0.77734375);
|
||||
self.Right:SetTexCoord(0.859375, 0.89453125, 0.234375, 0.333984375);
|
||||
end
|
||||
</OnLeave>
|
||||
<OnEditFocusGained>
|
||||
self.isFocused = true;
|
||||
self.Left:SetTexCoord(0.236328125, 0.271484375, 0.865234375, 0.96484375);
|
||||
self.Middle:SetTexCoord(0.197265625, 0.232421875, 0.865234375, 0.96484375);
|
||||
self.Right:SetTexCoord(0.30859375, 0.34375, 0.83984375, 0.939453125);
|
||||
self:HighlightText();
|
||||
</OnEditFocusGained>
|
||||
<OnEditFocusLost>
|
||||
self.isFocused = nil;
|
||||
self:HighlightText(0, 0);
|
||||
self.Left:SetTexCoord(0.771484375, 0.806640625, 0.45703125, 0.556640625);
|
||||
self.Middle:SetTexCoord(0.58984375, 0.625, 0.677734375, 0.77734375);
|
||||
self.Right:SetTexCoord(0.859375, 0.89453125, 0.234375, 0.333984375);
|
||||
</OnEditFocusLost>
|
||||
</Scripts>
|
||||
<FontString inherits="GlueEditBoxFont"/>
|
||||
<TextInsets>
|
||||
<AbsInset left="12" right="12" top="8" bottom="8"/>
|
||||
</TextInsets>
|
||||
</EditBox>
|
||||
|
||||
<Texture name="GlueScrollBarButton" virtual="true">
|
||||
<TexCoords left="0.23" right="0.77" top="0.23" bottom="0.77"/>
|
||||
</Texture>
|
||||
<Button name="GlueScrollUpButtonTemplate" virtual="true">
|
||||
<Size>
|
||||
<AbsDimension x="18" y="18"/>
|
||||
</Size>
|
||||
<NormalTexture inherits="GlueScrollBarButton" file="Interface\Buttons\UI-ScrollBar-ScrollUpButton-Up"/>
|
||||
<PushedTexture inherits="GlueScrollBarButton" file="Interface\Buttons\UI-ScrollBar-ScrollUpButton-Down"/>
|
||||
<DisabledTexture inherits="GlueScrollBarButton" file="Interface\Buttons\UI-ScrollBar-ScrollUpButton-Disabled"/>
|
||||
<HighlightTexture inherits="GlueScrollBarButton" file="Interface\Buttons\UI-ScrollBar-ScrollUpButton-Highlight" alphaMode="ADD"/>
|
||||
</Button>
|
||||
<Button name="GlueScrollDownButtonTemplate" virtual="true">
|
||||
<Size>
|
||||
<AbsDimension x="18" y="18"/>
|
||||
</Size>
|
||||
<NormalTexture inherits="GlueScrollBarButton" file="Interface\Buttons\UI-ScrollBar-ScrollDownButton-Up"/>
|
||||
<PushedTexture inherits="GlueScrollBarButton" file="Interface\Buttons\UI-ScrollBar-ScrollDownButton-Down"/>
|
||||
<DisabledTexture inherits="GlueScrollBarButton" file="Interface\Buttons\UI-ScrollBar-ScrollDownButton-Disabled"/>
|
||||
<HighlightTexture inherits="GlueScrollBarButton" file="Interface\Buttons\UI-ScrollBar-ScrollDownButton-Highlight" alphaMode="ADD"/>
|
||||
</Button>
|
||||
<Texture name="GluePanelButtonDisabledDownTexture" file="Interface\Buttons\UI-Panel-Button-Disabled-Down" virtual="true">
|
||||
<TexCoords left="0" right="0.625" top="0" bottom="0.6875"/>
|
||||
</Texture>
|
||||
<Button name="GluePanelButtonTemplate" virtual="true">
|
||||
<ButtonText name="$parentText">
|
||||
<Anchors>
|
||||
<Anchor point="CENTER">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="1"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</ButtonText>
|
||||
<NormalFont style="GlueFontNormal"/>
|
||||
<HighlightFont style="GlueFontHighlight"/>
|
||||
<DisabledFont style="GlueFontDisable"/>
|
||||
<NormalTexture inherits="GluePanelButtonUpTexture"/>
|
||||
<PushedTexture inherits="GluePanelButtonDownTexture"/>
|
||||
<DisabledTexture inherits="GluePanelButtonDisabledTexture"/>
|
||||
<HighlightTexture inherits="GluePanelButtonHighlightTexture"/>
|
||||
</Button>
|
||||
<Button name="GluePanelButtonGrayTemplate" virtual="true">
|
||||
<NormalFont style="GlueFontHighlight"/>
|
||||
<HighlightFont style="GlueFontHighlight"/>
|
||||
<DisabledFont style="GlueFontDisable"/>
|
||||
<NormalTexture inherits="GluePanelButtonDisabledTexture"/>
|
||||
<PushedTexture inherits="GluePanelButtonDisabledDownTexture"/>
|
||||
<DisabledTexture inherits="GluePanelButtonDisabledTexture"/>
|
||||
<HighlightTexture inherits="GluePanelButtonHighlightTexture"/>
|
||||
</Button>
|
||||
<CheckButton name="GlueCheckButtonTemplate" virtual="true">
|
||||
<Size>
|
||||
<AbsDimension x="32" y="32"/>
|
||||
</Size>
|
||||
<Layers>
|
||||
<Layer level="ARTWORK">
|
||||
<FontString name="$parentText" inherits="GlueFontNormalSmall">
|
||||
<Anchors>
|
||||
<Anchor point="LEFT" relativePoint="RIGHT">
|
||||
<Offset>
|
||||
<AbsDimension x="-2" y="0"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</FontString>
|
||||
</Layer>
|
||||
</Layers>
|
||||
<NormalTexture file="Interface\Buttons\UI-CheckBox-Up"/>
|
||||
<PushedTexture file="Interface\Buttons\UI-CheckBox-Down"/>
|
||||
<HighlightTexture file="Interface\Buttons\UI-CheckBox-Highlight" alphaMode="ADD"/>
|
||||
<CheckedTexture file="Interface\Buttons\UI-CheckBox-Check"/>
|
||||
<DisabledCheckedTexture file="Interface\Buttons\UI-CheckBox-Check-Disabled"/>
|
||||
</CheckButton>
|
||||
<Slider name="GlueScrollBarTemplate" virtual="true">
|
||||
<Size>
|
||||
<AbsDimension x="16" y="0"/>
|
||||
</Size>
|
||||
<Frames>
|
||||
<Button name="$parentScrollUpButton" inherits="GlueScrollUpButtonTemplate">
|
||||
<Anchors>
|
||||
<Anchor point="BOTTOM" relativePoint="TOP"/>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnClick>
|
||||
local parent = self:GetParent();
|
||||
parent:SetValue(parent:GetValue() - (parent:GetHeight() / 2));
|
||||
PlaySound("UChatScrollButton");
|
||||
</OnClick>
|
||||
</Scripts>
|
||||
</Button>
|
||||
<Button name="$parentScrollDownButton" inherits="GlueScrollDownButtonTemplate">
|
||||
<Anchors>
|
||||
<Anchor point="TOP" relativePoint="BOTTOM"/>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnClick>
|
||||
local parent = self:GetParent();
|
||||
parent:SetValue(parent:GetValue() + (parent:GetHeight() / 2));
|
||||
PlaySound("UChatScrollButton");
|
||||
</OnClick>
|
||||
</Scripts>
|
||||
</Button>
|
||||
</Frames>
|
||||
<Scripts>
|
||||
<OnValueChanged>
|
||||
self:GetParent():SetVerticalScroll(value);
|
||||
</OnValueChanged>
|
||||
</Scripts>
|
||||
<ThumbTexture inherits="GlueScrollBarButton" file="Interface\Buttons\UI-ScrollBar-Knob">
|
||||
<Size>
|
||||
<AbsDimension x="18" y="24"/>
|
||||
</Size>
|
||||
<TexCoords left="0.20" right="0.80" top="0.125" bottom="0.875"/>
|
||||
</ThumbTexture>
|
||||
</Slider>
|
||||
<ScrollFrame name="GlueScrollFrameTemplate" virtual="true">
|
||||
<Frames>
|
||||
<Slider name="$parentScrollBar" inherits="GlueScrollBarTemplate">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativePoint="TOPRIGHT">
|
||||
<Offset>
|
||||
<AbsDimension x="6" y="-16"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
<Anchor point="BOTTOMLEFT" relativePoint="BOTTOMRIGHT">
|
||||
<Offset>
|
||||
<AbsDimension x="6" y="16"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</Slider>
|
||||
</Frames>
|
||||
<Scripts>
|
||||
<OnLoad>
|
||||
_G[self:GetName().."ScrollBarScrollDownButton"]:Disable();
|
||||
_G[self:GetName().."ScrollBarScrollUpButton"]:Disable();
|
||||
GlueScrollFrame_OnScrollRangeChanged(self);
|
||||
</OnLoad>
|
||||
<OnScrollRangeChanged>
|
||||
GlueScrollFrame_OnScrollRangeChanged(self, yrange);
|
||||
</OnScrollRangeChanged>
|
||||
<OnVerticalScroll>
|
||||
GlueScrollFrame_OnVerticalScroll(self, offset);
|
||||
</OnVerticalScroll>
|
||||
<OnMouseWheel>
|
||||
GlueScrollFrameTemplate_OnMouseWheel(self, delta);
|
||||
</OnMouseWheel>
|
||||
</Scripts>
|
||||
</ScrollFrame>
|
||||
</Ui>
|
||||
@@ -1,43 +0,0 @@
|
||||
##DebugHook.lua
|
||||
GlueStrings.lua
|
||||
GlueFonts.xml
|
||||
GlueFontStyles.xml
|
||||
GlueLocalization.xml
|
||||
## add new files after here
|
||||
|
||||
GlueBasicControls.xml
|
||||
GlueParent.xml
|
||||
GlueButtons.xml
|
||||
GlueTemplates.xml
|
||||
GlueDialog.xml
|
||||
GlueDropDownMenu.xml
|
||||
GlueTooltip.xml
|
||||
GlueSplash.xml
|
||||
RealmList.xml
|
||||
AddonList.xml
|
||||
AccountLogin.xml
|
||||
CharacterSelect.xml
|
||||
CharacterCreate.xml
|
||||
PatchDownload.xml
|
||||
MovieFrame.xml
|
||||
RealmWizard.xml
|
||||
CreditsFrame.xml
|
||||
SecurityMatrix.xml
|
||||
OptionsFrameTemplates.xml
|
||||
OptionsPanelTemplates.xml
|
||||
TrialConvert.xml
|
||||
VideoOptionsFrame.xml
|
||||
VideoOptionsPanels.xml
|
||||
AudioOptionsFrame.xml
|
||||
AudioOptionsPanels.xml
|
||||
OptionsSelect.xml
|
||||
##CameraSelect.xml
|
||||
CharacterInfo.lua
|
||||
CharacterCreate.lua
|
||||
|
||||
# custom modules
|
||||
XML_TXXUI.xml
|
||||
XML_IXXUI.xml
|
||||
|
||||
# add new modules above here
|
||||
LocalizationPost.xml
|
||||
@@ -1,77 +0,0 @@
|
||||
-- ============================================================================
|
||||
-- MoonWell
|
||||
-- ============================================================================
|
||||
function OptionsSelectFrame_Hide()
|
||||
PlaySound("gsLoginChangeRealmCancel");
|
||||
OptionsSelectFrame:Hide();
|
||||
end
|
||||
|
||||
function OptionsSelectResetSettingsButton_OnClick_Reset(self)
|
||||
PlaySound("igMainMenuOptionCheckBoxOn");
|
||||
GlueDialog_Show("RESET_SERVER_SETTINGS");
|
||||
end
|
||||
|
||||
function OptionsSelectResetSettingsButton_OnClick_Cancel(self)
|
||||
PlaySound("igMainMenuOptionCheckBoxOn");
|
||||
GlueDialog_Show("CANCEL_RESET_SETTINGS");
|
||||
end
|
||||
|
||||
function AccountLogin_RealmReset()
|
||||
SetCVar("realmName", "");
|
||||
AccountLogin_Exit();
|
||||
end
|
||||
|
||||
function MovieList_Show()
|
||||
PlaySound("igMainMenuOption");
|
||||
OptionsSelectFrame:Hide();
|
||||
CinematicsFrame:Show();
|
||||
Cinematics_SetupButtons();
|
||||
end
|
||||
|
||||
function CinematicsFrame_OnLoad(self)
|
||||
self:RegisterEvent("PLAY_MOVIE");
|
||||
end
|
||||
|
||||
function CinematicsFrame_OnKeyDown(key)
|
||||
if key == "ESCAPE" then
|
||||
CinematicsFrame_Hide();
|
||||
end
|
||||
end
|
||||
|
||||
function CinematicsFrame_Hide()
|
||||
PlaySound("gsLoginChangeRealmCancel");
|
||||
CinematicsFrame:Hide();
|
||||
if CharacterSelect and CharacterSelect:IsShown() then
|
||||
CharacterSelect:Show();
|
||||
else
|
||||
if CharacterSelect_Show then
|
||||
CharacterSelect_Show();
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function Cinematics_SetupButtons()
|
||||
local buttons = {CinematicsButton1, CinematicsButton2, CinematicsButton3};
|
||||
|
||||
for i, button in ipairs(buttons) do
|
||||
button:Show();
|
||||
end
|
||||
end
|
||||
|
||||
function Cinematics_OnMovieFinished()
|
||||
if CharacterSelect and CharacterSelect:IsShown() then
|
||||
CharacterSelect:Show();
|
||||
else
|
||||
if CharacterSelect_Show then
|
||||
CharacterSelect_Show();
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function OptionsSelectFrame_OnShow()
|
||||
local locale = GetGlueLocale and GetGlueLocale() or GetLocale() or "enUS";
|
||||
local button = OptionsSelectResetSettingsButton;
|
||||
if button and GlueStrings and GlueStrings["RESET_REALM_EXIT"] then
|
||||
button:SetText(GlueStrings["RESET_REALM_EXIT"][locale] or GlueStrings["RESET_REALM_EXIT"].enUS);
|
||||
end
|
||||
end
|
||||
@@ -1,173 +0,0 @@
|
||||
<!-- MoonWell -->
|
||||
<Ui xmlns="http://www.blizzard.com/wow/ui/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.blizzard.com/wow/ui/
|
||||
..\FrameXML\UI.xsd">
|
||||
<Script file="OptionsSelect.lua"/>
|
||||
|
||||
<Frame name="OptionsSelectFrame" toplevel="true" setAllPoints="true" hidden="true" enableMouse="true" enableKeyboard="true" frameStrata="HIGH">
|
||||
<Layers>
|
||||
<Layer level="BACKGROUND">
|
||||
<Texture setAllPoints="true">
|
||||
<Color a="0.75" r="0" g="0" b="0"/>
|
||||
</Texture>
|
||||
</Layer>
|
||||
</Layers>
|
||||
<Frames>
|
||||
<Frame name="$parentBackground">
|
||||
<Size x="360" y="280"/>
|
||||
<Anchors>
|
||||
<Anchor point="CENTER">
|
||||
<Offset x="0" y="-20"/>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Backdrop bgFile="Interface\DialogFrame\UI-DialogBox-Background" edgeFile="Interface\tooltips\BorderAlert" tile="true">
|
||||
<BackgroundInsets>
|
||||
<AbsInset left="3" right="3" top="3" bottom="3"/>
|
||||
</BackgroundInsets>
|
||||
<TileSize>
|
||||
<AbsValue val="16"/>
|
||||
</TileSize>
|
||||
<EdgeSize>
|
||||
<AbsValue val="16"/>
|
||||
</EdgeSize>
|
||||
</Backdrop>
|
||||
<Layers>
|
||||
<Layer level="ARTWORK">
|
||||
<Texture name="$parentHeader" file="Interface\DialogFrame\UI-DialogBox-Header" hidden="true">
|
||||
<Size>
|
||||
<AbsDimension x="300" y="68"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOP">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="12"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</Texture>
|
||||
<FontString name="$parentHeaderText" inherits="GlueFontNormal" text="OPTIONS">
|
||||
<Anchors>
|
||||
<Anchor point="TOP" relativeTo="$parentHeader">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-20"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</FontString>
|
||||
</Layer>
|
||||
</Layers>
|
||||
<Frames>
|
||||
<Frame name="$parentContainer">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset x="12" y="-36"/>
|
||||
</Anchor>
|
||||
<Anchor point="BOTTOMRIGHT">
|
||||
<Offset x="-16" y="50"/>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
|
||||
<Frames>
|
||||
<Button name="$parentVideoOptionsButton" inherits="GlueButtonTemplateBlue" text="VIDEOOPTIONS_MENU">
|
||||
<Size x="220" y="45"/>
|
||||
<Anchors>
|
||||
<Anchor point="TOP">
|
||||
<Offset x="0" y="-10"/>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnClick>
|
||||
PlaySound("igMainMenuOption");
|
||||
VideoOptionsFrame.lastFrame = OptionsSelectFrame;
|
||||
VideoOptionsFrame:Show();
|
||||
</OnClick>
|
||||
</Scripts>
|
||||
</Button>
|
||||
<Button name="$parentAudioOptionsButton" inherits="GlueButtonTemplateBlue" text="SOUNDOPTIONS_MENU">
|
||||
<Size x="220" y="45"/>
|
||||
<Anchors>
|
||||
<Anchor point="TOP" relativeTo="$parentVideoOptionsButton" relativePoint="BOTTOM">
|
||||
<Offset x="0" y="10"/>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnClick>
|
||||
PlaySound("igMainMenuOption");
|
||||
AudioOptionsFrame.lastFrame = OptionsSelectFrame;
|
||||
AudioOptionsFrame:Show();
|
||||
</OnClick>
|
||||
</Scripts>
|
||||
</Button>
|
||||
<Button name="$parentTrailersButton" inherits="GlueButtonTemplateBlue" text="CINEMATICS_MENU">
|
||||
<Size x="220" y="45"/>
|
||||
<Anchors>
|
||||
<Anchor point="TOP" relativeTo="$parentAudioOptionsButton" relativePoint="BOTTOM">
|
||||
<Offset x="0" y="10"/>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnClick>
|
||||
PlaySound("igMainMenuOption");
|
||||
MovieList_Show();
|
||||
</OnClick>
|
||||
</Scripts>
|
||||
</Button>
|
||||
<Button name="$parentRealmResetOptionsButton" inherits="GlueButtonTemplateBlue" text="RESET_REALM_EXIT">
|
||||
<Size x="220" y="45"/>
|
||||
<Anchors>
|
||||
<Anchor point="TOP" relativeTo="$parentTrailersButton" relativePoint="BOTTOM">
|
||||
<Offset x="0" y="10"/>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnClick>
|
||||
PlaySound("igMainMenuOption");
|
||||
AccountLogin_RealmReset();
|
||||
</OnClick>
|
||||
<OnShow>
|
||||
OptionsSelectFrame_OnShow();
|
||||
</OnShow>
|
||||
</Scripts>
|
||||
</Button>
|
||||
|
||||
</Frames>
|
||||
</Frame>
|
||||
<Button name="OptionsSelectResetSettingsButton" inherits="GlueButtonSmallTemplateBlue" text="RESET_SETTINGS">
|
||||
<Size x="220" y="38"/>
|
||||
<Anchors>
|
||||
<Anchor point="BOTTOMLEFT">
|
||||
<Offset x="8" y="6"/>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnClick>
|
||||
OptionsSelectResetSettingsButton_OnClick_Reset(self);
|
||||
</OnClick>
|
||||
</Scripts>
|
||||
</Button>
|
||||
<Button name="$parentOkayButton" inherits="GlueButtonSmallTemplateBlue" text="CLOSE">
|
||||
<Size x="125" y="38"/>
|
||||
<Anchors>
|
||||
<Anchor point="BOTTOMRIGHT">
|
||||
<Offset x="-8" y="6"/>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnClick>
|
||||
OptionsSelectFrame_Hide();
|
||||
</OnClick>
|
||||
</Scripts>
|
||||
</Button>
|
||||
</Frames>
|
||||
</Frame>
|
||||
</Frames>
|
||||
<Scripts>
|
||||
<OnKeyDown>
|
||||
if ( key == "ESCAPE" ) then
|
||||
OptionsSelectFrame_Hide();
|
||||
elseif ( key == "PRINTSCREEN" ) then
|
||||
Screenshot();
|
||||
end
|
||||
</OnKeyDown>
|
||||
</Scripts>
|
||||
</Frame>
|
||||
</Ui>
|
||||
@@ -1,672 +0,0 @@
|
||||
-- ============================================================================
|
||||
-- MoonWell
|
||||
-- ============================================================================
|
||||
REALM_BUTTON_HEIGHT = 16;
|
||||
MAX_REALMS_DISPLAYED = 18;
|
||||
MAX_REALM_CATEGORY_TABS = 8;
|
||||
|
||||
local TEXTURE_SIZE = 36
|
||||
|
||||
local REALM_BACKGROUNDS = {
|
||||
["RealmListRealmButton1"] = "Interface\\GluesVideo\\Assets\\RealmSelection\\Realm1.blp",
|
||||
["RealmListRealmButton2"] = "Interface\\GluesVideo\\Assets\\RealmSelection\\Realm2.blp",
|
||||
}
|
||||
|
||||
local logoAnimationInProgress = false
|
||||
|
||||
local realmListLogoFrame = nil
|
||||
local realmListLogo = nil
|
||||
|
||||
local logoAnimationInProgress = false
|
||||
|
||||
local realmListLogoFrame = nil
|
||||
local realmListLogo = nil
|
||||
|
||||
local function InitializeRealmListLogo(self)
|
||||
if not realmListLogoFrame then
|
||||
realmListLogoFrame = CreateFrame("Frame", nil, self)
|
||||
realmListLogoFrame:SetSize(285, 285)
|
||||
realmListLogoFrame:SetPoint("CENTER", self, "CENTER", 0, 0)
|
||||
realmListLogoFrame:Hide()
|
||||
|
||||
realmListLogo = realmListLogoFrame:CreateTexture("RealmListLogo", "ARTWORK")
|
||||
realmListLogo:SetTexture(" ")
|
||||
realmListLogo:SetAllPoints(realmListLogoFrame)
|
||||
|
||||
realmListLogoFrame.zoomDirection = 1
|
||||
realmListLogoFrame.zoomSpeed = 0.1
|
||||
realmListLogoFrame.minSize = 250
|
||||
realmListLogoFrame.maxSize = 280
|
||||
realmListLogoFrame.currentSize = 250
|
||||
|
||||
realmListLogoFrame:SetScript("OnUpdate", function(self, elapsed)
|
||||
self.currentSize = self.currentSize + (self.zoomDirection * self.zoomSpeed)
|
||||
|
||||
if self.currentSize >= self.maxSize then
|
||||
self.currentSize = self.maxSize
|
||||
self.zoomDirection = -1
|
||||
elseif self.currentSize <= self.minSize then
|
||||
self.currentSize = self.minSize
|
||||
self.zoomDirection = 1
|
||||
end
|
||||
|
||||
self:SetSize(self.currentSize, self.currentSize)
|
||||
end)
|
||||
end
|
||||
end
|
||||
|
||||
local function ResetRealmListLogoAnimation()
|
||||
logoAnimationInProgress = false
|
||||
if realmListLogoFrame then
|
||||
realmListLogoFrame:Hide()
|
||||
realmListLogoFrame:SetScript("OnUpdate", nil)
|
||||
end
|
||||
end
|
||||
|
||||
local function ShowRealmListLogo()
|
||||
if logoAnimationInProgress or not realmListLogoFrame then
|
||||
return
|
||||
end
|
||||
|
||||
logoAnimationInProgress = true
|
||||
realmListLogoFrame:Show()
|
||||
|
||||
local startY = 480
|
||||
local endY = 380
|
||||
local startSize = 285
|
||||
local minSize = 250
|
||||
local maxSize = 285
|
||||
local midSize = (minSize + maxSize) / 2
|
||||
|
||||
local animationTime = 0
|
||||
local currentSize = startSize
|
||||
local zoomPhaseTime = 0
|
||||
local zoomSpeed = 0.5
|
||||
local smoothingProgress = -1
|
||||
|
||||
realmListLogoFrame:SetPoint("TOP", RealmList, "CENTER", 0, startY)
|
||||
realmListLogoFrame:SetAlpha(0)
|
||||
realmListLogoFrame:SetSize(startSize, startSize)
|
||||
|
||||
realmListLogoFrame:SetScript("OnUpdate", function(self, elapsed)
|
||||
animationTime = animationTime + elapsed
|
||||
|
||||
if animationTime <= 1.0 then
|
||||
local progress = animationTime / 1.0
|
||||
local currentY = startY - (startY - endY) * progress
|
||||
local currentAlpha = progress
|
||||
|
||||
self:SetPoint("TOP", RealmList, "CENTER", 0, currentY)
|
||||
self:SetAlpha(currentAlpha)
|
||||
|
||||
elseif animationTime <= 1.5 then
|
||||
local transitionProgress = (animationTime - 1.0) / 0.5
|
||||
currentSize = startSize - (startSize - minSize) * transitionProgress
|
||||
self:SetSize(currentSize, currentSize)
|
||||
|
||||
smoothingProgress = 0
|
||||
|
||||
else
|
||||
if smoothingProgress < 1 then
|
||||
smoothingProgress = smoothingProgress + elapsed * 5 -- 5 = 1/0.2
|
||||
if smoothingProgress > 1 then smoothingProgress = 1 end
|
||||
|
||||
zoomPhaseTime = zoomPhaseTime + elapsed * zoomSpeed * smoothingProgress
|
||||
else
|
||||
zoomPhaseTime = zoomPhaseTime + elapsed * zoomSpeed
|
||||
end
|
||||
|
||||
local oscillation = math.sin(zoomPhaseTime * math.pi * 2)
|
||||
oscillation = oscillation * 0.5 + 0.5
|
||||
|
||||
currentSize = minSize + (maxSize - minSize) * oscillation
|
||||
|
||||
local currentWidth, currentHeight = self:GetSize()
|
||||
local smoothingFactor = smoothingProgress < 1 and 0.05 or 0.1
|
||||
local newWidth = currentWidth + (currentSize - currentWidth) * smoothingFactor
|
||||
local newHeight = currentHeight + (currentSize - currentHeight) * smoothingFactor
|
||||
|
||||
self:SetSize(newWidth, newHeight)
|
||||
end
|
||||
end)
|
||||
end
|
||||
|
||||
local function CreateRealmButtonBorder(button)
|
||||
if button.borderFrame then return button.borderFrame end
|
||||
|
||||
local border = CreateFrame("Frame", nil, button, BackdropTemplateMixin and "BackdropTemplate")
|
||||
border:SetFrameLevel(button:GetFrameLevel() + 1)
|
||||
|
||||
border:SetBackdrop({
|
||||
edgeFile = "Interface\\tooltips\\ui-tooltip-border-maw",
|
||||
tile = true,
|
||||
tileSize = 16,
|
||||
edgeSize = 16,
|
||||
insets = { left = 5, right = 5, top = 5, bottom = 5 }
|
||||
})
|
||||
border:SetBackdropBorderColor(1, 1, 1, 1)
|
||||
|
||||
local backgroundContainer = CreateFrame("Frame", nil, border)
|
||||
backgroundContainer:SetAllPoints(border)
|
||||
backgroundContainer:SetFrameLevel(border:GetFrameLevel() - 1)
|
||||
|
||||
local TEXTURE_OFFSET_X = 4
|
||||
local TEXTURE_OFFSET_Y = 4
|
||||
|
||||
local background = backgroundContainer:CreateTexture(nil, "BACKGROUND")
|
||||
background:SetPoint("TOPLEFT", backgroundContainer, "TOPLEFT", TEXTURE_OFFSET_X, -TEXTURE_OFFSET_Y)
|
||||
background:SetPoint("BOTTOMRIGHT", backgroundContainer, "BOTTOMRIGHT", -TEXTURE_OFFSET_X, TEXTURE_OFFSET_Y)
|
||||
background:SetTexture(REALM_BACKGROUNDS[button:GetName()] or "Interface\\GluesVideo\\Assets\\RealmSelection\\Realm1.blp")
|
||||
|
||||
border:SetPoint("TOPLEFT", button, "TOPLEFT", -30, 20)
|
||||
border:SetPoint("BOTTOMRIGHT", button, "BOTTOMRIGHT", 30, -350)
|
||||
border:Show()
|
||||
|
||||
local currentScale = 1
|
||||
local targetScale = 1
|
||||
local isMouseOverBackground = false
|
||||
|
||||
local function IsMouseOverBackground()
|
||||
local x, y = GetCursorPosition()
|
||||
local scale = button:GetEffectiveScale()
|
||||
x = x / scale
|
||||
y = y / scale
|
||||
|
||||
local left = backgroundContainer:GetLeft()
|
||||
local right = backgroundContainer:GetRight()
|
||||
local top = backgroundContainer:GetTop()
|
||||
local bottom = backgroundContainer:GetBottom()
|
||||
|
||||
return x >= left and x <= right and y <= top and y >= bottom
|
||||
end
|
||||
|
||||
local function UpdateBackgroundZoom(elapsed)
|
||||
if isMouseOverBackground then
|
||||
targetScale = 1.1
|
||||
else
|
||||
targetScale = 1
|
||||
end
|
||||
|
||||
if math.abs(currentScale - targetScale) > 0.001 then
|
||||
currentScale = currentScale + (targetScale - currentScale) * (elapsed * 2)
|
||||
background:SetTexCoord(
|
||||
0.5 - (0.5 / currentScale),
|
||||
0.5 + (0.5 / currentScale),
|
||||
0.5 - (0.5 / currentScale),
|
||||
0.5 + (0.5 / currentScale)
|
||||
)
|
||||
end
|
||||
end
|
||||
|
||||
button:SetScript("OnUpdate", function(_, elapsed)
|
||||
isMouseOverBackground = IsMouseOverBackground()
|
||||
UpdateBackgroundZoom(elapsed)
|
||||
end)
|
||||
|
||||
local texture1 = button:CreateTexture(nil, "ARTWORK")
|
||||
texture1:SetSize(TEXTURE_SIZE, TEXTURE_SIZE)
|
||||
texture1:SetPoint("TOPLEFT", button, "TOPLEFT", -30, -45)
|
||||
|
||||
local texture2 = button:CreateTexture(nil, "ARTWORK")
|
||||
texture2:SetSize(TEXTURE_SIZE, TEXTURE_SIZE)
|
||||
texture2:SetPoint("TOP", texture1, "BOTTOM", 0, 3)
|
||||
|
||||
local texture3 = button:CreateTexture(nil, "ARTWORK")
|
||||
texture3:SetSize(TEXTURE_SIZE, TEXTURE_SIZE)
|
||||
texture3:SetPoint("TOP", texture2, "BOTTOM", 0, 4)
|
||||
|
||||
local texture4 = button:CreateTexture(nil, "ARTWORK")
|
||||
texture4:SetSize(TEXTURE_SIZE, TEXTURE_SIZE)
|
||||
texture4:SetPoint("TOP", texture3, "BOTTOM", 0, 4)
|
||||
|
||||
local buttonName = button:GetName()
|
||||
if buttonName == "RealmListRealmButton1" then
|
||||
texture1:SetTexture("Interface\\GluesVideo\\Assets\\RealmSelection\\RealmIcon\\TypeGame1")
|
||||
texture2:SetTexture("Interface\\GluesVideo\\Assets\\RealmSelection\\RealmIcon\\Characters1")
|
||||
texture3:SetTexture("Interface\\GluesVideo\\Assets\\RealmSelection\\RealmIcon\\Population1")
|
||||
texture4:SetTexture("Interface\\GluesVideo\\Assets\\RealmSelection\\RealmIcon\\Expansion1")
|
||||
elseif buttonName == "RealmListRealmButton2" then
|
||||
texture1:SetTexture("Interface\\GluesVideo\\Assets\\RealmSelection\\RealmIcon\\TypeGame2")
|
||||
texture2:SetTexture("Interface\\GluesVideo\\Assets\\RealmSelection\\RealmIcon\\Characters2")
|
||||
texture3:SetTexture("Interface\\GluesVideo\\Assets\\RealmSelection\\RealmIcon\\Population2")
|
||||
texture4:SetTexture("Interface\\GluesVideo\\Assets\\RealmSelection\\RealmIcon\\Expansion2")
|
||||
else
|
||||
texture1:SetTexture("Interface\\Icons\\inv_misc_questionmark")
|
||||
texture2:SetTexture("Interface\\Icons\\inv_misc_questionmark")
|
||||
texture3:SetTexture("Interface\\Icons\\inv_misc_questionmark")
|
||||
texture4:SetTexture("Interface\\Icons\\inv_misc_questionmark")
|
||||
end
|
||||
|
||||
button.borderFrame = border
|
||||
return border
|
||||
end
|
||||
|
||||
function RealmList_OnLoad(self)
|
||||
self:RegisterEvent("OPEN_REALM_LIST");
|
||||
self.currentRealm = 0;
|
||||
self.offset = 0;
|
||||
end
|
||||
|
||||
function RealmList_OnEvent(self, event)
|
||||
if ( event == "OPEN_REALM_LIST" ) then
|
||||
if ( self:IsShown() ) then
|
||||
RealmListUpdate();
|
||||
else
|
||||
self:Show();
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function RealmListUpdate()
|
||||
if ( not RealmList.selectedCategory ) then
|
||||
RealmList.selectedCategory = 1;
|
||||
end
|
||||
|
||||
RealmList.refreshTime = RealmListUpdateRate();
|
||||
|
||||
RealmList_UpdateTabs(GetRealmCategories());
|
||||
|
||||
local numRealms = GetNumRealms(RealmList.selectedCategory);
|
||||
local name, numCharacters, invalidRealm, currentRealm, pvp, rp, load, locked;
|
||||
local realmIndex;
|
||||
local isFull;
|
||||
local major, minor, revision, build, type;
|
||||
|
||||
RealmListOkButton:Hide();
|
||||
RealmListHighlight:Hide();
|
||||
for i=1, MAX_REALMS_DISPLAYED, 1 do
|
||||
realmIndex = RealmList.offset + i;
|
||||
local button = _G["RealmListRealmButton"..i];
|
||||
local acceptButton = _G["RealmListRealmButton"..i.."AcceptButton"];
|
||||
|
||||
if ( realmIndex > numRealms ) then
|
||||
button:Hide();
|
||||
else
|
||||
name, numCharacters, invalidRealm, realmDown, currentRealm, pvp, rp, load, locked, major, minor, revision = GetRealmInfo(RealmList.selectedCategory, realmIndex);
|
||||
|
||||
if ( not name ) then
|
||||
button:Hide();
|
||||
else
|
||||
local pvpText = _G["RealmListRealmButton"..i.."PVP"] or button:CreateFontString("$parentPVP", "ARTWORK", "GlueFontHighlightSmall");
|
||||
local loadText = _G["RealmListRealmButton"..i.."Load"] or button:CreateFontString("$parentLoad", "ARTWORK", "GlueFontHighlightSmall");
|
||||
local players = _G["RealmListRealmButton"..i.."Players"] or button:CreateFontString("$parentPlayers", "ARTWORK", "GlueFontHighlightSmall");
|
||||
|
||||
if ( pvp and rp ) then
|
||||
pvpText:SetText(RPPVP_PARENTHESES);
|
||||
pvpText:SetTextColor(NORMAL_FONT_COLOR.r, NORMAL_FONT_COLOR.g, NORMAL_FONT_COLOR.b);
|
||||
elseif ( rp ) then
|
||||
pvpText:SetText(RP_PARENTHESES);
|
||||
pvpText:SetTextColor(GREEN_FONT_COLOR.r, GREEN_FONT_COLOR.g, GREEN_FONT_COLOR.b);
|
||||
elseif ( pvp ) then
|
||||
pvpText:SetText(PVP_PARENTHESES);
|
||||
pvpText:SetTextColor(RED_FONT_COLOR.r, RED_FONT_COLOR.g, RED_FONT_COLOR.b);
|
||||
else
|
||||
pvpText:SetText(GAMETYPE_NORMAL);
|
||||
pvpText:SetTextColor(NORMAL_FONT_COLOR.r, NORMAL_FONT_COLOR.g, NORMAL_FONT_COLOR.b);
|
||||
end
|
||||
|
||||
isFull = nil;
|
||||
if ( realmDown ) then
|
||||
loadText:SetText(REALM_DOWN);
|
||||
loadText:SetTextColor(GRAY_FONT_COLOR.r, GRAY_FONT_COLOR.g, GRAY_FONT_COLOR.b);
|
||||
elseif ( locked ) then
|
||||
loadText:SetText(REALM_LOCKED);
|
||||
loadText:SetTextColor(RED_FONT_COLOR.r, RED_FONT_COLOR.g, RED_FONT_COLOR.b);
|
||||
elseif ( load == -3.0 ) then
|
||||
loadText:SetText(LOAD_RECOMMENDED);
|
||||
loadText:SetTextColor(BLUE_FONT_COLOR.r, BLUE_FONT_COLOR.g, BLUE_FONT_COLOR.b);
|
||||
elseif ( load == -2.0 ) then
|
||||
loadText:SetText(LOAD_NEW);
|
||||
loadText:SetTextColor(GREEN_FONT_COLOR.r, GREEN_FONT_COLOR.g, GREEN_FONT_COLOR.b);
|
||||
elseif ( load == 2.0 ) then
|
||||
loadText:SetText(LOAD_FULL);
|
||||
loadText:SetTextColor(RED_FONT_COLOR.r, RED_FONT_COLOR.g, RED_FONT_COLOR.b);
|
||||
isFull = 1;
|
||||
elseif ( load > 0 ) then
|
||||
loadText:SetText(LOAD_HIGH);
|
||||
loadText:SetTextColor(RED_FONT_COLOR.r, RED_FONT_COLOR.g, RED_FONT_COLOR.b);
|
||||
elseif ( load < 0 ) then
|
||||
loadText:SetText(LOAD_LOW);
|
||||
loadText:SetTextColor(GREEN_FONT_COLOR.r, GREEN_FONT_COLOR.g, GREEN_FONT_COLOR.b);
|
||||
else
|
||||
loadText:SetText(LOAD_MEDIUM);
|
||||
loadText:SetTextColor(NORMAL_FONT_COLOR.r, NORMAL_FONT_COLOR.g, NORMAL_FONT_COLOR.b);
|
||||
end
|
||||
|
||||
if ( numCharacters > 0 ) then
|
||||
players:SetText(numCharacters);
|
||||
else
|
||||
players:SetText(" 0");
|
||||
end
|
||||
|
||||
pvpText:ClearAllPoints();
|
||||
pvpText:SetPoint("TOPLEFT", button, "TOPLEFT", 10, -40);
|
||||
pvpText:SetWidth(150);
|
||||
pvpText:SetJustifyH("LEFT");
|
||||
|
||||
players:ClearAllPoints();
|
||||
players:SetPoint("TOPLEFT", pvpText, "BOTTOMLEFT", 0, -5);
|
||||
players:SetWidth(150);
|
||||
players:SetJustifyH("LEFT");
|
||||
|
||||
loadText:ClearAllPoints();
|
||||
loadText:SetPoint("TOPLEFT", players, "BOTTOMLEFT", 0, -5);
|
||||
loadText:SetWidth(150);
|
||||
loadText:SetJustifyH("LEFT");
|
||||
|
||||
if (major) then
|
||||
button:SetText(name.."\n("..major.."."..minor.."."..revision..")");
|
||||
else
|
||||
button:SetText(name);
|
||||
end
|
||||
|
||||
CreateRealmButtonBorder(button);
|
||||
button:Show();
|
||||
button:SetID(realmIndex);
|
||||
button.name = name;
|
||||
|
||||
if ( realmDown ) then
|
||||
button:Disable();
|
||||
else
|
||||
button:Enable();
|
||||
end
|
||||
|
||||
if (pvp and rp) then -- RPPVP
|
||||
pvpText:SetPoint("TOPLEFT", button, "TOPLEFT", 118, -57);
|
||||
pvpText:SetWidth(180);
|
||||
elseif (rp) then -- RP
|
||||
pvpText:SetPoint("TOPLEFT", button, "TOPLEFT", 118, -57);
|
||||
pvpText:SetWidth(150);
|
||||
elseif (pvp) then -- PVP
|
||||
pvpText:SetPoint("TOPLEFT", button, "TOPLEFT", 118, -57);
|
||||
pvpText:SetWidth(150);
|
||||
else -- Normal (PVE)
|
||||
pvpText:SetPoint("TOPLEFT", button, "TOPLEFT", 118, -57);
|
||||
pvpText:SetWidth(150);
|
||||
end
|
||||
|
||||
players:SetPoint("TOPLEFT", pvpText, "BOTTOMLEFT", -35, -20);
|
||||
players:SetWidth(150);
|
||||
|
||||
if (load == -3.0) then -- "Recomendado"
|
||||
loadText:SetPoint("TOPLEFT", players, "BOTTOMLEFT", 0, -20);
|
||||
loadText:SetWidth(180);
|
||||
elseif (load == -2.0) then -- "Nuevo"
|
||||
loadText:SetPoint("TOPLEFT", players, "BOTTOMLEFT", 0, -20);
|
||||
loadText:SetWidth(150);
|
||||
elseif (load == 2.0) then -- "Lleno"
|
||||
loadText:SetPoint("TOPLEFT", players, "BOTTOMLEFT", 0, -20);
|
||||
loadText:SetWidth(150);
|
||||
elseif (load > 0) then -- "Alto"
|
||||
loadText:SetPoint("TOPLEFT", players, "BOTTOMLEFT", 0, -20);
|
||||
loadText:SetWidth(150);
|
||||
elseif (load < 0) then -- "Bajo"
|
||||
loadText:SetPoint("TOPLEFT", players, "BOTTOMLEFT", 0, -20);
|
||||
loadText:SetWidth(150);
|
||||
else -- "Medio" (valor por defecto)
|
||||
loadText:SetPoint("TOPLEFT", players, "BOTTOMLEFT", -5, -20);
|
||||
loadText:SetWidth(150);
|
||||
end
|
||||
|
||||
pvpText:SetJustifyH("LEFT");
|
||||
players:SetJustifyH("LEFT");
|
||||
loadText:SetJustifyH("LEFT");
|
||||
|
||||
local expansionText = _G["RealmListRealmButton"..i.."ExpansionText"] or button:CreateFontString("$parentExpansionText", "ARTWORK", "GlueFontHighlightSmall");
|
||||
local expansionNames = {
|
||||
["RealmListRealmButton1"] = "Wrath of the Lich King",
|
||||
["RealmListRealmButton2"] = "Dragonflight",
|
||||
};
|
||||
local buttonName = "RealmListRealmButton"..i;
|
||||
local expansionName = expansionNames[buttonName] or "Clásico";
|
||||
|
||||
if string.len(expansionName) > 23 then
|
||||
local midPoint = math.floor(string.len(expansionName) / 2)
|
||||
local spacePos = string.find(expansionName, " ", midPoint) or midPoint
|
||||
local line1 = string.sub(expansionName, 1, spacePos)
|
||||
local line2 = string.sub(expansionName, spacePos + 1)
|
||||
expansionText:SetText(line1.."\n"..line2)
|
||||
else
|
||||
expansionText:SetText(expansionName)
|
||||
end
|
||||
|
||||
expansionText:SetTextColor(0.9, 0.8, 0.5);
|
||||
expansionText:ClearAllPoints();
|
||||
expansionText:SetPoint("LEFT", _G["RealmListRealmButton"..i.."ExpansionLabel"], "RIGHT", -5, 0);
|
||||
expansionText:SetJustifyH("LEFT");
|
||||
|
||||
if string.len(expansionName) > 23 then
|
||||
expansionText:SetHeight(24)
|
||||
else
|
||||
expansionText:SetHeight(12)
|
||||
end
|
||||
|
||||
if ( realmDown ) then
|
||||
button:SetNormalFontObject(RealmDownNormal);
|
||||
button:SetHighlightFontObject(RealmDownHighlight);
|
||||
else
|
||||
if ( invalidRealm ) then
|
||||
button:SetNormalFontObject(RealmInvalidNormal);
|
||||
button:SetHighlightFontObject(RealmInvalidHighlight);
|
||||
else
|
||||
if ( numCharacters > 0 ) then
|
||||
button:SetNormalFontObject(RealmCharactersNormal);
|
||||
button:SetHighlightFontObject(GlueFontHighlightLeft);
|
||||
else
|
||||
button:SetNormalFontObject(RealmNoCharactersNormal);
|
||||
button:SetHighlightFontObject(GlueFontHighlightLeft);
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
CreateRealmButtonBorder(button)
|
||||
button:Show();
|
||||
button:SetID(realmIndex);
|
||||
button.name = name;
|
||||
|
||||
if ( realmDown ) then
|
||||
button:Disable();
|
||||
else
|
||||
button:Enable();
|
||||
end
|
||||
|
||||
if ( RealmList.selectedName ) then
|
||||
if ( name == RealmList.selectedName ) then
|
||||
RealmList.currentRealm = realmIndex;
|
||||
button:LockHighlight();
|
||||
RealmListOkButton:Enable();
|
||||
|
||||
if ( isFull and numCharacters == 0 ) then
|
||||
RealmList.showRealmIsFullDialog = 1;
|
||||
else
|
||||
RealmList.showRealmIsFullDialog = nil;
|
||||
end
|
||||
|
||||
if ( realmDown ) then
|
||||
RealmListOkButton:Disable();
|
||||
else
|
||||
RealmListOkButton:Enable();
|
||||
end
|
||||
else
|
||||
button:UnlockHighlight();
|
||||
end
|
||||
else
|
||||
if ( currentRealm == 1 ) then
|
||||
RealmList.currentRealm = realmIndex;
|
||||
button:LockHighlight();
|
||||
if ( realmDown ) then
|
||||
RealmListOkButton:Disable();
|
||||
else
|
||||
RealmListOkButton:Enable();
|
||||
end
|
||||
else
|
||||
button:UnlockHighlight();
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
RealmList.selectedName = nil;
|
||||
GlueScrollFrame_Update(RealmListScrollFrame, numRealms, MAX_REALMS_DISPLAYED, REALM_BUTTON_HEIGHT, RealmListHighlight, 557, 587);
|
||||
end
|
||||
|
||||
function RealmList_UpdateTabs(...)
|
||||
local numTabs = select("#", ...);
|
||||
local tab;
|
||||
for i=1, MAX_REALM_CATEGORY_TABS do
|
||||
tab = _G["RealmListTab"..i];
|
||||
if ( not tab ) then
|
||||
tab = CreateFrame("Button", "RealmListTab"..i, RealmListBackground, "RealmListTabButtonTemplate");
|
||||
tab:SetID(i);
|
||||
tab:SetPoint("LEFT", "RealmListTab"..(i-1), "RIGHT", -15, 0);
|
||||
end
|
||||
tab.disabled = nil;
|
||||
if ( numTabs == 1 ) then
|
||||
tab:Hide();
|
||||
elseif ( i <= numTabs ) then
|
||||
tab:SetText(select(i, ...));
|
||||
GlueTemplates_TabResize(0, tab);
|
||||
tab:Show();
|
||||
if (IsInvalidTournamentRealmCategory(i)) then
|
||||
tab:SetDisabledFontObject("GlueFontDisableSmall");
|
||||
tab.disabled = true;
|
||||
else
|
||||
tab:SetDisabledFontObject("GlueFontHighlightSmall");
|
||||
end
|
||||
else
|
||||
tab:Hide();
|
||||
end
|
||||
end
|
||||
GlueTemplates_SetNumTabs(RealmList, numTabs);
|
||||
if ( not GlueTemplates_GetSelectedTab(RealmList) ) then
|
||||
GlueTemplates_SetTab(RealmList, 1);
|
||||
end
|
||||
end
|
||||
|
||||
function RealmList_OnKeyDown(key)
|
||||
if ( key == "ESCAPE" ) then
|
||||
RealmList_OnCancel();
|
||||
elseif ( key == "ENTER" ) then
|
||||
RealmList_OnOk();
|
||||
elseif ( key == "PRINTSCREEN" ) then
|
||||
Screenshot();
|
||||
end
|
||||
end
|
||||
|
||||
function RealmList_OnOk()
|
||||
RealmList:Hide();
|
||||
-- If trying to join a Full realm then popup a dialog
|
||||
if ( RealmList.showRealmIsFullDialog ) then
|
||||
GlueDialog_Show("REALM_IS_FULL");
|
||||
return;
|
||||
end
|
||||
if ( RealmList.currentRealm > 0 ) then
|
||||
ChangeRealm(RealmList.selectedCategory , RealmList.currentRealm);
|
||||
end
|
||||
end
|
||||
|
||||
function RealmList_OnCancel()
|
||||
RealmList:Hide();
|
||||
RealmListDialogCancelled();
|
||||
local serverName, isPVP, isRP, isDown = GetServerName();
|
||||
|
||||
if ( (GetNumRealms(RealmList.selectedCategory) == 0) or (isDown) ) then
|
||||
SetGlueScreen("realmwizard");
|
||||
end
|
||||
end
|
||||
|
||||
function RealmSelectButton_OnClick(self, id)
|
||||
if ( IsInvalidLocale( RealmList.selectedCategory ) ) then
|
||||
--Display popup explaining locale specific realms
|
||||
GlueDialog_Show("REALM_LOCALE_WARNING");
|
||||
else
|
||||
RealmList.refreshTime = RealmListUpdateRate();
|
||||
RealmList.currentRealm = id;
|
||||
RealmList.selectedName = self.name;
|
||||
RealmListUpdate();
|
||||
end
|
||||
end
|
||||
|
||||
function RealmSelectButton_OnDoubleClick(self, id)
|
||||
if ( IsInvalidLocale( RealmList.selectedCategory ) ) then
|
||||
--Display popup explaining locale specific realms
|
||||
GlueDialog_Show("REALM_LOCALE_WARNING");
|
||||
else
|
||||
RealmList.currentRealm = id;
|
||||
RealmList.selectedName = self.name;
|
||||
RealmList_OnOk();
|
||||
end
|
||||
end
|
||||
|
||||
function RealmListScrollFrame_OnVerticalScroll(self, offset)
|
||||
RealmList.refreshTime = RealmListUpdateRate();
|
||||
local scrollbar = _G[self:GetName().."ScrollBar"];
|
||||
scrollbar:SetValue(offset);
|
||||
RealmList.offset = floor((offset / REALM_BUTTON_HEIGHT) + 0.5);
|
||||
RealmListUpdate();
|
||||
end
|
||||
|
||||
function RealmList_OnShow(self)
|
||||
InitializeRealmListLogo(self)
|
||||
ShowRealmListLogo()
|
||||
|
||||
RealmListUpdate();
|
||||
self.refreshTime = RealmListUpdateRate();
|
||||
local selectedCategory = GetSelectedCategory();
|
||||
if ( selectedCategory == 0 ) then
|
||||
selectedCategory = 1;
|
||||
end
|
||||
local button = _G["RealmListTab"..selectedCategory];
|
||||
if ( button ) then
|
||||
RealmListTab_OnClick(button);
|
||||
GlueTemplates_SetTab(RealmList, selectedCategory);
|
||||
end
|
||||
end
|
||||
|
||||
function RealmList_OnHide()
|
||||
CancelRealmListQuery()
|
||||
ResetRealmListLogoAnimation()
|
||||
end
|
||||
|
||||
function RealmList_OnUpdate(self, elapsed)
|
||||
if ( self.refreshTime ) then
|
||||
self.refreshTime = self.refreshTime - elapsed;
|
||||
if ( self.refreshTime <= 0 ) then
|
||||
self.refreshTime = nil;
|
||||
RequestRealmList();
|
||||
end
|
||||
end
|
||||
|
||||
-- Account Msg stuff
|
||||
if ( (ACCOUNT_MSG_NUM_AVAILABLE > 0) and not GlueDialog:IsShown() ) then
|
||||
if ( ACCOUNT_MSG_HEADERS_LOADED ) then
|
||||
if ( ACCOUNT_MSG_BODY_LOADED ) then
|
||||
local dialogString = AccountMsg_GetHeaderSubject( ACCOUNT_MSG_CURRENT_INDEX ).."\n\n"..AccountMsg_GetBody();
|
||||
GlueDialog_Show("ACCOUNT_MSG", dialogString);
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function RealmListTab_OnClick(tab)
|
||||
if ( tab.disabled ) then
|
||||
if ( IsTournamentRealmCategory(tab:GetID()) ) then
|
||||
--Display popup explaining tournament realms
|
||||
-- RealmHelpFrame:Show();
|
||||
GlueDialog_Show("REALM_TOURNAMENT_WARNING");
|
||||
end
|
||||
|
||||
local button = _G["RealmListTab"..RealmList.selectedCategory];
|
||||
if ( button ) then
|
||||
button:Click();
|
||||
end
|
||||
return;
|
||||
end
|
||||
RealmList.selectedCategory = tab:GetID();
|
||||
RealmListUpdate();
|
||||
end
|
||||
|
||||
function RealmHelpText_OnShow(self)
|
||||
self:SetText("<html><body><p>" .. string.format(REALM_HELP_FRAME_TEXT, REALM_HELP_FRAME_URL) .. "</p></body></html>");
|
||||
end
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,92 +0,0 @@
|
||||
-- ============================================================================
|
||||
-- MoonWell
|
||||
-- ============================================================================
|
||||
function RealmWizard_OnLoad(self)
|
||||
self:SetCamera(0);
|
||||
self:SetSequence(0);
|
||||
|
||||
if (IsStreamingTrial()) then
|
||||
AccountLoginCinematicsButton:Disable();
|
||||
RealmWizard:SetModel("Interface\\Glues\\Models\\UI_MainMenu\\UI_MainMenu.m2");
|
||||
else
|
||||
RealmWizard:SetModel("Interface\\Glues\\Models\\UI_MainMenu_Northrend\\UI_MainMenu_Northrend.m2");
|
||||
end
|
||||
end
|
||||
|
||||
function RealmWizard_OnShow(self)
|
||||
self:SetSequence(0);
|
||||
RealmWizardGameTypeButton1:Click(1);
|
||||
if ( not RealmWizard.selectedCategory ) then
|
||||
RealmWizardSuggest:Disable();
|
||||
end
|
||||
RealmWizard_UpdateCategories(GetRealmCategories());
|
||||
end
|
||||
|
||||
function RealmWizard_OnHide(self)
|
||||
StopAllSFX( 1.0 );
|
||||
end
|
||||
|
||||
function RealmWizard_UpdateCategories(...)
|
||||
local numTabs = select("#", ...);
|
||||
local button, buttonText;
|
||||
local numCategoriesShown = 0;
|
||||
|
||||
local categoryIndex = 1;
|
||||
for i=1, MAX_REALM_CATEGORY_TABS do
|
||||
button = _G["RealmWizardLocationButton"..i];
|
||||
buttonText = _G["RealmWizardLocationButton"..i.."Text"];
|
||||
while (IsTournamentRealmCategory(categoryIndex)) do
|
||||
categoryIndex = categoryIndex + 1;
|
||||
if (categoryIndex > numTabs) then
|
||||
break;
|
||||
end
|
||||
end
|
||||
if ( categoryIndex <= numTabs ) then
|
||||
buttonText:SetText(select(categoryIndex, ...));
|
||||
button.categoryIndex = categoryIndex;
|
||||
if ( categoryIndex == RealmWizard.selectedCategory ) then
|
||||
button:SetChecked(1);
|
||||
else
|
||||
button:SetChecked(nil);
|
||||
end
|
||||
button:Show();
|
||||
numCategoriesShown = numCategoriesShown + 1;
|
||||
categoryIndex = categoryIndex + 1;
|
||||
else
|
||||
button:Hide();
|
||||
end
|
||||
end
|
||||
RealmWizardLocation:SetHeight(numCategoriesShown * 28 + RealmWizardLocationLabelDescription:GetHeight() + 50);
|
||||
|
||||
if (GetCVar("realmName") == "") or not(GetCVar("realmName")) then
|
||||
RealmWizardSuggest:Enable();
|
||||
RealmWizard.selectedCategory = 1;
|
||||
RealmWizardSuggest:GetScript("OnClick")(RealmWizardSuggest)
|
||||
end
|
||||
end
|
||||
|
||||
function RealmWizardLocationButton_OnClick(id)
|
||||
RealmWizardSuggest:Enable();
|
||||
RealmWizard.selectedCategory = id;
|
||||
RealmWizard_UpdateCategories(GetRealmCategories());
|
||||
end
|
||||
|
||||
-- Wrapper function so it can be included as a dialog function
|
||||
function RealmWizard_SetRealm()
|
||||
ChangeRealm(RealmWizard.suggestedCategory, RealmWizard.suggestedID);
|
||||
end
|
||||
|
||||
function RealmWizard_Exit()
|
||||
DisconnectFromServer();
|
||||
SetGlueScreen("login");
|
||||
end
|
||||
|
||||
function RealmWizard_OnKeyDown(key)
|
||||
if ( key == "ESCAPE" ) then
|
||||
RealmWizard_Exit();
|
||||
elseif ( key == "ENTER" ) then
|
||||
RealmWizardSuggest:Click();
|
||||
elseif ( key == "PRINTSCREEN" ) then
|
||||
Screenshot();
|
||||
end
|
||||
end
|
||||
@@ -1,493 +0,0 @@
|
||||
-- ============================================================================
|
||||
-- MoonWell
|
||||
-- ============================================================================
|
||||
-- if you change something here you probably want to change the frame version too
|
||||
|
||||
local next = next;
|
||||
local function SecureNext(elements, key)
|
||||
-- not totally necessary in all cases in this file (since Interface Options are independent), but
|
||||
-- it's used anyway to keep things consistent, plus it's not a huge performance hindrance
|
||||
return securecall(next, elements, key);
|
||||
end
|
||||
|
||||
|
||||
-- [[ OptionsTooltip ]] --
|
||||
|
||||
function OptionsTooltip_OnLoad (self)
|
||||
local name = self:GetName();
|
||||
|
||||
-- set backdrop
|
||||
self:SetBackdropBorderColor(1.0, 1.0, 1.0);
|
||||
self:SetBackdropColor(0.09, 0.09, 0.19 );
|
||||
|
||||
-- setup text lines
|
||||
self.lines = {
|
||||
_G[name .. "Text1"],
|
||||
_G[name .. "Text2"],
|
||||
};
|
||||
|
||||
-- setup tooltip functions
|
||||
self.SetOwner =
|
||||
function (self, owner, ownerPoint, myPoint, xOffset, yOffset)
|
||||
self:Hide();
|
||||
self:ClearAllPoints();
|
||||
self:SetParent(owner);
|
||||
-- HACK: bumping the frame level up seems to get around a bug where frames on the same frame
|
||||
-- level are drawing as if they were on the same frame strata as the tooltip, even when their
|
||||
-- frame strata is lower than the tooltip
|
||||
self:SetFrameLevel(owner:GetFrameLevel() + 2);
|
||||
ownerPoint = ownerPoint or "TOPRIGHT";
|
||||
myPoint = myPoint or "BOTTOMLEFT";
|
||||
xOffset = xOffset or 8;
|
||||
yOffset = yOffset or 8;
|
||||
self:SetPoint(myPoint, owner, ownerPoint, xOffset, yOffset);
|
||||
end
|
||||
self.Clear =
|
||||
function (self)
|
||||
for _, line in next, self.lines do
|
||||
line:SetText("");
|
||||
line:SetTextColor(1, .82, 0, 1);
|
||||
line:Hide();
|
||||
end
|
||||
end
|
||||
self.AddLine =
|
||||
function (self, text, r, g, b, a)
|
||||
r = r or 1;
|
||||
g = g or .82;
|
||||
b = b or 0;
|
||||
a = a or 1;
|
||||
-- find a free line
|
||||
local freeLine;
|
||||
for _, line in next, self.lines do
|
||||
if ( not line:IsShown() ) then
|
||||
freeLine = line;
|
||||
break;
|
||||
end
|
||||
end
|
||||
freeLine:SetTextColor(r, g, b, a);
|
||||
freeLine:SetText(text);
|
||||
freeLine:Show();
|
||||
if ( self:IsShown() ) then
|
||||
OptionsTooltip_OnShow(self);
|
||||
else
|
||||
self:Show();
|
||||
end
|
||||
end
|
||||
self.SetText =
|
||||
function (self, text, r, g, b, a)
|
||||
self:Clear();
|
||||
self:AddLine(text, r, g, b, a);
|
||||
end
|
||||
end
|
||||
|
||||
function OptionsTooltip_OnShow (self)
|
||||
local height = 0;
|
||||
for _, line in next, self.lines do
|
||||
height = height + line:GetHeight();
|
||||
end
|
||||
self:SetHeight(height + 22);
|
||||
end
|
||||
|
||||
|
||||
-- [[ functions for OptionsFrameTemplates controls ]] --
|
||||
|
||||
function OptionsList_OnLoad (self, buttonTemplate)
|
||||
local name = self:GetName();
|
||||
|
||||
--Setup random things!
|
||||
self.scrollFrame = _G[name .. "List"];
|
||||
self:SetBackdropBorderColor(.6, .6, .6, 1);
|
||||
_G[name.."Bottom"]:SetVertexColor(.66, .66, .66);
|
||||
|
||||
--Create buttons for scrolling
|
||||
local buttons = {};
|
||||
local button = CreateFrame("BUTTON", name .. "Button1", self, buttonTemplate or "OptionsListButtonTemplate");
|
||||
button:SetPoint("TOPLEFT", self, 0, -8);
|
||||
self.buttonHeight = button:GetHeight();
|
||||
tinsert(buttons, button);
|
||||
|
||||
local maxButtons = (self:GetHeight() - 8) / self.buttonHeight;
|
||||
for i = 2, maxButtons do
|
||||
button = CreateFrame("BUTTON", name .. "Button" .. i, self, buttonTemplate or "OptionsListButtonTemplate");
|
||||
button:SetPoint("TOPLEFT", buttons[#buttons], "BOTTOMLEFT");
|
||||
tinsert(buttons, button);
|
||||
end
|
||||
|
||||
self.buttonHeight = button:GetHeight();
|
||||
self.buttons = buttons;
|
||||
end
|
||||
|
||||
function OptionsList_DisplayScrollBar (frame)
|
||||
local list = frame.scrollFrame;
|
||||
list:Show();
|
||||
|
||||
local listWidth = list:GetWidth();
|
||||
|
||||
for _, button in SecureNext, frame.buttons do
|
||||
button:SetWidth(button:GetWidth() - listWidth);
|
||||
end
|
||||
end
|
||||
|
||||
function OptionsList_HideScrollBar (frame)
|
||||
local list = frame.scrollFrame;
|
||||
list:Hide();
|
||||
|
||||
local listWidth = list:GetWidth();
|
||||
|
||||
for _, button in SecureNext, frame.buttons do
|
||||
button:SetWidth(button:GetWidth() + listWidth);
|
||||
end
|
||||
end
|
||||
|
||||
function OptionsList_HideButton (button)
|
||||
-- Sparse for now, who knows what will end up here?
|
||||
button:Hide();
|
||||
end
|
||||
|
||||
function OptionsList_DisplayButton (button, element)
|
||||
-- Do display things
|
||||
button:Show();
|
||||
button.element = element;
|
||||
|
||||
if (element.parent) then
|
||||
button:SetNormalFontObject(GlueFontHighlightSmall);
|
||||
button:SetHighlightFontObject(GlueFontHighlightSmall);
|
||||
button.text:SetPoint("LEFT", 16, 2);
|
||||
else
|
||||
button:SetNormalFontObject(GlueFontNormal);
|
||||
button:SetHighlightFontObject(GlueFontHighlight);
|
||||
button.text:SetPoint("LEFT", 8, 2);
|
||||
end
|
||||
button.text:SetText(element.name);
|
||||
|
||||
if (element.hasChildren) then
|
||||
if (element.collapsed) then
|
||||
button.toggle:SetNormalTexture("Interface\\Buttons\\UI-PlusButton-UP");
|
||||
button.toggle:SetPushedTexture("Interface\\Buttons\\UI-PlusButton-DOWN");
|
||||
else
|
||||
button.toggle:SetNormalTexture("Interface\\Buttons\\UI-MinusButton-UP");
|
||||
button.toggle:SetPushedTexture("Interface\\Buttons\\UI-MinusButton-DOWN");
|
||||
end
|
||||
button.toggle:Show();
|
||||
else
|
||||
button.toggle:Hide();
|
||||
end
|
||||
end
|
||||
|
||||
function OptionsList_DisplayPanel (panel)
|
||||
local panelContainer = panel:GetParent();
|
||||
if ( panelContainer.displayedPanel ) then
|
||||
panelContainer.displayedPanel:Hide();
|
||||
end
|
||||
panelContainer.displayedPanel = panel;
|
||||
|
||||
panel:ClearAllPoints();
|
||||
panel:SetPoint("TOPLEFT", panelContainer, "TOPLEFT");
|
||||
panel:SetPoint("BOTTOMRIGHT", panelContainer, "BOTTOMRIGHT");
|
||||
panel:Show();
|
||||
end
|
||||
|
||||
function OptionsList_ClearSelection (listFrame, buttons)
|
||||
for _, button in SecureNext, buttons do
|
||||
button:UnlockHighlight();
|
||||
end
|
||||
|
||||
listFrame.selection = nil;
|
||||
end
|
||||
|
||||
function OptionsList_SelectButton (listFrame, button)
|
||||
button:LockHighlight()
|
||||
|
||||
listFrame.selection = button.element;
|
||||
end
|
||||
|
||||
function OptionsListScroll_Update (frame)
|
||||
local parent = frame:GetParent();
|
||||
parent:update();
|
||||
end
|
||||
|
||||
function OptionsListButton_OnLoad (self, toggleFunc)
|
||||
self.text = _G[self:GetName() .. "Text"];
|
||||
self.highlight = self:GetHighlightTexture();
|
||||
self.highlight:SetVertexColor(.196, .388, .8);
|
||||
self.text:SetPoint("RIGHT", "$parentToggle", "LEFT", -2, 0);
|
||||
self:RegisterForClicks("LeftButtonUp", "RightButtonUp");
|
||||
|
||||
self.toggleFunc = toggleFunc or OptionsListButton_ToggleSubCategories;
|
||||
end
|
||||
|
||||
function OptionsListButton_OnClick (self, mouseButton)
|
||||
if ( mouseButton == "RightButton" ) then
|
||||
if ( self.element.hasChildren ) then
|
||||
OptionsListButtonToggle_OnClick(self.toggle);
|
||||
end
|
||||
return;
|
||||
end
|
||||
|
||||
local listFrame = self:GetParent();
|
||||
|
||||
OptionsList_ClearSelection(listFrame, listFrame.buttons);
|
||||
OptionsList_SelectButton(listFrame, self);
|
||||
|
||||
OptionsList_DisplayPanel(self.element);
|
||||
end
|
||||
|
||||
function OptionsListButton_ToggleSubCategories (button)
|
||||
local element = self.element;
|
||||
|
||||
element.collapsed = not element.collapsed;
|
||||
|
||||
local collapsed = element.collapsed;
|
||||
|
||||
local categoryFrame = self:GetParent();
|
||||
local optionsFrame = categoryFrame:GetParent();
|
||||
local categoryList = optionsFrame.categoryList;
|
||||
for _, category in SecureNext, categoryList do
|
||||
if ( category.parent == element.name ) then
|
||||
if ( collapsed ) then
|
||||
category.hidden = true;
|
||||
else
|
||||
category.hidden = false;
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
categoryFrame:update();
|
||||
end
|
||||
|
||||
function OptionsListButtonToggle_OnClick (self)
|
||||
local button = self:GetParent();
|
||||
button:toggleFunc();
|
||||
end
|
||||
|
||||
|
||||
-- [[ OptionsFrameTemplate ]] --
|
||||
|
||||
-- NOTE: the difference between "category" and "panel" is mostly a terminology difference
|
||||
-- let's say we have a set of options called foo
|
||||
-- "category" is used when referring to foo as data
|
||||
-- "panel" is used when referring to the frame that displays foo
|
||||
|
||||
function OptionsFrame_OnLoad(self)
|
||||
self.categoryFrame = _G[self:GetName().."CategoryFrame"];
|
||||
self.panelContainer = _G[self:GetName().."PanelContainer"];
|
||||
|
||||
self.okay = _G[self:GetName().."Okay"];
|
||||
self.cancel = _G[self:GetName().."Cancel"];
|
||||
self.apply = _G[self:GetName().."Apply"];
|
||||
self.default = _G[self:GetName().."Default"];
|
||||
|
||||
self.categoryList = { };
|
||||
end
|
||||
|
||||
function OptionsFrame_OnShow (self)
|
||||
if ( self.lastFrame ) then
|
||||
self.lastFrame:Hide();
|
||||
end
|
||||
|
||||
--Refresh the category frames and display the first category if nothing is displayed.
|
||||
self.categoryFrame:update();
|
||||
if ( not self.panelContainer.displayedPanel ) then
|
||||
OptionsListButton_OnClick(self.categoryFrame.buttons[1]);
|
||||
end
|
||||
--Refresh the categories to pick up changes made while the options frame was hidden.
|
||||
OptionsFrame_RefreshCategories(self);
|
||||
end
|
||||
|
||||
function OptionsFrame_OnHide (self)
|
||||
PlaySound("gsTitleOptionExit");
|
||||
|
||||
if ( self.lastFrame ) then
|
||||
self.lastFrame:Show();
|
||||
self.lastFrame = nil;
|
||||
end
|
||||
end
|
||||
|
||||
function OptionsFrame_OnKeyDown(self, key)
|
||||
if ( key == "ESCAPE" ) then
|
||||
self.cancel:Click();
|
||||
elseif ( key == "PRINTSCREEN" ) then
|
||||
Screenshot();
|
||||
end
|
||||
end
|
||||
|
||||
local function OptionsFrame_RunOkayForCategory (category)
|
||||
pcall(category.okay, category);
|
||||
end
|
||||
|
||||
local function OptionsFrame_RunCancelForCategory (category)
|
||||
pcall(category.cancel, category);
|
||||
end
|
||||
|
||||
local function OptionsFrame_RunDefaultForCategory (category)
|
||||
pcall(category.default, category);
|
||||
end
|
||||
|
||||
local function OptionsFrame_RunRefreshForCategory (category)
|
||||
pcall(category.refresh, category);
|
||||
end
|
||||
|
||||
function OptionsFrameOkay_OnClick (self, apply)
|
||||
--Iterate through registered panels and run their okay methods in a taint-safe fashion
|
||||
for _, category in SecureNext, self.categoryList do
|
||||
securecall(OptionsFrame_RunOkayForCategory, category);
|
||||
end
|
||||
end
|
||||
|
||||
function OptionsFrameCancel_OnClick (self)
|
||||
--Iterate through registered panels and run their cancel methods in a taint-safe fashion
|
||||
for _, category in SecureNext, self.categoryList do
|
||||
securecall(OptionsFrame_RunCancelForCategory, category);
|
||||
end
|
||||
end
|
||||
|
||||
function OptionsFrameDefault_OnClick (self)
|
||||
-- NOTE: defer setting defaults until a popup dialog button is clicked
|
||||
end
|
||||
|
||||
function OptionsFrame_SetAllToDefaults (self)
|
||||
--Iterate through registered panels and run their default methods in a taint-safe fashion
|
||||
for _, category in SecureNext, self.categoryList do
|
||||
securecall("pcall", category.default, category);
|
||||
end
|
||||
|
||||
--Refresh the categories to pick up changes made.
|
||||
OptionsFrame_RefreshCategories(self);
|
||||
end
|
||||
|
||||
function OptionsFrame_SetCurrentToDefaults (self)
|
||||
local displayedPanel = self.panelContainer.displayedPanel;
|
||||
if ( not displayedPanel or not displayedPanel.default ) then
|
||||
return;
|
||||
end
|
||||
|
||||
displayedPanel.default(displayedPanel);
|
||||
--Run the refresh method to refresh any values that were changed.
|
||||
displayedPanel.refresh(displayedPanel);
|
||||
end
|
||||
|
||||
function OptionsFrame_RefreshCategories (self)
|
||||
for _, category in SecureNext, self.categoryList do
|
||||
securecall(OptionsFrame_RunRefreshForCategory, category);
|
||||
end
|
||||
end
|
||||
|
||||
--Table to reuse! Yay reuse!
|
||||
local displayedElements = {};
|
||||
function OptionsCategoryFrame_Update (self)
|
||||
--Redraw the scroll lists
|
||||
local categoryList = self:GetParent().categoryList;
|
||||
|
||||
local element;
|
||||
for i, element in SecureNext, displayedElements do
|
||||
displayedElements[i] = nil;
|
||||
end
|
||||
for i, element in SecureNext, categoryList do
|
||||
if ( not element.hidden ) then
|
||||
tinsert(displayedElements, element);
|
||||
end
|
||||
end
|
||||
|
||||
local scrollFrame = self.scrollFrame;
|
||||
local buttons = self.buttons;
|
||||
local numButtons = #buttons;
|
||||
local numCategories = #displayedElements;
|
||||
if ( numCategories > numButtons and ( not scrollFrame:IsShown() ) ) then
|
||||
OptionsList_DisplayScrollBar(self);
|
||||
elseif ( numCategories <= numButtons and ( scrollFrame:IsShown() ) ) then
|
||||
OptionsList_HideScrollBar(self);
|
||||
end
|
||||
|
||||
FauxScrollFrame_Update(scrollFrame, numCategories, numButtons, buttons[1]:GetHeight());
|
||||
|
||||
local selection = self.selection;
|
||||
if ( selection ) then
|
||||
-- Store the currently selected element and clear all the buttons, we're redrawing.
|
||||
OptionsList_ClearSelection(self, self.buttons);
|
||||
end
|
||||
|
||||
local offset = FauxScrollFrame_GetOffset(scrollFrame);
|
||||
for i = 1, numButtons do
|
||||
element = displayedElements[i + offset];
|
||||
if ( not element ) then
|
||||
OptionsList_HideButton(buttons[i]);
|
||||
else
|
||||
OptionsList_DisplayButton(buttons[i], element);
|
||||
|
||||
if ( selection and selection == element and not self.selection ) then
|
||||
OptionsList_SelectButton(self, buttons[i]);
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
if ( selection ) then
|
||||
-- If there was a selected element before we cleared the button highlights, restore it, 'cause we're done.
|
||||
-- Note: This theoretically might already have been done by OptionsList_SelectButton, but in the event that the selected button hasn't been drawn, this is still necessary.
|
||||
self.selection = selection;
|
||||
end
|
||||
end
|
||||
|
||||
function OptionsFrame_OpenToCategory (self, panel)
|
||||
local panelName;
|
||||
if ( type(panel) == "string" ) then
|
||||
panelName = panel;
|
||||
panel = nil;
|
||||
end
|
||||
if ( not panelName or panel ) then
|
||||
return;
|
||||
end
|
||||
|
||||
local categoryList = self.categoryList;
|
||||
|
||||
local elementToDisplay;
|
||||
for i, element in SecureNext, categoryList do
|
||||
if ( element == panel or (panelName and element.name and element.name == panelName) ) then
|
||||
elementToDisplay = element;
|
||||
break;
|
||||
end
|
||||
end
|
||||
if ( not elementToDisplay ) then
|
||||
return;
|
||||
end
|
||||
|
||||
local buttons = self.categoryFrame.buttons
|
||||
for i, button in SecureNext, buttons do
|
||||
if ( button.element == elementToDisplay ) then
|
||||
button:Click();
|
||||
elseif ( elementToDisplay.parent and button.element and (button.element.name == elementToDisplay.parent and button.element.collapsed) ) then
|
||||
button.toggle:Click();
|
||||
end
|
||||
end
|
||||
|
||||
if ( not self:IsShown() ) then
|
||||
self:Show();
|
||||
end
|
||||
end
|
||||
|
||||
function OptionsFrame_AddCategory (self, panel)
|
||||
if ( not issecure() ) then
|
||||
-- disallow any non-blizzard code to enter here...
|
||||
-- we may want to change this in the future if we merge this with Interface Options
|
||||
end
|
||||
local parent = panel.parent;
|
||||
if ( parent ) then
|
||||
for i = 1, #self.categoryList do
|
||||
if ( self.categoryList[i].name == parent ) then
|
||||
if ( self.categoryList[i].hasChildren ) then
|
||||
panel.hidden = self.categoryList[i].collapsed;
|
||||
else
|
||||
panel.hidden = true;
|
||||
self.categoryList[i].hasChildren = true;
|
||||
self.categoryList[i].collapsed = true;
|
||||
end
|
||||
tinsert(self.categoryList, i + 1, panel);
|
||||
self.categoryFrame:update();
|
||||
return;
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
tinsert(self.categoryList, panel);
|
||||
self.categoryFrame:update();
|
||||
end
|
||||
|
||||
@@ -1,542 +0,0 @@
|
||||
<!-- MoonWell -->
|
||||
<Ui xmlns="http://www.blizzard.com/wow/ui/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.blizzard.com/wow/ui/
|
||||
..\FrameXML\UI.xsd">
|
||||
<!-- if you change something here you probably want to change the frame version too -->
|
||||
|
||||
<Script file="OptionsFrameTemplates.lua"/>
|
||||
|
||||
<!-- OptionsTooltip -->
|
||||
<!-- because glue screens don't have a GameTooltip -->
|
||||
|
||||
<Frame name="OptionsTooltip" frameStrata="TOOLTIP" hidden="true" clampedToScreen="true">
|
||||
<Size>
|
||||
<AbsDimension x="268" y="0"/>
|
||||
</Size>
|
||||
<Backdrop bgFile="Interface\Tooltips\UI-Tooltip-Background" edgeFile="Interface\Tooltips\UI-Tooltip-Border" tile="true">
|
||||
<EdgeSize>
|
||||
<AbsValue val="16"/>
|
||||
</EdgeSize>
|
||||
<TileSize>
|
||||
<AbsValue val="16"/>
|
||||
</TileSize>
|
||||
<BackgroundInsets>
|
||||
<AbsInset left="5" right="5" top="5" bottom="5"/>
|
||||
</BackgroundInsets>
|
||||
</Backdrop>
|
||||
<Layers>
|
||||
<Layer level="ARTWORK">
|
||||
<FontString name="$parentText1" inherits="GlueFontNormal" justifyH="LEFT">
|
||||
<Size>
|
||||
<AbsDimension x="250" y="0"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="10" y="-10"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
<Anchor point="RIGHT">
|
||||
<Offset>
|
||||
<AbsDimension x="-8" y="0"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</FontString>
|
||||
<FontString name="$parentText2" inherits="GlueFontNormalSmall" justifyH="LEFT">
|
||||
<Size>
|
||||
<AbsDimension x="250" y="0"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="$parentText1" relativePoint="BOTTOMLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-2"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
<Anchor point="RIGHT">
|
||||
<Offset>
|
||||
<AbsDimension x="-8" y="0"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</FontString>
|
||||
</Layer>
|
||||
</Layers>
|
||||
<Scripts>
|
||||
<OnLoad>
|
||||
OptionsTooltip_OnLoad(self);
|
||||
</OnLoad>
|
||||
<OnShow>
|
||||
OptionsTooltip_OnShow(self);
|
||||
</OnShow>
|
||||
</Scripts>
|
||||
</Frame>
|
||||
|
||||
<!-- Options Frame Templates -->
|
||||
|
||||
<Button name="OptionsFrameTabButtonTemplate" virtual="true">
|
||||
<Size>
|
||||
<AbsDimension x="115" y="24"/>
|
||||
</Size>
|
||||
<Layers>
|
||||
<Layer level="BORDER">
|
||||
<Texture name="$parentLeftDisabled" file="Interface\OptionsFrame\UI-OptionsFrame-ActiveTab">
|
||||
<Size>
|
||||
<AbsDimension x="20" y="24"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="BOTTOMLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-3"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<TexCoords left="0" right="0.15625" top="0" bottom="1.0"/>
|
||||
</Texture>
|
||||
<Texture name="$parentMiddleDisabled" file="Interface\OptionsFrame\UI-OptionsFrame-ActiveTab">
|
||||
<Size>
|
||||
<AbsDimension x="88" y="24"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="LEFT" relativeTo="$parentLeftDisabled" relativePoint="RIGHT"/>
|
||||
</Anchors>
|
||||
<TexCoords left="0.15625" right="0.84375" top="0" bottom="1.0"/>
|
||||
</Texture>
|
||||
<Texture name="$parentRightDisabled" file="Interface\OptionsFrame\UI-OptionsFrame-ActiveTab">
|
||||
<Size>
|
||||
<AbsDimension x="20" y="24"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="LEFT" relativeTo="$parentMiddleDisabled" relativePoint="RIGHT"/>
|
||||
</Anchors>
|
||||
<TexCoords left="0.84375" right="1.0" top="0" bottom="1.0"/>
|
||||
</Texture>
|
||||
<Texture name="$parentLeft" file="Interface\OptionsFrame\UI-OptionsFrame-InActiveTab">
|
||||
<Size>
|
||||
<AbsDimension x="20" y="24"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT"/>
|
||||
</Anchors>
|
||||
<TexCoords left="0" right="0.15625" top="0" bottom="1.0"/>
|
||||
</Texture>
|
||||
<Texture name="$parentMiddle" file="Interface\OptionsFrame\UI-OptionsFrame-InActiveTab">
|
||||
<Size>
|
||||
<AbsDimension x="88" y="24"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="LEFT" relativeTo="$parentLeft" relativePoint="RIGHT"/>
|
||||
</Anchors>
|
||||
<TexCoords left="0.15625" right="0.84375" top="0" bottom="1.0"/>
|
||||
</Texture>
|
||||
<Texture name="$parentRight" file="Interface\OptionsFrame\UI-OptionsFrame-InActiveTab">
|
||||
<Size>
|
||||
<AbsDimension x="20" y="24"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="LEFT" relativeTo="$parentMiddle" relativePoint="RIGHT"/>
|
||||
</Anchors>
|
||||
<TexCoords left="0.84375" right="1.0" top="0" bottom="1.0"/>
|
||||
</Texture>
|
||||
</Layer>
|
||||
</Layers>
|
||||
<Scripts>
|
||||
<OnLoad>
|
||||
self:SetFrameLevel(self:GetFrameLevel() + 4);
|
||||
</OnLoad>
|
||||
<OnShow>
|
||||
PanelTemplates_TabResize(self, 0);
|
||||
_G[self:GetName().."HighlightTexture"]:SetWidth(self:GetTextWidth() + 30);
|
||||
</OnShow>
|
||||
</Scripts>
|
||||
<ButtonText name="$parentText">
|
||||
<Anchors>
|
||||
<Anchor point="CENTER">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-3"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</ButtonText>
|
||||
<NormalFont style="GlueFontNormalSmall"/>
|
||||
<HighlightFont style="GlueFontHighlightSmall"/>
|
||||
<DisabledFont style="GlueFontHighlightSmall"/>
|
||||
<HighlightTexture name="$parentHighlightTexture" file="Interface\PaperDollInfoFrame\UI-Character-Tab-Highlight" alphaMode="ADD">
|
||||
<Anchors>
|
||||
<Anchor point="LEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="10" y="-4"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
<Anchor point="RIGHT">
|
||||
<Offset>
|
||||
<AbsDimension x="-10" y="-4"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</HighlightTexture>
|
||||
</Button>
|
||||
<Frame name="OptionsFrameListTemplate" virtual="true">
|
||||
<Layers>
|
||||
<!--
|
||||
<Layer level="ARTWORK">
|
||||
<FontString name="$parentLabel" inherits="GlueFontHighlight" text="CATEGORY">
|
||||
<Anchors>
|
||||
<Anchor point="BOTTOMLEFT" relativeTo="$parent" relativePoint="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="6" y="4"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</FontString>
|
||||
</Layer>
|
||||
-->
|
||||
<Layer level="BACKGROUND">
|
||||
<!-- Yay. It's a backdrop. -->
|
||||
<Texture name="$parentTopLeft" file="Interface\Tooltips\UI-Tooltip-Border">
|
||||
<Size>
|
||||
<AbsDimension x="16" y="16"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT"/>
|
||||
</Anchors>
|
||||
<TexCoords left="0.5" right="0.625" top="0" bottom="1"/>
|
||||
</Texture>
|
||||
<Texture name="$parentBottomLeft" file="Interface\Tooltips\UI-Tooltip-Border">
|
||||
<Size>
|
||||
<AbsDimension x="16" y="16"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="BOTTOMLEFT"/>
|
||||
</Anchors>
|
||||
<TexCoords left="0.75" right="0.875" top="0" bottom="1"/>
|
||||
</Texture>
|
||||
<Texture name="$parentBottomRight" file="Interface\Tooltips\UI-Tooltip-Border">
|
||||
<Size>
|
||||
<AbsDimension x="16" y="16"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="BOTTOMRIGHT"/>
|
||||
</Anchors>
|
||||
<TexCoords left="0.875" right="1" top="0" bottom="1"/>
|
||||
</Texture>
|
||||
<Texture name="$parentTopRight" file="Interface\Tooltips\UI-Tooltip-Border">
|
||||
<Size>
|
||||
<AbsDimension x="16" y="16"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPRIGHT"/>
|
||||
</Anchors>
|
||||
<TexCoords left="0.625" right="0.75" top="0" bottom="1"/>
|
||||
</Texture>
|
||||
<Texture name="$parentLeft" file="Interface\Tooltips\UI-Tooltip-Border">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="$parentTopLeft" relativePoint="BOTTOMLEFT"/>
|
||||
<Anchor point="BOTTOMRIGHT" relativeTo="$parentBottomLeft" relativePoint="TOPRIGHT"/>
|
||||
</Anchors>
|
||||
<TexCoords left="0" right="0.125" top="0" bottom="1"/>
|
||||
</Texture>
|
||||
<Texture name="$parentRight" file="Interface\Tooltips\UI-Tooltip-Border">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="$parentTopRight" relativePoint="BOTTOMLEFT"/>
|
||||
<Anchor point="BOTTOMRIGHT" relativeTo="$parentBottomRight" relativePoint="TOPRIGHT"/>
|
||||
</Anchors>
|
||||
<TexCoords left="0.125" right="0.25" top="0" bottom="1"/>
|
||||
</Texture>
|
||||
<Texture name="$parentBottom" file="Interface\OptionsFrame\UI-OptionsFrame-Spacer">
|
||||
<Size>
|
||||
<AbsDimension x="0" y="16"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="BOTTOMLEFT" relativeTo="$parentBottomLeft" relativePoint="BOTTOMRIGHT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-2"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
<Anchor point="BOTTOMRIGHT" relativeTo="$parentBottomRight" relativePoint="BOTTOMLEFT"/>
|
||||
</Anchors>
|
||||
</Texture>
|
||||
<Texture name="$parentTop" file="Interface\OptionsFrame\UI-OptionsFrame-Spacer">
|
||||
<Size>
|
||||
<AbsDimension x="0" y="16"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="$parentTopLeft" relativePoint="TOPRIGHT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="7"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
<Anchor point="TOPRIGHT" relativeTo="$parentTopRight" relativePoint="TOPLEFT"/>
|
||||
</Anchors>
|
||||
</Texture>
|
||||
</Layer>
|
||||
</Layers>
|
||||
<Frames>
|
||||
<ScrollFrame name="$parentList" hidden="true">
|
||||
<Size>
|
||||
<AbsDimension x="24" y="0"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPRIGHT">
|
||||
<Offset>
|
||||
<AbsDimension x="-3" y="-3"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
<Anchor point="BOTTOMRIGHT">
|
||||
<Offset>
|
||||
<AbsDimension x="-3" y="3"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Backdrop edgeFile="Interface\Tooltips\UI-Tooltip-Border" tile="true">
|
||||
<EdgeSize>
|
||||
<AbsValue val="12"/>
|
||||
</EdgeSize>
|
||||
<TileSize>
|
||||
<AbsValue val="16"/>
|
||||
</TileSize>
|
||||
<BackgroundInsets>
|
||||
<AbsInset left="0" right="0" top="5" bottom="5"/>
|
||||
</BackgroundInsets>
|
||||
</Backdrop>
|
||||
<Scripts>
|
||||
<OnLoad>
|
||||
self:SetBackdropBorderColor(.6, .6, .6, .6);
|
||||
GlueScrollFrame_OnLoad(self);
|
||||
</OnLoad>
|
||||
<OnMouseWheel>
|
||||
GlueScrollFrameTemplate_OnMouseWheel(self, delta);
|
||||
</OnMouseWheel>
|
||||
<OnVerticalScroll>
|
||||
FauxScrollFrame_OnVerticalScroll(self, offset, self:GetParent().buttonHeight, OptionsListScroll_Update);
|
||||
</OnVerticalScroll>
|
||||
</Scripts>
|
||||
<Frames>
|
||||
<Slider name="$parentScrollBar" inherits="GlueScrollBarTemplate">
|
||||
<Anchors>
|
||||
<Anchor point="TOPRIGHT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-20"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
<Anchor point="BOTTOMLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="19"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnValueChanged>
|
||||
self:GetParent():SetVerticalScroll(value);
|
||||
</OnValueChanged>
|
||||
</Scripts>
|
||||
</Slider>
|
||||
<Frame name="$parentScrollChildFrame" hidden="true"/>
|
||||
</Frames>
|
||||
</ScrollFrame>
|
||||
</Frames>
|
||||
<Scripts>
|
||||
<OnLoad>
|
||||
OptionsList_OnLoad(self);
|
||||
</OnLoad>
|
||||
</Scripts>
|
||||
</Frame>
|
||||
<Button name="OptionsListButtonTemplate" virtual="true">
|
||||
<Size>
|
||||
<AbsDimension x="175" y="18"/>
|
||||
</Size>
|
||||
<Frames>
|
||||
<Button name="$parentToggle">
|
||||
<Size>
|
||||
<AbsDimension x="14" y="14"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPRIGHT" relativeTo="$parent" relativePoint="TOPRIGHT">
|
||||
<Offset>
|
||||
<AbsDimension x="-6" y="-1"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>
|
||||
self:GetParent().toggle = self;
|
||||
self:RegisterForClicks("LeftButtonUp", "RightButtonUp");
|
||||
</OnLoad>
|
||||
<OnClick>
|
||||
PlaySound("igMainMenuOptionCheckBoxOn");
|
||||
OptionsFrame_ToggleSubCategories(self);
|
||||
</OnClick>
|
||||
</Scripts>
|
||||
<NormalTexture name="$parentNormalTexture" file="Interface\Buttons\UI-MinusButton-UP"/>
|
||||
<PushedTexture name="$parentPushedTexture" file="Interface\Buttons\UI-MinusButton-DOWN"/>
|
||||
<HighlightTexture name="$parentHighlightTexture" file="Interface\Buttons\UI-PlusButton-Hilight" alphaMode="ADD"/>
|
||||
</Button>
|
||||
</Frames>
|
||||
<Scripts>
|
||||
<OnLoad>
|
||||
OptionsListButton_OnLoad(self);
|
||||
</OnLoad>
|
||||
<OnClick>
|
||||
PlaySound("igMainMenuOptionCheckBoxOn");
|
||||
OptionsListButton_OnClick(self, button);
|
||||
</OnClick>
|
||||
</Scripts>
|
||||
<ButtonText name="$parentText" justifyH="LEFT">
|
||||
<Anchors>
|
||||
<Anchor point="RIGHT" relativeTo="$parentToggle" relativePoint="LEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="-2" y="0"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</ButtonText>
|
||||
<NormalFont style="GlueFontNormal"/>
|
||||
<HighlightFont style="GlueFontHighlight"/>
|
||||
<HighlightTexture file="Interface\QuestFrame\UI-QuestLogTitleHighlight" alphaMode="ADD">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="1"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
<Anchor point="BOTTOMRIGHT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="1"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</HighlightTexture>
|
||||
</Button>
|
||||
|
||||
<Frame name="OptionsFrameTemplate" toplevel="true" parent="GlueParent" virtual="true" hidden="true" enableMouse="true" enableKeyboard="true" frameStrata="HIGH">
|
||||
<Size>
|
||||
<AbsDimension x="648" y="520"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="CENTER"/>
|
||||
</Anchors>
|
||||
<Backdrop bgFile="Interface\DialogFrame\UI-DialogBox-Background" edgeFile="Interface\tooltips\ui-tooltip-border-maw" tile="true">
|
||||
<BackgroundInsets>
|
||||
<AbsInset left="3" right="3" top="3" bottom="3"/>
|
||||
</BackgroundInsets>
|
||||
<TileSize>
|
||||
<AbsValue val="16"/>
|
||||
</TileSize>
|
||||
<EdgeSize>
|
||||
<AbsValue val="16"/>
|
||||
</EdgeSize>
|
||||
</Backdrop>
|
||||
<Layers>
|
||||
<Layer level="ARTWORK">
|
||||
<Texture name="$parentHeader">
|
||||
<Size>
|
||||
<AbsDimension x="300" y="75"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOP">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="12"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</Texture>
|
||||
<FontString name="$parentHeaderText" inherits="GlueFontNormal" text="OPTIONS">
|
||||
<Anchors>
|
||||
<Anchor point="TOP" relativeTo="$parentHeader">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="-25"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</FontString>
|
||||
</Layer>
|
||||
</Layers>
|
||||
<Frames>
|
||||
<Frame name="$parentBackdrop" enableMouse="true">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="GlueParent" relativePoint="TOPLEFT"/>
|
||||
<Anchor point="BOTTOMRIGHT" relativeTo="GlueParent" relativePoint="BOTTOMRIGHT"/>
|
||||
</Anchors>
|
||||
<Layers>
|
||||
<Layer level="BACKGROUND">
|
||||
<Texture setAllPoints="true">
|
||||
<Color r="0" g="0" b="0" a=".75"/>
|
||||
</Texture>
|
||||
</Layer>
|
||||
</Layers>
|
||||
<Scripts>
|
||||
<OnLoad>
|
||||
self:SetFrameLevel(self:GetParent():GetFrameLevel() - 1);
|
||||
</OnLoad>
|
||||
</Scripts>
|
||||
</Frame>
|
||||
<Frame name="$parentCategoryFrame" inherits="OptionsFrameListTemplate">
|
||||
<Size>
|
||||
<AbsDimension x="175" y="429"/>
|
||||
</Size>
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="22" y="-40"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Scripts>
|
||||
<OnLoad>
|
||||
--self.labelText = CATEGORY;
|
||||
OptionsList_OnLoad(self);
|
||||
self.update = OptionsCategoryFrame_Update;
|
||||
</OnLoad>
|
||||
</Scripts>
|
||||
</Frame>
|
||||
<Frame name="$parentPanelContainer">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativeTo="$parentCategoryFrame" relativePoint="TOPRIGHT">
|
||||
<Offset>
|
||||
<AbsDimension x="16" y="0"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
<Anchor point="BOTTOMLEFT" relativeTo="$parentCategoryFrame" relativePoint="BOTTOMRIGHT">
|
||||
<Offset>
|
||||
<AbsDimension x="16" y="1"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
<Anchor point="RIGHT">
|
||||
<Offset>
|
||||
<AbsDimension x="-22" y="0"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
<Backdrop edgeFile="Interface\Tooltips\UI-Tooltip-Border" tile="true">
|
||||
<EdgeSize>
|
||||
<AbsValue val="16"/>
|
||||
</EdgeSize>
|
||||
<TileSize>
|
||||
<AbsValue val="16"/>
|
||||
</TileSize>
|
||||
<BackgroundInsets>
|
||||
<AbsInset left="5" right="5" top="5" bottom="5"/>
|
||||
</BackgroundInsets>
|
||||
</Backdrop>
|
||||
<Scripts>
|
||||
<OnLoad>
|
||||
self:SetBackdropBorderColor(.6, .6, .6, 1);
|
||||
</OnLoad>
|
||||
</Scripts>
|
||||
</Frame>
|
||||
</Frames>
|
||||
<Scripts>
|
||||
<OnLoad>
|
||||
OptionsFrame_OnLoad(self);
|
||||
</OnLoad>
|
||||
<OnShow>
|
||||
OptionsFrame_OnShow(self);
|
||||
</OnShow>
|
||||
<OnHide>
|
||||
OptionsFrame_OnHide(self);
|
||||
</OnHide>
|
||||
<OnKeyDown>
|
||||
OptionsFrame_OnKeyDown(self, key);
|
||||
</OnKeyDown>
|
||||
</Scripts>
|
||||
</Frame>
|
||||
</Ui>
|
||||
@@ -1,459 +0,0 @@
|
||||
-- ============================================================================
|
||||
-- MoonWell
|
||||
-- ============================================================================
|
||||
-- if you change something here you probably want to change the frame version too
|
||||
|
||||
CONTROLTYPE_CHECKBOX = 1;
|
||||
CONTROLTYPE_DROPDOWN = 2;
|
||||
CONTROLTYPE_SLIDER = 3;
|
||||
|
||||
|
||||
local ALT_KEY = "altkey";
|
||||
local CONTROL_KEY = "controlkey";
|
||||
local SHIFT_KEY = "shiftkey";
|
||||
local NO_KEY = "none";
|
||||
|
||||
local next = next;
|
||||
local function SecureNext(elements, key)
|
||||
return securecall(next, elements, key);
|
||||
end
|
||||
|
||||
local tinsert = tinsert;
|
||||
local tonumber = tonumber;
|
||||
local tostring = tostring;
|
||||
local gsub = gsub;
|
||||
|
||||
|
||||
-- [[ functions for OptionsPanelTemplates controls ]] --
|
||||
|
||||
function BlizzardOptionsPanel_Slider_Disable (slider)
|
||||
local name = slider:GetName();
|
||||
getmetatable(slider).__index.Disable(slider);
|
||||
_G[name.."Text"]:SetVertexColor(GRAY_FONT_COLOR.r, GRAY_FONT_COLOR.g, GRAY_FONT_COLOR.b);
|
||||
_G[name.."Low"]:SetVertexColor(GRAY_FONT_COLOR.r, GRAY_FONT_COLOR.g, GRAY_FONT_COLOR.b);
|
||||
_G[name.."High"]:SetVertexColor(GRAY_FONT_COLOR.r, GRAY_FONT_COLOR.g, GRAY_FONT_COLOR.b);
|
||||
end
|
||||
|
||||
function BlizzardOptionsPanel_Slider_Enable (slider)
|
||||
local name = slider:GetName();
|
||||
getmetatable(slider).__index.Enable(slider);
|
||||
_G[name.."Text"]:SetVertexColor(NORMAL_FONT_COLOR.r , NORMAL_FONT_COLOR.g , NORMAL_FONT_COLOR.b);
|
||||
_G[name.."Low"]:SetVertexColor(HIGHLIGHT_FONT_COLOR.r, HIGHLIGHT_FONT_COLOR.g, HIGHLIGHT_FONT_COLOR.b);
|
||||
_G[name.."High"]:SetVertexColor(HIGHLIGHT_FONT_COLOR.r, HIGHLIGHT_FONT_COLOR.g, HIGHLIGHT_FONT_COLOR.b);
|
||||
end
|
||||
|
||||
function BlizzardOptionsPanel_Slider_Refresh (slider)
|
||||
local value;
|
||||
|
||||
if ( slider.GetCurrentValue ) then
|
||||
value = slider:GetCurrentValue();
|
||||
elseif ( slider.cvar ) then
|
||||
value = BlizzardOptionsPanel_GetCVarSafe(slider.cvar);
|
||||
end
|
||||
|
||||
if ( value ) then
|
||||
if ( slider.SetDisplayValue ) then
|
||||
slider:SetDisplayValue(value);
|
||||
else
|
||||
slider:SetValue(value);
|
||||
end
|
||||
slider.value = value;
|
||||
end
|
||||
end
|
||||
|
||||
function BlizzardOptionsPanel_CheckButton_OnClick (checkButton)
|
||||
BlizzardOptionsPanel_CheckButton_SetNewValue(checkButton);
|
||||
|
||||
local setting = "0";
|
||||
if ( checkButton:GetChecked() ) then
|
||||
if ( not checkButton.invert ) then
|
||||
setting = "1";
|
||||
end
|
||||
elseif ( checkButton.invert ) then
|
||||
setting = "1";
|
||||
end
|
||||
|
||||
if ( checkButton.setFunc ) then
|
||||
checkButton.setFunc(setting);
|
||||
end
|
||||
end
|
||||
|
||||
function BlizzardOptionsPanel_CheckButton_SetNewValue (checkButton)
|
||||
local setting = "0";
|
||||
if ( checkButton:GetChecked() ) then
|
||||
if ( not checkButton.invert ) then
|
||||
setting = "1"
|
||||
end
|
||||
elseif ( checkButton.invert ) then
|
||||
setting = "1"
|
||||
end
|
||||
|
||||
if ( setting == checkButton.value ) then
|
||||
checkButton.newValue = nil;
|
||||
else
|
||||
checkButton.newValue = setting;
|
||||
end
|
||||
|
||||
if ( checkButton.dependentControls ) then
|
||||
if ( checkButton:GetChecked() ) then
|
||||
for _, control in SecureNext, checkButton.dependentControls do
|
||||
control:Enable();
|
||||
end
|
||||
else
|
||||
for _, control in SecureNext, checkButton.dependentControls do
|
||||
control:Disable();
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
--[[
|
||||
function BlizzardOptionsPanel_CheckButton_OnClick (checkButton)
|
||||
local setting = "0";
|
||||
if ( checkButton:GetChecked() ) then
|
||||
if ( not checkButton.invert ) then
|
||||
setting = "1"
|
||||
end
|
||||
elseif ( checkButton.invert ) then
|
||||
setting = "1"
|
||||
end
|
||||
|
||||
checkButton.value = setting;
|
||||
|
||||
if ( checkButton.cvar ) then
|
||||
BlizzardOptionsPanel_SetCVarSafe(checkButton.cvar, setting, checkButton.event);
|
||||
end
|
||||
|
||||
if ( checkButton.uvar ) then
|
||||
_G[checkButton.uvar] = setting;
|
||||
end
|
||||
|
||||
if ( checkButton.dependentControls ) then
|
||||
if ( checkButton:GetChecked() ) then
|
||||
for _, control in SecureNext, checkButton.dependentControls do
|
||||
control:Enable();
|
||||
end
|
||||
else
|
||||
for _, control in SecureNext, checkButton.dependentControls do
|
||||
control:Disable();
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
if ( checkButton.setFunc ) then
|
||||
checkButton.setFunc(checkButton.value);
|
||||
end
|
||||
end
|
||||
--]]
|
||||
function BlizzardOptionsPanel_CheckButton_Refresh (checkButton)
|
||||
local value;
|
||||
|
||||
if ( checkButton.cvar ) then
|
||||
value = GetCVar(checkButton.cvar);
|
||||
elseif ( checkButton.GetValue ) then
|
||||
value = tostring(checkButton:GetValue());
|
||||
end
|
||||
|
||||
if ( value ) then
|
||||
if ( not checkButton.invert ) then
|
||||
if ( value == "1" ) then
|
||||
checkButton:SetChecked(true);
|
||||
else
|
||||
checkButton:SetChecked(false);
|
||||
end
|
||||
else
|
||||
if ( value == "0" ) then
|
||||
checkButton:SetChecked(true);
|
||||
else
|
||||
checkButton:SetChecked(false);
|
||||
end
|
||||
end
|
||||
|
||||
if ( checkButton.dependentControls ) then
|
||||
if ( checkButton:GetChecked() ) then
|
||||
for _, depControl in SecureNext, checkButton.dependentControls do
|
||||
depControl:Enable();
|
||||
end
|
||||
else
|
||||
for _, depControl in SecureNext, checkButton.dependentControls do
|
||||
depControl:Disable();
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
checkButton.value = value;
|
||||
end
|
||||
end
|
||||
|
||||
function BlizzardOptionsPanel_DropDown_Refresh (dropDown)
|
||||
if ( dropDown.RefreshValue ) then
|
||||
dropDown:RefreshValue();
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
-- [[ BlizzardOptionsPanel functions ]] --
|
||||
|
||||
function BlizzardOptionsPanel_SetCVarSafe (cvar, value, event)
|
||||
local oldValue = GetCVar(cvar);
|
||||
oldValueNum = tonumber(oldValue);
|
||||
valueNum = tonumber(value);
|
||||
if ( oldValueNum or valueNum ) then
|
||||
if ( oldValueNum ~= valueNum ) then
|
||||
SetCVar(cvar, value, event);
|
||||
end
|
||||
else
|
||||
if ( oldValue ~= value ) then
|
||||
SetCVar(cvar, value, event);
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function BlizzardOptionsPanel_GetCVarSafe (cvar)
|
||||
local value = GetCVar(cvar);
|
||||
value = tonumber(value) or value;
|
||||
return value;
|
||||
end
|
||||
|
||||
function BlizzardOptionsPanel_GetCVarDefaultSafe (cvar)
|
||||
local value = GetCVarDefault(cvar);
|
||||
value = tonumber(value) or value;
|
||||
return value;
|
||||
end
|
||||
|
||||
function BlizzardOptionsPanel_GetCVarMinSafe (cvar)
|
||||
local value = GetCVarMin(cvar);
|
||||
value = tonumber(value) or value;
|
||||
return value;
|
||||
end
|
||||
|
||||
function BlizzardOptionsPanel_GetCVarMaxSafe (cvar)
|
||||
local value = GetCVarMax(cvar);
|
||||
value = tonumber(value) or value;
|
||||
return value;
|
||||
end
|
||||
|
||||
function BlizzardOptionsPanel_OkayControl (control)
|
||||
if ( control.newValue ) then
|
||||
if ( control.value ~= control.newValue ) then
|
||||
control:SetValue(control.newValue);
|
||||
control.value = control.newValue;
|
||||
control.newValue = nil;
|
||||
end
|
||||
elseif ( control.value ) then
|
||||
if ( control:GetValue() ~= control.value ) then
|
||||
control:SetValue(control.value);
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function BlizzardOptionsPanel_CancelControl (control)
|
||||
if ( control.newValue ) then
|
||||
if ( control.value and control.value ~= control.newValue ) then
|
||||
-- we need to force-set the value here just in case the control was doing dynamic updating
|
||||
control:SetValue(control.value);
|
||||
control.newValue = nil;
|
||||
end
|
||||
elseif ( control.value ) then
|
||||
if ( control:GetValue() ~= control.value ) then
|
||||
control:SetValue(control.value);
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function BlizzardOptionsPanel_DefaultControl (control)
|
||||
if ( control.defaultValue and control.value ~= control.defaultValue ) then
|
||||
control:SetValue(control.defaultValue);
|
||||
control.value = control.defaultValue;
|
||||
control.newValue = nil;
|
||||
end
|
||||
end
|
||||
|
||||
function BlizzardOptionsPanel_RefreshControl (control)
|
||||
if ( control.type == CONTROLTYPE_CHECKBOX ) then
|
||||
BlizzardOptionsPanel_CheckButton_Refresh(control);
|
||||
elseif ( control.type == CONTROLTYPE_DROPDOWN ) then
|
||||
BlizzardOptionsPanel_DropDown_Refresh(control);
|
||||
elseif ( control.type == CONTROLTYPE_SLIDER ) then
|
||||
BlizzardOptionsPanel_Slider_Refresh(control);
|
||||
end
|
||||
end
|
||||
|
||||
function BlizzardOptionsPanel_Okay (self)
|
||||
for _, control in SecureNext, self.controls do
|
||||
securecall(BlizzardOptionsPanel_OkayControl, control);
|
||||
end
|
||||
end
|
||||
|
||||
function BlizzardOptionsPanel_Cancel (self)
|
||||
for _, control in SecureNext, self.controls do
|
||||
securecall(BlizzardOptionsPanel_CancelControl, control);
|
||||
end
|
||||
end
|
||||
|
||||
function BlizzardOptionsPanel_Default (self)
|
||||
for _, control in SecureNext, self.controls do
|
||||
securecall(BlizzardOptionsPanel_DefaultControl, control);
|
||||
end
|
||||
end
|
||||
|
||||
function BlizzardOptionsPanel_Refresh (self)
|
||||
for _, control in SecureNext, self.controls do
|
||||
securecall(BlizzardOptionsPanel_RefreshControl, control);
|
||||
end
|
||||
end
|
||||
|
||||
function BlizzardOptionsPanel_OnLoad (frame, okay, cancel, default, refresh)
|
||||
frame.okay = okay or BlizzardOptionsPanel_Okay;
|
||||
frame.cancel = cancel or BlizzardOptionsPanel_Cancel;
|
||||
frame.default = default or BlizzardOptionsPanel_Default;
|
||||
frame.refresh = refresh or BlizzardOptionsPanel_Refresh;
|
||||
|
||||
frame:RegisterEvent("SET_GLUE_SCREEN");
|
||||
frame:SetScript("OnEvent", BlizzardOptionsPanel_OnEvent);
|
||||
end
|
||||
|
||||
function BlizzardOptionsPanel_OnEvent (frame, event, ...)
|
||||
if ( event == "SET_GLUE_SCREEN" ) then
|
||||
if ( frame.options and frame.controls ) then
|
||||
local entry;
|
||||
local minValue, maxValue;
|
||||
for i, control in SecureNext, frame.controls do
|
||||
entry = frame.options[(control.cvar or control.label)];
|
||||
if ( entry ) then
|
||||
if ( entry.text ) then
|
||||
control.tooltipText = (_G["OPTION_TOOLTIP_" .. gsub(entry.text, "_TEXT$", "")] or entry.tooltip);
|
||||
local text = _G[control:GetName() .. "Text"];
|
||||
if ( text ) then
|
||||
text:SetText(_G[entry.text] or entry.text);
|
||||
end
|
||||
end
|
||||
control.tooltipRequirement = entry.tooltipRequirement;
|
||||
|
||||
control.gameRestart = entry.gameRestart;
|
||||
|
||||
control.event = entry.event or entry.text;
|
||||
|
||||
if ( control.cvar ) then
|
||||
if ( control.type == CONTROLTYPE_CHECKBOX ) then
|
||||
control.defaultValue = GetCVarDefault(control.cvar);
|
||||
else
|
||||
control.defaultValue = BlizzardOptionsPanel_GetCVarDefaultSafe(control.cvar);
|
||||
minValue = BlizzardOptionsPanel_GetCVarMinSafe(control.cvar) or entry.minValue;
|
||||
maxValue = BlizzardOptionsPanel_GetCVarMaxSafe(control.cvar) or entry.maxValue;
|
||||
end
|
||||
else
|
||||
control.defaultValue = control.defaultValue or entry.default;
|
||||
minValue = entry.minValue;
|
||||
maxValue = entry.maxValue;
|
||||
end
|
||||
|
||||
if ( control.type == CONTROLTYPE_SLIDER ) then
|
||||
BlizzardOptionsPanel_Slider_Enable(control);
|
||||
control:SetMinMaxValues(minValue, maxValue);
|
||||
control:SetValueStep(entry.valueStep);
|
||||
end
|
||||
|
||||
BlizzardOptionsPanel_SetupControl(control);
|
||||
end
|
||||
end
|
||||
end
|
||||
frame:UnregisterEvent(event);
|
||||
end
|
||||
end
|
||||
|
||||
function BlizzardOptionsPanel_RegisterControl (control, parentFrame)
|
||||
if ( ( not parentFrame ) or ( not control ) ) then
|
||||
return;
|
||||
end
|
||||
|
||||
parentFrame.controls = parentFrame.controls or {};
|
||||
|
||||
tinsert(parentFrame.controls, control);
|
||||
|
||||
-- Use the panel's OnEvent handler to wait and setup the control after game data is loaded
|
||||
end
|
||||
|
||||
function BlizzardOptionsPanel_SetupControl (control)
|
||||
if ( control.type == CONTROLTYPE_CHECKBOX ) then
|
||||
if ( control.cvar ) then
|
||||
local value = GetCVar(control.cvar);
|
||||
control.value = value;
|
||||
|
||||
if ( control.uvar ) then
|
||||
_G[control.uvar] = value;
|
||||
end
|
||||
|
||||
control.GetValue = function(self) return GetCVar(self.cvar); end
|
||||
control.SetValue = function(self, value) self.value = value; BlizzardOptionsPanel_SetCVarSafe(self.cvar, value, self.event); if ( self.uvar ) then _G[self.uvar] = value end end
|
||||
control.Disable = function (self) getmetatable(self).__index.Disable(self) _G[self:GetName().."Text"]:SetTextColor(GRAY_FONT_COLOR.r, GRAY_FONT_COLOR.g, GRAY_FONT_COLOR.b) end;
|
||||
control.Enable = function (self)
|
||||
getmetatable(self).__index.Enable(self);
|
||||
local text = _G[self:GetName().."Text"];
|
||||
local fontObject = text:GetFontObject();
|
||||
_G[self:GetName().."Text"]:SetTextColor(fontObject:GetTextColor());
|
||||
end
|
||||
elseif ( control.GetValue ) then
|
||||
if ( control.type == CONTROLTYPE_CHECKBOX ) then
|
||||
value = control:GetValue();
|
||||
if ( value ) then
|
||||
control.value = tostring(value);
|
||||
else
|
||||
control.value = "0";
|
||||
end
|
||||
if ( control.uvar ) then
|
||||
_G[control.uvar] = value;
|
||||
end
|
||||
|
||||
control.SetValue = function(self, value) self.value = value; if ( self.uvar ) then _G[self.uvar] = value; end end;
|
||||
control.Disable = function (self) getmetatable(self).__index.Disable(self) _G[self:GetName().."Text"]:SetTextColor(GRAY_FONT_COLOR.r, GRAY_FONT_COLOR.g, GRAY_FONT_COLOR.b) end;
|
||||
control.Enable = function (self)
|
||||
getmetatable(self).__index.Enable(self);
|
||||
local text = _G[self:GetName().."Text"];
|
||||
local fontObject = text:GetFontObject();
|
||||
_G[self:GetName().."Text"]:SetTextColor(fontObject:GetTextColor());
|
||||
end
|
||||
end
|
||||
end
|
||||
elseif ( control.type == CONTROLTYPE_SLIDER ) then
|
||||
local value;
|
||||
if ( control.GetCurrentValue ) then
|
||||
value = control:GetCurrentValue();
|
||||
elseif ( control.cvar ) then
|
||||
value = BlizzardOptionsPanel_GetCVarSafe(control.cvar);
|
||||
else
|
||||
value = control:GetValue();
|
||||
end
|
||||
|
||||
if ( control.SetDisplayValue ) then
|
||||
control:SetDisplayValue(value);
|
||||
else
|
||||
control:SetValue(value);
|
||||
end
|
||||
-- set the value AFTER the set value function call so the current value matches the new value
|
||||
-- just in case an OnValueChange script changed the new value
|
||||
control.value = value;
|
||||
|
||||
control.Disable = BlizzardOptionsPanel_Slider_Disable;
|
||||
control.Enable = BlizzardOptionsPanel_Slider_Enable;
|
||||
end
|
||||
end
|
||||
|
||||
function BlizzardOptionsPanel_SetupDependentControl (dependency, control)
|
||||
if ( not dependency ) then
|
||||
return;
|
||||
end
|
||||
|
||||
assert(control);
|
||||
|
||||
dependency.dependentControls = dependency.dependentControls or {};
|
||||
tinsert(dependency.dependentControls, control);
|
||||
|
||||
if ( control.type ~= CONTROLTYPE_DROPDOWN ) then
|
||||
control.Disable = function (self) getmetatable(self).__index.Disable(self) _G[self:GetName().."Text"]:SetTextColor(GRAY_FONT_COLOR.r, GRAY_FONT_COLOR.g, GRAY_FONT_COLOR.b) end;
|
||||
control.Enable = function (self) getmetatable(self).__index.Enable(self) _G[self:GetName().."Text"]:SetTextColor(HIGHLIGHT_FONT_COLOR.r, HIGHLIGHT_FONT_COLOR.g, HIGHLIGHT_FONT_COLOR.b) end;
|
||||
else
|
||||
control.Disable = function (self) UIDropDownMenu_DisableDropDown(self) end;
|
||||
control.Enable = function (self) UIDropDownMenu_EnableDropDown(self) end;
|
||||
end
|
||||
end
|
||||
|
||||
@@ -1,173 +0,0 @@
|
||||
<!-- MoonWell -->
|
||||
<Ui xmlns="http://www.blizzard.com/wow/ui/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.blizzard.com/wow/ui/
|
||||
..\FrameXML\UI.xsd">
|
||||
<!-- if you change something here you probably want to change the frame version too -->
|
||||
|
||||
<CheckButton name="OptionsBaseCheckButtonTemplate" virtual="true">
|
||||
<Size>
|
||||
<AbsDimension x="26" y="26"/>
|
||||
</Size>
|
||||
<HitRectInsets>
|
||||
<AbsInset left="0" right="-100" top="0" bottom="0"/>
|
||||
</HitRectInsets>
|
||||
<Scripts>
|
||||
<OnClick>
|
||||
if ( self:GetChecked() ) then
|
||||
PlaySound("igMainMenuOptionCheckBoxOn");
|
||||
else
|
||||
PlaySound("igMainMenuOptionCheckBoxOff");
|
||||
end
|
||||
BlizzardOptionsPanel_CheckButton_OnClick(self);
|
||||
</OnClick>
|
||||
<OnEnter>
|
||||
if ( self.tooltipText ) then
|
||||
OptionsTooltip:SetOwner(self);
|
||||
OptionsTooltip:SetText(self.tooltipText, nil, nil, nil, nil);
|
||||
end
|
||||
if ( self.tooltipRequirement ) then
|
||||
OptionsTooltip:AddLine(self.tooltipRequirement, 1.0, 1.0, 1.0, 1.0);
|
||||
OptionsTooltip:Show();
|
||||
end
|
||||
</OnEnter>
|
||||
<OnLeave>
|
||||
OptionsTooltip:Hide();
|
||||
</OnLeave>
|
||||
</Scripts>
|
||||
<NormalTexture file="Interface\Buttons\UI-CheckBox-Up"/>
|
||||
<PushedTexture file="Interface\Buttons\UI-CheckBox-Down"/>
|
||||
<HighlightTexture file="Interface\Buttons\UI-CheckBox-Highlight" alphaMode="ADD"/>
|
||||
<CheckedTexture file="Interface\Buttons\UI-CheckBox-Check"/>
|
||||
<DisabledCheckedTexture file="Interface\Buttons\UI-CheckBox-Check-Disabled"/>
|
||||
</CheckButton>
|
||||
<CheckButton name="OptionsCheckButtonTemplate" virtual="true" inherits="OptionsBaseCheckButtonTemplate">
|
||||
<Layers>
|
||||
<Layer level="ARTWORK">
|
||||
<FontString name="$parentText" inherits="OptionsFont">
|
||||
<Anchors>
|
||||
<Anchor point="LEFT" relativePoint="RIGHT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="1"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</FontString>
|
||||
</Layer>
|
||||
</Layers>
|
||||
</CheckButton>
|
||||
<CheckButton name="OptionsSmallCheckButtonTemplate" virtual="true" inherits="OptionsBaseCheckButtonTemplate">
|
||||
<Layers>
|
||||
<Layer level="ARTWORK">
|
||||
<FontString name="$parentText" inherits="OptionsFontSmall">
|
||||
<Anchors>
|
||||
<Anchor point="LEFT" relativePoint="RIGHT">
|
||||
<Offset>
|
||||
<AbsDimension x="0" y="1"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</FontString>
|
||||
</Layer>
|
||||
</Layers>
|
||||
</CheckButton>
|
||||
<Slider name="OptionsSliderTemplate" orientation="HORIZONTAL" virtual="true" enableMouse="true">
|
||||
<Size>
|
||||
<AbsDimension x="144" y="17"/>
|
||||
</Size>
|
||||
<HitRectInsets>
|
||||
<AbsInset left="0" right="0" top="-10" bottom="-10"/>
|
||||
</HitRectInsets>
|
||||
<Backdrop bgFile="Interface\Buttons\UI-SliderBar-Background" edgeFile="Interface\tooltips\Glue-Tooltip-Border" tile="true">
|
||||
<EdgeSize>
|
||||
<AbsValue val="8"/>
|
||||
</EdgeSize>
|
||||
<TileSize>
|
||||
<AbsValue val="8"/>
|
||||
</TileSize>
|
||||
<BackgroundInsets>
|
||||
<AbsInset left="3" right="3" top="3" bottom="3"/>
|
||||
<Color r="0" g="0" b="0" a="1"/>
|
||||
</BackgroundInsets>
|
||||
</Backdrop>
|
||||
<Layers>
|
||||
<Layer level="ARTWORK">
|
||||
<FontString name="$parentText" inherits="OptionsFontHighlight">
|
||||
<Anchors>
|
||||
<Anchor point="BOTTOM" relativePoint="TOP"/>
|
||||
</Anchors>
|
||||
</FontString>
|
||||
<FontString name="$parentLow" inherits="OptionsFontSmall" text="LOW">
|
||||
<Anchors>
|
||||
<Anchor point="TOPLEFT" relativePoint="BOTTOMLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="-4" y="3"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</FontString>
|
||||
<FontString name="$parentHigh" inherits="OptionsFontSmall" text="HIGH">
|
||||
<Anchors>
|
||||
<Anchor point="TOPRIGHT" relativePoint="BOTTOMRIGHT">
|
||||
<Offset>
|
||||
<AbsDimension x="4" y="3"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</FontString>
|
||||
</Layer>
|
||||
</Layers>
|
||||
<Scripts>
|
||||
<OnEnter>
|
||||
if ( self:IsEnabled() ) then
|
||||
if ( self.tooltipText ) then
|
||||
OptionsTooltip:SetOwner(self, self.tooltipOwnerPoint, self.tooltipPoint);
|
||||
OptionsTooltip:SetText(self.tooltipText, nil, nil, nil, nil);
|
||||
end
|
||||
if ( self.tooltipRequirement ) then
|
||||
OptionsTooltip:AddLine(self.tooltipRequirement, 1.0, 1.0, 1.0, 1.0);
|
||||
OptionsTooltip:Show();
|
||||
end
|
||||
end
|
||||
</OnEnter>
|
||||
<OnLeave>
|
||||
OptionsTooltip:Hide();
|
||||
</OnLeave>
|
||||
</Scripts>
|
||||
<ThumbTexture name="$parentThumb" file="Interface\Buttons\UI-SliderBar-Button-Horizontal">
|
||||
<Size>
|
||||
<AbsDimension x="32" y="32"/>
|
||||
</Size>
|
||||
</ThumbTexture>
|
||||
</Slider>
|
||||
<Frame name="OptionsBoxTemplate" virtual="true">
|
||||
<Layers>
|
||||
<Layer level="BACKGROUND">
|
||||
<FontString name="$parentTitle" inherits="OptionsFontHighlightSmall">
|
||||
<Anchors>
|
||||
<Anchor point="BOTTOMLEFT" relativePoint="TOPLEFT">
|
||||
<Offset>
|
||||
<AbsDimension x="5" y="0"/>
|
||||
</Offset>
|
||||
</Anchor>
|
||||
</Anchors>
|
||||
</FontString>
|
||||
</Layer>
|
||||
</Layers>
|
||||
<Backdrop edgeFile="Interface\Tooltips\UI-Tooltip-Border" tile="true">
|
||||
<EdgeSize>
|
||||
<AbsValue val="16"/>
|
||||
</EdgeSize>
|
||||
<TileSize>
|
||||
<AbsValue val="16"/>
|
||||
</TileSize>
|
||||
<BackgroundInsets>
|
||||
<AbsInset left="5" right="5" top="5" bottom="5"/>
|
||||
</BackgroundInsets>
|
||||
</Backdrop>
|
||||
<Scripts>
|
||||
<OnLoad>
|
||||
self:SetBackdropBorderColor(0.4, 0.4, 0.4);
|
||||
self:SetBackdropColor(0.5, 0.5, 0.5);
|
||||
</OnLoad>
|
||||
</Scripts>
|
||||
</Frame>
|
||||
</Ui>
|
||||
@@ -1,616 +0,0 @@
|
||||
-- ============================================================================
|
||||
-- MoonWell
|
||||
-- ============================================================================
|
||||
-- if you change something here you probably want to change the frame version too
|
||||
|
||||
local OPTIONS_FARCLIP_MIN = 177;
|
||||
local OPTIONS_FARCLIP_MAX = 1277;
|
||||
|
||||
local VIDEO_OPTIONS_CUSTOM_QUALITY = 6;
|
||||
|
||||
local VIDEO_OPTIONS_COMPARISON_EPSILON = 0.000001;
|
||||
|
||||
|
||||
-- [[ Generic Video Options Panel ]] --
|
||||
|
||||
function VideoOptionsPanel_Okay (self)
|
||||
for _, control in next, self.controls do
|
||||
if ( control.newValue ) then
|
||||
if ( control.value ~= control.newValue ) then
|
||||
if ( control.gameRestart ) then
|
||||
VideoOptionsFrame.gameRestart = true;
|
||||
end
|
||||
if ( control.restart ) then
|
||||
VideoOptionsFrame.gxRestart = true;
|
||||
end
|
||||
control:SetValue(control.newValue);
|
||||
control.value = control.newValue;
|
||||
control.newValue = nil;
|
||||
end
|
||||
elseif ( control.value ) then
|
||||
control:SetValue(control.value);
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function VideoOptionsPanel_Cancel (self)
|
||||
for _, control in next, self.controls do
|
||||
if ( control.newValue ) then
|
||||
if ( control.value and control.value ~= control.newValue ) then
|
||||
if ( control.restart ) then
|
||||
VideoOptionsFrame.gxRestart = true;
|
||||
end
|
||||
-- we need to force-set the value here just in case the control was doing dynamic updating
|
||||
control:SetValue(control.value);
|
||||
control.newValue = nil;
|
||||
end
|
||||
elseif ( control.value ) then
|
||||
control:SetValue(control.value);
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function VideoOptionsPanel_Default (self)
|
||||
for _, control in next, self.controls do
|
||||
if ( control.defaultValue and control.value ~= control.defaultValue ) then
|
||||
if ( control.restart ) then
|
||||
VideoOptionsFrame.gxRestart = true;
|
||||
end
|
||||
control:SetValue(control.defaultValue);
|
||||
control.newValue = nil;
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function VideoOptionsPanel_OnLoad (self, okay, cancel, default, refresh)
|
||||
okay = okay or VideoOptionsPanel_Okay;
|
||||
cancel = cancel or VideoOptionsPanel_Cancel;
|
||||
default = default or VideoOptionsPanel_Default;
|
||||
refresh = refresh or BlizzardOptionsPanel_Refresh;
|
||||
BlizzardOptionsPanel_OnLoad(self, okay, cancel, default, refresh);
|
||||
|
||||
OptionsFrame_AddCategory(VideoOptionsFrame, self);
|
||||
end
|
||||
|
||||
-- [[ Resolution Panel ]] --
|
||||
|
||||
ResolutionPanelOptions = {
|
||||
gxVSync = { text = "VERTICAL_SYNC" },
|
||||
gxTripleBuffer = { text = "TRIPLE_BUFFER" },
|
||||
gxCursor = { text = "HARDWARE_CURSOR" },
|
||||
gxFixLag = { text = "FIX_LAG" },
|
||||
gxWindow = { text = "WINDOWED_MODE" },
|
||||
gxMaximize = { text = "WINDOWED_MAXIMIZED" },
|
||||
windowResizeLock = { text = "WINDOW_LOCK" },
|
||||
desktopGamma = { text = "DESKTOP_GAMMA" },
|
||||
gamma = { text = "GAMMA", minValue = -.5, maxValue = .5, valueStep = .1 },
|
||||
}
|
||||
|
||||
function VideoOptionsResolutionPanel_Default (self)
|
||||
RestoreVideoResolutionDefaults();
|
||||
for _, control in next, self.controls do
|
||||
control.newValue = nil;
|
||||
end
|
||||
end
|
||||
|
||||
function VideoOptionsResolutionPanel_Refresh (self)
|
||||
BlizzardOptionsPanel_Refresh(self);
|
||||
VideoOptionsResolutionPanel_RefreshGammaControls();
|
||||
end
|
||||
|
||||
function VideoOptionsResolutionPanel_OnLoad (self)
|
||||
self.name = RESOLUTION_LABEL;
|
||||
self.options = ResolutionPanelOptions;
|
||||
VideoOptionsPanel_OnLoad(self, nil, nil, VideoOptionsResolutionPanel_Default, VideoOptionsResolutionPanel_Refresh);
|
||||
|
||||
self:SetScript("OnEvent", VideoOptionsResolutionPanel_OnEvent);
|
||||
end
|
||||
|
||||
function VideoOptionsResolutionPanel_OnEvent (self, event, ...)
|
||||
BlizzardOptionsPanel_OnEvent(self, event, ...);
|
||||
|
||||
if ( event == "SET_GLUE_SCREEN" ) then
|
||||
-- don't allow systems that don't support features to enable them
|
||||
local anisotropic, pixelShaders, vertexShaders, trilinear, buffering, maxAnisotropy, hardwareCursor = GetVideoCaps();
|
||||
if ( not hardwareCursor ) then
|
||||
VideoOptionsResolutionPanelHardwareCursor:SetChecked(false);
|
||||
VideoOptionsResolutionPanelHardwareCursor:Disable();
|
||||
end
|
||||
VideoOptionsResolutionPanelHardwareCursor.SetChecked =
|
||||
function (self, checked)
|
||||
local anisotropic, pixelShaders, vertexShaders, trilinear, buffering, maxAnisotropy, hardwareCursor = GetVideoCaps();
|
||||
if ( not hardwareCursor ) then
|
||||
checked = false;
|
||||
end
|
||||
getmetatable(self).__index.SetChecked(self, checked);
|
||||
end
|
||||
VideoOptionsResolutionPanelHardwareCursor.Enable =
|
||||
function (self)
|
||||
local anisotropic, pixelShaders, vertexShaders, trilinear, buffering, maxAnisotropy, hardwareCursor = GetVideoCaps();
|
||||
if ( not hardwareCursor ) then
|
||||
return;
|
||||
end
|
||||
getmetatable(self).__index.Enable(self);
|
||||
local text = _G[self:GetName().."Text"];
|
||||
local fontObject = text:GetFontObject();
|
||||
_G[self:GetName().."Text"]:SetTextColor(fontObject:GetTextColor());
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function VideoOptionsResolutionPanel_RefreshGammaControls ()
|
||||
if ( VideoOptionsResolutionPanelWindowed:GetChecked() ) then
|
||||
VideoOptionsResolutionPanelDesktopGamma:SetChecked();
|
||||
VideoOptionsResolutionPanelDesktopGamma:Disable();
|
||||
BlizzardOptionsPanel_Slider_Disable(VideoOptionsResolutionPanelGammaSlider);
|
||||
else
|
||||
VideoOptionsResolutionPanelDesktopGamma:Enable();
|
||||
if ( VideoOptionsResolutionPanelDesktopGamma:GetChecked() ) then
|
||||
BlizzardOptionsPanel_Slider_Disable(VideoOptionsResolutionPanelGammaSlider);
|
||||
else
|
||||
BlizzardOptionsPanel_Slider_Enable(VideoOptionsResolutionPanelGammaSlider);
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function VideoOptionsResolutionPanel_SetWindowed ()
|
||||
VideoOptionsResolutionPanel_RefreshGammaControls();
|
||||
local value;
|
||||
if ( VideoOptionsResolutionPanelWindowed:GetChecked() or
|
||||
VideoOptionsResolutionPanelDesktopGamma:GetChecked() ) then
|
||||
value = 1;
|
||||
else
|
||||
value = 0;
|
||||
end
|
||||
BlizzardOptionsPanel_SetCVarSafe("desktopGamma", value);
|
||||
end
|
||||
|
||||
function VideoOptionsResolutionPanel_SetGamma (value)
|
||||
VideoOptionsResolutionPanel_RefreshGammaControls();
|
||||
BlizzardOptionsPanel_SetCVarSafe("desktopGamma", value);
|
||||
end
|
||||
|
||||
function VideoOptionsResolutionPanelResolutionDropDown_OnLoad(self)
|
||||
--self.cvar = "gxResolution";
|
||||
|
||||
local value = GetCurrentResolution();
|
||||
|
||||
--self.defaultValue = BlizzardOptionsPanel_GetCVarDefaultSafe(self.cvar);
|
||||
self.value = value;
|
||||
self.restart = true;
|
||||
|
||||
GlueDropDownMenu_SetWidth(110, self);
|
||||
GlueDropDownMenu_Initialize(self, VideoOptionsResolutionPanelResolutionDropDown_Initialize);
|
||||
GlueDropDownMenu_SetSelectedID(self, value, 1);
|
||||
|
||||
self.SetValue =
|
||||
function (self, value)
|
||||
SetScreenResolution(value);
|
||||
end
|
||||
self.GetValue =
|
||||
function (self)
|
||||
return GetCurrentResolution();
|
||||
end
|
||||
self.RefreshValue =
|
||||
function (self)
|
||||
local value = GetCurrentResolution();
|
||||
GlueDropDownMenu_Initialize(self, VideoOptionsResolutionPanelResolutionDropDown_Initialize);
|
||||
GlueDropDownMenu_SetSelectedID(self, value, 1);
|
||||
self.value = value;
|
||||
self.newValue = value;
|
||||
end
|
||||
end
|
||||
|
||||
function VideoOptionsResolutionPanelResolutionDropDown_Initialize()
|
||||
VideoOptionsResolutionPanelResolutionDropDown_LoadResolutions(GetScreenResolutions());
|
||||
end
|
||||
|
||||
function VideoOptionsResolutionPanelResolutionDropDown_LoadResolutions(...)
|
||||
local info = GlueDropDownMenu_CreateInfo();
|
||||
local resolution, xIndex, width, height;
|
||||
for i=1, select("#", ...) do
|
||||
resolution = (select(i, ...));
|
||||
xIndex = strfind(resolution, "x");
|
||||
width = strsub(resolution, 1, xIndex-1);
|
||||
height = strsub(resolution, xIndex+1, strlen(resolution));
|
||||
if ( width/height > 4/3 ) then
|
||||
resolution = resolution.." "..WIDESCREEN_TAG;
|
||||
end
|
||||
info.text = resolution;
|
||||
info.value = resolution;
|
||||
info.func = VideoOptionsResolutionPanelResolutionDropDown_OnClick;
|
||||
info.checked = nil;
|
||||
GlueDropDownMenu_AddButton(info);
|
||||
end
|
||||
end
|
||||
|
||||
function VideoOptionsResolutionPanelResolutionDropDown_OnClick(self)
|
||||
local value = self:GetID();
|
||||
local dropdown = VideoOptionsResolutionPanelResolutionDropDown;
|
||||
GlueDropDownMenu_SetSelectedID(dropdown, value, 1);
|
||||
if ( dropdown.value == value ) then
|
||||
dropdown.newValue = nil;
|
||||
else
|
||||
dropdown.newValue = value;
|
||||
end
|
||||
VideoOptionsFrameApply:Enable();
|
||||
end
|
||||
|
||||
function VideoOptionsResolutionPanelRefreshDropDown_OnLoad(self)
|
||||
self.cvar = "gxRefresh";
|
||||
|
||||
local value = BlizzardOptionsPanel_GetCVarSafe(self.cvar);
|
||||
|
||||
self.defaultValue = BlizzardOptionsPanel_GetCVarDefaultSafe(self.cvar);
|
||||
self.value = value;
|
||||
self.restart = true;
|
||||
|
||||
GlueDropDownMenu_SetWidth(110, self);
|
||||
GlueDropDownMenu_Initialize(self, VideoOptionsResolutionPanelRefreshDropDown_Initialize);
|
||||
GlueDropDownMenu_SetSelectedValue(self, value);
|
||||
|
||||
self.SetValue =
|
||||
function (self, value)
|
||||
BlizzardOptionsPanel_SetCVarSafe(self.cvar, value);
|
||||
end;
|
||||
self.GetValue =
|
||||
function (self)
|
||||
return BlizzardOptionsPanel_GetCVarSafe(self.cvar);
|
||||
end
|
||||
self.RefreshValue =
|
||||
function (self)
|
||||
local value = BlizzardOptionsPanel_GetCVarSafe(self.cvar);
|
||||
GlueDropDownMenu_Initialize(self, VideoOptionsResolutionPanelRefreshDropDown_Initialize);
|
||||
GlueDropDownMenu_SetSelectedValue(self, value);
|
||||
self.value = value;
|
||||
self.newValue = value;
|
||||
end
|
||||
end
|
||||
|
||||
function VideoOptionsResolutionPanelRefreshDropDown_Initialize()
|
||||
VideoOptionsResolutionPanel_GetRefreshRates(GetRefreshRates());
|
||||
end
|
||||
|
||||
function VideoOptionsResolutionPanel_GetRefreshRates(...)
|
||||
local info = GlueDropDownMenu_CreateInfo();
|
||||
if ( select("#", ...) == 1 and select(1, ...) == 0 ) then
|
||||
VideoOptionsResolutionPanelRefreshDropDownButton:Disable();
|
||||
VideoOptionsResolutionPanelRefreshDropDownLabel:SetVertexColor(GRAY_FONT_COLOR.r, GRAY_FONT_COLOR.g, GRAY_FONT_COLOR.b);
|
||||
VideoOptionsResolutionPanelRefreshDropDownText:SetVertexColor(GRAY_FONT_COLOR.r, GRAY_FONT_COLOR.g, GRAY_FONT_COLOR.b);
|
||||
return;
|
||||
end
|
||||
for i=1, select("#", ...) do
|
||||
info.text = select(i, ...)..HERTZ;
|
||||
info.func = VideoOptionsResolutionPanelRefreshDropDown_OnClick;
|
||||
|
||||
if ( GlueDropDownMenu_GetSelectedValue(VideoOptionsResolutionPanelRefreshDropDown) and tonumber(GlueDropDownMenu_GetSelectedValue(VideoOptionsResolutionPanelRefreshDropDown)) == select(i, ...) ) then
|
||||
info.checked = 1;
|
||||
GlueDropDownMenu_SetText(info.text, VideoOptionsResolutionPanelRefreshDropDown);
|
||||
else
|
||||
info.checked = nil;
|
||||
end
|
||||
info.value = select(i, ...)
|
||||
GlueDropDownMenu_AddButton(info);
|
||||
end
|
||||
end
|
||||
|
||||
function VideoOptionsResolutionPanelRefreshDropDown_OnClick(self)
|
||||
local value = self.value;
|
||||
local dropdown = VideoOptionsResolutionPanelRefreshDropDown;
|
||||
GlueDropDownMenu_SetSelectedValue(dropdown, value);
|
||||
if ( dropdown.value == value ) then
|
||||
dropdown.newValue = nil;
|
||||
else
|
||||
dropdown.newValue = value;
|
||||
end
|
||||
VideoOptionsFrameApply:Enable();
|
||||
end
|
||||
|
||||
function VideoOptionsResolutionPanelMultiSampleDropDown_OnLoad(self)
|
||||
local value = GetCurrentMultisampleFormat();
|
||||
|
||||
--self.defaultValue = 1;
|
||||
self.value = value;
|
||||
self.restart = true;
|
||||
|
||||
GlueDropDownMenu_SetWidth(160, self);
|
||||
GlueDropDownMenu_SetAnchor(self, -200, 23, "TOPRIGHT", "VideoOptionsResolutionPanelMultiSampleDropDownRight", "BOTTOMRIGHT");
|
||||
GlueDropDownMenu_Initialize(self, VideoOptionsResolutionPanelMultiSampleDropDown_Initialize);
|
||||
GlueDropDownMenu_SetSelectedID(self, value);
|
||||
|
||||
self.SetValue =
|
||||
function (self, value)
|
||||
SetMultisampleFormat(value);
|
||||
end;
|
||||
self.GetValue =
|
||||
function (self)
|
||||
return GetCurrentMultisampleFormat();
|
||||
end
|
||||
self.RefreshValue =
|
||||
function (self)
|
||||
local value = GetCurrentMultisampleFormat();
|
||||
GlueDropDownMenu_Initialize(self, VideoOptionsResolutionPanelMultiSampleDropDown_Initialize);
|
||||
GlueDropDownMenu_SetSelectedID(self, value);
|
||||
self.value = value;
|
||||
self.newValue = value;
|
||||
end
|
||||
end
|
||||
|
||||
function VideoOptionsResolutionPanelMultiSampleDropDown_Initialize()
|
||||
VideoOptionsResolutionPanel_GetMultisampleFormats(GetMultisampleFormats());
|
||||
end
|
||||
|
||||
function VideoOptionsResolutionPanel_GetMultisampleFormats(...)
|
||||
local colorBits, depthBits, multiSample;
|
||||
local info = GlueDropDownMenu_CreateInfo();
|
||||
local checked;
|
||||
local index = 1;
|
||||
for i=1, select("#", ...), 3 do
|
||||
colorBits, depthBits, multiSample = select(i, ...);
|
||||
info.text = format(MULTISAMPLING_FORMAT_STRING, colorBits, depthBits, multiSample);
|
||||
info.func = VideoOptionsResolutionPanelMultiSampleDropDown_OnClick;
|
||||
|
||||
if ( index == GlueDropDownMenu_GetSelectedID(VideoOptionsResolutionPanelMultiSampleDropDown) ) then
|
||||
checked = 1;
|
||||
GlueDropDownMenu_SetText(info.text, VideoOptionsResolutionPanelMultiSampleDropDown);
|
||||
else
|
||||
checked = nil;
|
||||
end
|
||||
info.checked = checked;
|
||||
GlueDropDownMenu_AddButton(info);
|
||||
index = index + 1;
|
||||
end
|
||||
end
|
||||
|
||||
function VideoOptionsResolutionPanelMultiSampleDropDown_OnClick(self)
|
||||
local value = self:GetID();
|
||||
local dropdown = VideoOptionsResolutionPanelMultiSampleDropDown;
|
||||
GlueDropDownMenu_SetSelectedID(dropdown, value);
|
||||
if ( dropdown.value == value ) then
|
||||
dropdown.newValue = nil;
|
||||
else
|
||||
dropdown.newValue = value;
|
||||
end
|
||||
VideoOptionsFrameApply:Enable();
|
||||
end
|
||||
|
||||
|
||||
-- [[ Effects Panel ]] --
|
||||
|
||||
EffectsPanelOptions = {
|
||||
farclip = { text = "FARCLIP", minValue = OPTIONS_FARCLIP_MIN, maxValue = OPTIONS_FARCLIP_MAX, valueStep = (OPTIONS_FARCLIP_MAX - OPTIONS_FARCLIP_MIN)/10},
|
||||
TerrainMip = { text = "TERRAIN_MIP", minValue = 0, maxValue = 1, valueStep = 1, tooltip = OPTION_TOOLTIP_TERRAIN_TEXTURE, },
|
||||
particleDensity = { text = "PARTICLE_DENSITY", minValue = 0.1, maxValue = 1.0, valueStep = 0.1},
|
||||
environmentDetail = { text = "ENVIRONMENT_DETAIL", minValue = 0.5, maxValue = 1.5, valueStep = .25},
|
||||
groundEffectDensity = { text = "GROUND_DENSITY", minValue = 16, maxValue = 64, valueStep = 8},
|
||||
groundEffectDist = { text = "GROUND_RADIUS", minValue = 70, maxValue = 140, valueStep = 10 },
|
||||
BaseMip = { text = "TEXTURE_DETAIL", minValue = 0, maxValue = 1, valueStep = 1, tooltipPoint = "BOTTOMRIGHT", tooltipOwnerPoint = "TOPLEFT", },
|
||||
extShadowQuality = { text = "SHADOW_QUALITY", minValue = 0, maxValue = 4, valueStep = 1 },
|
||||
textureFilteringMode = { text = "ANISOTROPIC", minValue = 0, maxValue = 5, valueStep = 1, gameRestart = 1, tooltipPoint = "BOTTOMRIGHT", tooltipOwnerPoint = "TOPLEFT", tooltipRequirement = OPTION_RESTART_REQUIREMENT, },
|
||||
weatherDensity = { text = "WEATHER_DETAIL", minValue = 0, maxValue = 3, valueStep = 1, tooltipPoint = "BOTTOMRIGHT", tooltipOwnerPoint = "TOPLEFT", },
|
||||
componentTextureLevel = { text = "PLAYER_DETAIL", minValue = 8, maxValue = 9, valueStep = 1, tooltipPoint = "BOTTOMRIGHT", tooltipOwnerPoint = "TOPLEFT", gameRestart = 1, tooltipRequirement = OPTION_RESTART_REQUIREMENT, },
|
||||
specular = { text = "TERRAIN_HIGHLIGHTS"},
|
||||
ffxGlow = { text = "FULL_SCREEN_GLOW", },
|
||||
ffxDeath = { text = "DEATH_EFFECT", },
|
||||
projectedTextures = { text = "PROJECTED_TEXTURES", },
|
||||
quality = { text = "", minValue = 1, maxValue = 6, valueStep = 1 },
|
||||
}
|
||||
|
||||
function VideoOptionsEffectsPanel_Default (self)
|
||||
RestoreVideoEffectsDefaults();
|
||||
for _, control in next, self.controls do
|
||||
if ( control ~= VideoOptionsEffectsPanelQualitySlider ) then
|
||||
control.newValue = nil;
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function VideoOptionsEffectsPanel_Refresh (self)
|
||||
BlizzardOptionsPanel_Refresh(self);
|
||||
VideoOptionsEffectsPanel_UpdateVideoQuality();
|
||||
-- HACK: force update the quality slider because the update video quality call will change the new value
|
||||
VideoOptionsEffectsPanelQualitySlider.value = VideoOptionsEffectsPanelQualitySlider.newValue;
|
||||
end
|
||||
|
||||
function VideoOptionsEffectsPanel_OnLoad (self)
|
||||
self.name = EFFECTS_LABEL;
|
||||
self.options = EffectsPanelOptions;
|
||||
VideoOptionsPanel_OnLoad(self, nil, nil, VideoOptionsEffectsPanel_Default, VideoOptionsEffectsPanel_Refresh);
|
||||
|
||||
-- this must come AFTER the parent OnLoad because the functions will be set to defaults there
|
||||
self:SetScript("OnEvent", VideoOptionsEffectsPanel_OnEvent);
|
||||
end
|
||||
|
||||
function VideoOptionsEffectsPanel_OnEvent (self, event, ...)
|
||||
BlizzardOptionsPanel_OnEvent(self, event, ...);
|
||||
|
||||
if ( event == "SET_GLUE_SCREEN" ) then
|
||||
-- fixup value steps for the farclip control, which has an adjustable min/max
|
||||
local farclipControl = VideoOptionsEffectsPanelViewDistance;
|
||||
local minValue, maxValue = farclipControl:GetMinMaxValues();
|
||||
farclipControl:SetValueStep((maxValue - minValue) / 10);
|
||||
|
||||
-- some of the values in the preset graphics quality levels aren't available on all platforms, so we
|
||||
-- need to fixup the quality levels now
|
||||
VideoOptionsEffectsPanel_FixupQualityLevels();
|
||||
VideoOptionsEffectsPanel_UpdateVideoQuality();
|
||||
|
||||
if ( not IsPlayerResolutionAvailable() ) then
|
||||
VideoOptionsEffectsPanelPlayerTexture:Disable();
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
function VideoOptionsEffectsPanel_SetVideoQuality (quality)
|
||||
if ( not quality or not GraphicsQualityLevels[quality] or VideoOptionsEffectsPanel.videoQuality == quality ) then
|
||||
return;
|
||||
elseif ( quality == VIDEO_OPTIONS_CUSTOM_QUALITY ) then
|
||||
VideoOptionsEffectsPanel.videoQuality = quality;
|
||||
VideoOptionsEffectsPanel_SetVideoQualityLabels(quality);
|
||||
return;
|
||||
end
|
||||
|
||||
for control, value in next, GraphicsQualityLevels[quality] do
|
||||
control = _G[control];
|
||||
if ( control.type == CONTROLTYPE_SLIDER ) then
|
||||
control:SetDisplayValue(value);
|
||||
elseif ( control.type == CONTROLTYPE_CHECKBOX ) then
|
||||
if ( value ) then
|
||||
control:SetChecked(true);
|
||||
else
|
||||
control:SetChecked(false);
|
||||
end
|
||||
BlizzardOptionsPanel_CheckButton_SetNewValue(control);
|
||||
end
|
||||
end
|
||||
|
||||
VideoOptionsEffectsPanel.videoQuality = quality;
|
||||
VideoOptionsEffectsPanel_SetVideoQualityLabels(quality);
|
||||
end
|
||||
|
||||
function VideoOptionsEffectsPanel_SetVideoQualityLabels (quality)
|
||||
quality = quality or 5;
|
||||
local qualityText = _G["VIDEO_QUALITY_LABEL" .. quality] or "Unknown";
|
||||
VideoOptionsEffectsPanelQualityLabel:SetFormattedText(VIDEO_QUALITY_S, qualityText);
|
||||
VideoOptionsEffectsPanelQualitySubText:SetText(_G["VIDEO_QUALITY_SUBTEXT" .. quality]);
|
||||
VideoOptionsEffectsPanelQualitySlider:SetValue(quality);
|
||||
end
|
||||
|
||||
function VideoOptionsEffectsPanel_GetVideoQuality ()
|
||||
for quality, controls in ipairs(GraphicsQualityLevels) do
|
||||
local mismatch = false;
|
||||
for control, value in next, controls do
|
||||
control = _G[control];
|
||||
if ( control.type == CONTROLTYPE_CHECKBOX ) then
|
||||
local checked = control:GetChecked();
|
||||
if ( ( value and not checked ) or ( not value and checked ) ) then
|
||||
mismatch = true;
|
||||
break;
|
||||
end
|
||||
elseif ( control.GetValue ) then
|
||||
if ( not (abs(control:GetValue() - value) <= VIDEO_OPTIONS_COMPARISON_EPSILON) ) then
|
||||
-- you may have been expecting ( control:GetValue() ~= value ) but here's why we can't use that:
|
||||
-- 1) floating point error: if we set a value to 0.4 and the machine's floating point error results in the value being 0.40000000596046 instead,
|
||||
-- we want those two values to be considered equal
|
||||
-- 2) NaN/IND numbers: if for whatever reason a control gives us an NaN or IND number, any comparisons with those numbers will evaluate to false,
|
||||
-- so we phrase the comparison inversely so NaN/IND comparisons result in a mismatch
|
||||
mismatch = true;
|
||||
break;
|
||||
end
|
||||
end
|
||||
end
|
||||
if ( not mismatch ) then
|
||||
return quality;
|
||||
end
|
||||
end
|
||||
|
||||
return VIDEO_OPTIONS_CUSTOM_QUALITY;
|
||||
end
|
||||
|
||||
function VideoOptionsEffectsPanel_SetCustomQuality ()
|
||||
for control in next, GraphicsQualityLevels[1] do
|
||||
control = _G[control];
|
||||
control:Enable();
|
||||
end
|
||||
end
|
||||
|
||||
function VideoOptionsEffectsPanel_SetPresetQuality ()
|
||||
for control in next, GraphicsQualityLevels[1] do
|
||||
control = _G[control];
|
||||
control:Disable();
|
||||
end
|
||||
end
|
||||
|
||||
function VideoOptionsEffectsPanel_UpdateVideoQuality ()
|
||||
local quality = VideoOptionsEffectsPanel_GetVideoQuality();
|
||||
if ( quality ~= VideoOptionsEffectsPanel.videoQuality ) then
|
||||
VideoOptionsEffectsPanel_SetVideoQuality(quality);
|
||||
end
|
||||
end
|
||||
|
||||
function VideoOptionsEffectsPanelSlider_OnValueChanged (self, value)
|
||||
self.newValue = value;
|
||||
if(self:GetParent():IsVisible()) then
|
||||
VideoOptionsEffectsPanel_UpdateVideoQuality();
|
||||
VideoOptionsFrameApply:Enable();
|
||||
end
|
||||
end
|
||||
|
||||
function VideoOptionsEffectsPanel_FixupQualityLevels ()
|
||||
-- set the lowest and highest
|
||||
for quality, controls in ipairs(GraphicsQualityLevels) do
|
||||
for index, value in next, controls do
|
||||
local control = _G[index];
|
||||
if ( control.type ~= CONTROLTYPE_CHECKBOX and control.cvar ) then
|
||||
local minValue = BlizzardOptionsPanel_GetCVarMinSafe(control.cvar);
|
||||
local maxValue = BlizzardOptionsPanel_GetCVarMaxSafe(control.cvar);
|
||||
if ( minValue and value < minValue ) then
|
||||
controls[index] = minValue;
|
||||
elseif ( maxValue and value > maxValue ) then
|
||||
controls[index] = maxValue;
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
--[[Stereo Options]]
|
||||
|
||||
VideoStereoPanelOptions = {
|
||||
gxStereoEnabled = { text = "ENABLE_STEREO_VIDEO" },
|
||||
gxStereoConvergence = { text = "DEPTH_CONVERGENCE", minValue = 0.2, maxValue = 50, valueStep = 0.1, tooltip = OPTION_STEREO_CONVERGENCE},
|
||||
gxStereoSeparation = { text = "EYE_SEPARATION", minValue = 0, maxValue = 100, valueStep = 1, tooltip = OPTION_STEREO_SEPARATION},
|
||||
gxCursor = { text = "STEREO_HARDWARE_CURSOR" },
|
||||
}
|
||||
|
||||
function VideoOptionsStereoPanel_OnLoad (self)
|
||||
self.name = STEREO_VIDEO_LABEL;
|
||||
self.options = VideoStereoPanelOptions;
|
||||
if ( IsStereoVideoAvailable() ) then
|
||||
VideoOptionsPanel_OnLoad(self);
|
||||
end
|
||||
self:RegisterEvent("SET_GLUE_SCREEN");
|
||||
self:SetScript("OnEvent", VideoOptionsStereoPanel_OnEvent);
|
||||
end
|
||||
|
||||
function VideoOptionsStereoPanel_Default (self)
|
||||
RestoreVideoStereoDefaults();
|
||||
for _, control in next, self.controls do
|
||||
if ( control.defaultValue and control.value ~= control.defaultValue ) then
|
||||
control:SetValue(control.defaultValue);
|
||||
end
|
||||
control.newValue = nil;
|
||||
end
|
||||
end
|
||||
|
||||
function VideoOptionsStereoPanel_OnEvent(self, event, ...)
|
||||
BlizzardOptionsPanel_OnEvent(self, event, ...);
|
||||
|
||||
if ( event == "SET_GLUE_SCREEN" ) then
|
||||
-- don't allow systems that don't support features to enable them
|
||||
local anisotropic, pixelShaders, vertexShaders, trilinear, buffering, maxAnisotropy, hardwareCursor = GetVideoCaps();
|
||||
if ( not hardwareCursor ) then
|
||||
VideoOptionsStereoPanelHardwareCursor:SetChecked(false);
|
||||
VideoOptionsStereoPanelHardwareCursor:Disable();
|
||||
end
|
||||
VideoOptionsStereoPanelHardwareCursor.SetChecked =
|
||||
function (self, checked)
|
||||
local anisotropic, pixelShaders, vertexShaders, trilinear, buffering, maxAnisotropy, hardwareCursor = GetVideoCaps();
|
||||
if ( not hardwareCursor ) then
|
||||
checked = false;
|
||||
end
|
||||
getmetatable(self).__index.SetChecked(self, checked);
|
||||
end
|
||||
VideoOptionsStereoPanelHardwareCursor.Enable =
|
||||
function (self)
|
||||
local anisotropic, pixelShaders, vertexShaders, trilinear, buffering, maxAnisotropy, hardwareCursor = GetVideoCaps();
|
||||
if ( not hardwareCursor ) then
|
||||
return;
|
||||
end
|
||||
getmetatable(self).__index.Enable(self);
|
||||
local text = _G[self:GetName().."Text"];
|
||||
local fontObject = text:GetFontObject();
|
||||
_G[self:GetName().."Text"]:SetTextColor(fontObject:GetTextColor());
|
||||
end
|
||||
end
|
||||
end
|
||||
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
Before Width: | Height: | Size: 9.7 KiB |
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
Before Width: | Height: | Size: 136 KiB |
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
Before Width: | Height: | Size: 308 KiB |
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user