1062 lines
38 KiB
Lua
1062 lines
38 KiB
Lua
-- ============================================================================
|
|
-- MoonWell
|
|
-- ============================================================================
|
|
CHARACTER_SELECT_ROTATION_START_X = nil;
|
|
CHARACTER_SELECT_INITIAL_FACING = nil;
|
|
|
|
CHARACTER_ROTATION_CONSTANT = 0.6;
|
|
|
|
MAX_CHARACTERS_DISPLAYED = 8;
|
|
MAX_CHARACTERS_PER_REALM = 8;
|
|
|
|
|
|
function CharacterSelect_OnLoad(self)
|
|
REALM_SIRION = GetServerName();
|
|
|
|
self:SetSequence(0);
|
|
self:SetCamera(0);
|
|
|
|
self.createIndex = 0;
|
|
self.selectedIndex = 0;
|
|
self.selectLast = 0;
|
|
self.currentModel = nil;
|
|
self:RegisterEvent("ADDON_LIST_UPDATE");
|
|
self:RegisterEvent("CHARACTER_LIST_UPDATE");
|
|
self:RegisterEvent("UPDATE_SELECTED_CHARACTER");
|
|
self:RegisterEvent("SELECT_LAST_CHARACTER");
|
|
self:RegisterEvent("SELECT_FIRST_CHARACTER");
|
|
self:RegisterEvent("SUGGEST_REALM");
|
|
self:RegisterEvent("FORCE_RENAME_CHARACTER");
|
|
SetCharSelectModelFrame("CharacterSelect");
|
|
|
|
CharacterSelectCharacterFrame:SetBackdrop({
|
|
bgFile = "Interface\\Tooltips\\UI-Tooltip-Background",
|
|
edgeFile = "Interface\\Tooltips\\UI-Tooltip-Border",
|
|
tile = true,
|
|
tileSize = 16,
|
|
edgeSize = 16,
|
|
insets = { left = 3, right = 3, top = 3, bottom = 3 }
|
|
});
|
|
|
|
CharacterSelectCharacterFrame:SetBackdropColor(0, 0, 0)
|
|
|
|
SelectBorroso = 1;
|
|
CharacterSelect_OnEventO();
|
|
if CharSelectTooltip then
|
|
CharSelectTooltipText:SetFont("Fonts\\FRIZQT__.TTF", 14, "OUTLINE")
|
|
CharSelectTooltipText:SetTextColor(1, 1, 1)
|
|
CharSelectTooltip:SetBackdropColor(0, 0, 0, 0.9)
|
|
CharSelectTooltip:SetBackdropBorderColor(0.4, 0.4, 0.4, 1)
|
|
end
|
|
end
|
|
|
|
function CharacterSelect_OnShow()
|
|
-- request account data times from the server (so we know if we should refresh keybindings, etc...)
|
|
ReadyForAccountDataTimes()
|
|
|
|
local CurrentModel = CharacterSelect.currentModel;
|
|
|
|
if ( CurrentModel ) then
|
|
PlayGlueAmbience(GlueAmbienceTracks[strupper(CurrentModel)], 4.0);
|
|
end
|
|
|
|
UpdateAddonButton();
|
|
|
|
local serverName, isPVP, isRP = GetServerName();
|
|
local connected = IsConnectedToServer();
|
|
local serverType = "";
|
|
if ( serverName ) then
|
|
if( not connected ) then
|
|
serverName = serverName.."\n("..SERVER_DOWN..")";
|
|
end
|
|
if ( isPVP ) then
|
|
if ( isRP ) then
|
|
serverType = RPPVP_PARENTHESES;
|
|
else
|
|
serverType = PVP_PARENTHESES;
|
|
end
|
|
elseif ( isRP ) then
|
|
serverType = RP_PARENTHESES;
|
|
end
|
|
CharSelectRealmName:SetText(serverName.." "..serverType);
|
|
CharSelectRealmName:Show();
|
|
else
|
|
CharSelectRealmName:Hide();
|
|
end
|
|
|
|
if ( connected ) then
|
|
GetCharacterListUpdate();
|
|
else
|
|
UpdateCharacterList();
|
|
end
|
|
|
|
-- Gameroom billing stuff (For Korea and China only)
|
|
if ( SHOW_GAMEROOM_BILLING_FRAME ) then
|
|
local paymentPlan, hasFallBackBillingMethod, isGameRoom = GetBillingPlan();
|
|
if ( paymentPlan == 0 ) then
|
|
-- No payment plan
|
|
GameRoomBillingFrame:Hide();
|
|
CharacterSelectRealmSplitButton:ClearAllPoints();
|
|
CharacterSelectRealmSplitButton:SetPoint("TOP", CharacterSelectLogo, "BOTTOM", 0, -5);
|
|
else
|
|
local billingTimeLeft = GetBillingTimeRemaining();
|
|
-- Set default text for the payment plan
|
|
local billingText = _G["BILLING_TEXT"..paymentPlan];
|
|
if ( paymentPlan == 1 ) then
|
|
-- Recurring account
|
|
billingTimeLeft = ceil(billingTimeLeft/(60 * 24));
|
|
if ( billingTimeLeft == 1 ) then
|
|
billingText = BILLING_TIME_LEFT_LAST_DAY;
|
|
end
|
|
elseif ( paymentPlan == 2 ) then
|
|
-- Free account
|
|
if ( billingTimeLeft < (24 * 60) ) then
|
|
billingText = format(BILLING_FREE_TIME_EXPIRE, billingTimeLeft.." "..MINUTES_ABBR);
|
|
end
|
|
elseif ( paymentPlan == 3 ) then
|
|
-- Fixed but not recurring
|
|
if ( isGameRoom == 1 ) then
|
|
if ( billingTimeLeft <= 30 ) then
|
|
billingText = BILLING_GAMEROOM_EXPIRE;
|
|
else
|
|
billingText = format(BILLING_FIXED_IGR, MinutesToTime(billingTimeLeft, 1));
|
|
end
|
|
else
|
|
-- personal fixed plan
|
|
if ( billingTimeLeft < (24 * 60) ) then
|
|
billingText = BILLING_FIXED_LASTDAY;
|
|
else
|
|
billingText = format(billingText, MinutesToTime(billingTimeLeft));
|
|
end
|
|
end
|
|
elseif ( paymentPlan == 4 ) then
|
|
-- Usage plan
|
|
if ( isGameRoom == 1 ) then
|
|
-- game room usage plan
|
|
if ( billingTimeLeft <= 600 ) then
|
|
billingText = BILLING_GAMEROOM_EXPIRE;
|
|
else
|
|
billingText = BILLING_IGR_USAGE;
|
|
end
|
|
else
|
|
-- personal usage plan
|
|
if ( billingTimeLeft <= 30 ) then
|
|
billingText = BILLING_TIME_LEFT_30_MINS;
|
|
else
|
|
billingText = format(billingText, billingTimeLeft);
|
|
end
|
|
end
|
|
end
|
|
-- If fallback payment method add a note that says so
|
|
if ( hasFallBackBillingMethod == 1 ) then
|
|
billingText = billingText.."\n\n"..BILLING_HAS_FALLBACK_PAYMENT;
|
|
end
|
|
GameRoomBillingFrameText:SetText(billingText);
|
|
GameRoomBillingFrame:SetHeight(GameRoomBillingFrameText:GetHeight() + 26);
|
|
GameRoomBillingFrame:Show();
|
|
CharacterSelectRealmSplitButton:ClearAllPoints();
|
|
CharacterSelectRealmSplitButton:SetPoint("TOP", GameRoomBillingFrame, "BOTTOM", 0, -10);
|
|
end
|
|
end
|
|
|
|
if( IsTrialAccount() ) then
|
|
CharacterSelectUpgradeAccountButton:Show();
|
|
else
|
|
CharacterSelectUpgradeAccountButton:Hide();
|
|
end
|
|
|
|
-- fadein the character select ui
|
|
GlueFrameFadeIn(CharacterSelectUI, CHARACTER_SELECT_FADE_IN)
|
|
|
|
RealmSplitCurrentChoice:Hide();
|
|
RequestRealmSplitInfo();
|
|
|
|
--Clear out the addons selected item
|
|
GlueDropDownMenu_SetSelectedValue(AddonCharacterDropDown, ALL);
|
|
end
|
|
|
|
function CharacterSelect_OnHide()
|
|
CharacterDeleteDialog:Hide();
|
|
CharacterRenameDialog:Hide();
|
|
if ( DeclensionFrame ) then
|
|
DeclensionFrame:Hide();
|
|
end
|
|
SERVER_SPLIT_STATE_PENDING = -1;
|
|
end
|
|
|
|
function CharacterSelect_OnUpdate(elapsed)
|
|
if ( SERVER_SPLIT_STATE_PENDING > 0 ) then
|
|
CharacterSelectRealmSplitButton:Show();
|
|
|
|
if ( SERVER_SPLIT_CLIENT_STATE > 0 ) then
|
|
RealmSplit_SetChoiceText();
|
|
RealmSplitPending:SetPoint("TOP", RealmSplitCurrentChoice, "BOTTOM", 0, -10);
|
|
else
|
|
RealmSplitPending:SetPoint("TOP", CharacterSelectRealmSplitButton, "BOTTOM", 0, 0);
|
|
RealmSplitCurrentChoice:Hide();
|
|
end
|
|
|
|
if ( SERVER_SPLIT_STATE_PENDING > 1 ) then
|
|
CharacterSelectRealmSplitButton:Disable();
|
|
CharacterSelectRealmSplitButtonGlow:Hide();
|
|
RealmSplitPending:SetText( SERVER_SPLIT_PENDING );
|
|
else
|
|
CharacterSelectRealmSplitButton:Enable();
|
|
CharacterSelectRealmSplitButtonGlow:Show();
|
|
local datetext = SERVER_SPLIT_CHOOSE_BY.."\n"..SERVER_SPLIT_DATE;
|
|
RealmSplitPending:SetText( datetext );
|
|
end
|
|
|
|
if ( SERVER_SPLIT_SHOW_DIALOG and not GlueDialog:IsShown() ) then
|
|
SERVER_SPLIT_SHOW_DIALOG = false;
|
|
local dialogString = format(SERVER_SPLIT,SERVER_SPLIT_DATE);
|
|
if ( SERVER_SPLIT_CLIENT_STATE > 0 ) then
|
|
local serverChoice = RealmSplit_GetFormatedChoice(SERVER_SPLIT_REALM_CHOICE);
|
|
local stringWithDate = format(SERVER_SPLIT,SERVER_SPLIT_DATE);
|
|
dialogString = stringWithDate.."\n\n"..serverChoice;
|
|
GlueDialog_Show("SERVER_SPLIT_WITH_CHOICE", dialogString);
|
|
else
|
|
GlueDialog_Show("SERVER_SPLIT", dialogString);
|
|
end
|
|
end
|
|
else
|
|
CharacterSelectRealmSplitButton:Hide();
|
|
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 CharacterSelect_OnKeyDown(self,key)
|
|
if ( key == "ESCAPE" ) then
|
|
CharacterSelect_Exit();
|
|
elseif ( key == "ENTER" ) then
|
|
CharacterSelect_EnterWorld();
|
|
elseif ( key == "PRINTSCREEN" ) then
|
|
Screenshot();
|
|
elseif ( key == "UP" or key == "LEFT" ) then
|
|
local numChars = GetNumCharacters();
|
|
if ( numChars > 1 ) then
|
|
if ( self.selectedIndex > 1 ) then
|
|
CharacterSelect_SelectCharacter(self.selectedIndex - 1);
|
|
else
|
|
CharacterSelect_SelectCharacter(numChars);
|
|
end
|
|
end
|
|
elseif ( arg1 == "DOWN" or arg1 == "RIGHT" ) then
|
|
local numChars = GetNumCharacters();
|
|
if ( numChars > 1 ) then
|
|
if ( self.selectedIndex < GetNumCharacters() ) then
|
|
CharacterSelect_SelectCharacter(self.selectedIndex + 1);
|
|
else
|
|
CharacterSelect_SelectCharacter(1);
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
function CharacterSelect_OnEventO()
|
|
local numChars = GetNumCharacters();
|
|
local index = 1;
|
|
local coords;
|
|
|
|
if ( SelectBorroso == 0 ) then
|
|
CharSelectCharacterName:SetAlpha(0);
|
|
CharacterSelectCharacterFrame:SetAlpha(0);
|
|
CharacterSelectCharacterFrame:SetPoint("TOPRIGHT", 5000, -8);
|
|
CharSelectCharacterName2:SetPoint("CENTER", 330, 100);
|
|
CharSelectCharacterName2:SetAlpha(1);
|
|
CharSelectCharacterName2:SetFont("Fonts\\FRIZQT__.ttf", 43, "OUTLINE");
|
|
CharSelectCharacterName2:Show();
|
|
CharSelectCharacterName3:SetPoint("TOP", "CharSelectCharacterName2", 0, 120);
|
|
CharSelectCharacterName3:SetFont("Fonts\\FRIZQT__.ttf", 83, "OUTLINE");
|
|
CharSelectCharacterName3:Show();
|
|
CharacterSelectRotateLeft:SetAlpha(0);
|
|
CharacterSelectRotateRight:SetAlpha(0);
|
|
CharacterSelectAddonsButton:SetAlpha(0);
|
|
CharSelectEnterWorldButton:SetAlpha(0);
|
|
CharacterSelectBackButton:SetAlpha(0);
|
|
CharacterSelectAddonsButton:Disable();
|
|
CharacterSelectBackButton:Disable();
|
|
DesenfoBoton:SetText(" ");
|
|
DesenfoBoton2:Hide();
|
|
OptionsButton2:Hide();
|
|
CharSelectChangeRealmButton:Hide();
|
|
CharacterSelectDeleteButton:Hide();
|
|
|
|
elseif ( SelectBorroso == 1 ) then
|
|
CharSelectCharacterName:SetAlpha(1);
|
|
CharacterSelectCharacterFrame:SetAlpha(1);
|
|
CharacterSelectCharacterFrame:SetPoint("TOPRIGHT", -5, -42);
|
|
CharSelectCharacterName2:SetPoint("CENTER", 330, 100);
|
|
CharSelectCharacterName2:SetFont("Fonts\\FRIZQT__.ttf", 43, "OUTLINE");
|
|
CharSelectCharacterName2:SetAlpha(0);
|
|
CharSelectCharacterName2:Hide();
|
|
CharSelectCharacterName3:SetPoint("TOP", "CharSelectCharacterName2", 0, 120);
|
|
CharSelectCharacterName3:SetFont("Fonts\\FRIZQT__.ttf", 83, "OUTLINE");
|
|
CharSelectCharacterName3:Hide();
|
|
CharacterSelectRotateLeft:SetAlpha(1);
|
|
CharacterSelectRotateRight:SetAlpha(1);
|
|
CharacterSelectAddonsButton:SetAlpha(1);
|
|
CharSelectEnterWorldButton:SetAlpha(1);
|
|
CharacterSelectBackButton:SetAlpha(1);
|
|
CharacterSelectAddonsButton:Enable();
|
|
CharacterSelectBackButton:Enable();
|
|
DesenfoBoton:SetText(" ");
|
|
DesenfoBoton2:Show();
|
|
OptionsButton2:Show();
|
|
CharSelectChangeRealmButton:Show();
|
|
CharacterSelectDeleteButton:Show();
|
|
end
|
|
PlaySound("igMainMenuOptionCheckBoxOn")
|
|
end
|
|
|
|
function CharacterSelect_OnEventO2()
|
|
if (SelectBorroso2 == 0) then
|
|
CharacterSelectCharacterFrame:Hide();
|
|
if CharacterSelectDeleteButton then
|
|
CharacterSelectDeleteButton:Hide();
|
|
end
|
|
|
|
elseif (SelectBorroso2 == 1) then
|
|
CharacterSelectCharacterFrame:Show();
|
|
if CharacterSelectDeleteButton then
|
|
CharacterSelectDeleteButton:Show();
|
|
end
|
|
end
|
|
PlaySound("igMainMenuOptionCheckBoxOn");
|
|
end
|
|
|
|
function CharacterSelect_OnEvent(self, event, ...)
|
|
if ( event == "ADDON_LIST_UPDATE" ) then
|
|
UpdateAddonButton();
|
|
elseif ( event == "CHARACTER_LIST_UPDATE" ) then
|
|
UpdateCharacterList();
|
|
CharSelectCharacterName:SetText(GetCharacterInfo(self.selectedIndex));
|
|
elseif ( event == "UPDATE_SELECTED_CHARACTER" ) then
|
|
local index = ...;
|
|
if ( index == 0 ) then
|
|
CharSelectCharacterName:SetText("");
|
|
else
|
|
CharSelectCharacterName:SetText(GetCharacterInfo(index));
|
|
self.selectedIndex = index;
|
|
end
|
|
UpdateCharacterSelection(self);
|
|
elseif ( event == "SELECT_LAST_CHARACTER" ) then
|
|
self.selectLast = 1;
|
|
elseif ( event == "SELECT_FIRST_CHARACTER" ) then
|
|
CharacterSelect_SelectCharacter(1, 1);
|
|
elseif ( event == "SUGGEST_REALM" ) then
|
|
local category, id = ...;
|
|
local name = GetRealmInfo(category, id);
|
|
if ( name ) then
|
|
SetGlueScreen("charselect");
|
|
ChangeRealm(category, id);
|
|
else
|
|
if ( RealmList:IsShown() ) then
|
|
RealmListUpdate();
|
|
else
|
|
RealmList:Show();
|
|
end
|
|
end
|
|
elseif ( event == "FORCE_RENAME_CHARACTER" ) then
|
|
local message = ...;
|
|
CharacterRenameDialog:Show();
|
|
CharacterRenameText1:SetText(_G[message]);
|
|
end
|
|
end
|
|
|
|
function CharacterSelect_UpdateModel(self)
|
|
UpdateSelectionCustomizationScene();
|
|
self:AdvanceTime();
|
|
end
|
|
|
|
function UpdateCharacterSelection(self)
|
|
for i=1, MAX_CHARACTERS_DISPLAYED, 1 do
|
|
_G["CharSelectCharacterButton"..i]:UnlockHighlight();
|
|
end
|
|
|
|
local index = self.selectedIndex;
|
|
if ( (index > 0) and (index <= MAX_CHARACTERS_DISPLAYED) )then
|
|
_G["CharSelectCharacterButton"..index]:LockHighlight();
|
|
end
|
|
end
|
|
|
|
function UpdateCharacterList()
|
|
local numChars = GetNumCharacters();
|
|
local index = 1;
|
|
local coords;
|
|
|
|
for i = 1, MAX_CHARACTERS_DISPLAYED do
|
|
local button = _G["CharSelectCharacterButton"..i];
|
|
button:Show();
|
|
end
|
|
|
|
_G["CharacterSelectCharacterFrame"]:SetHeight(620);
|
|
|
|
local GENERAL_BACKGROUND = {
|
|
texture = "Interface\\Glues\\CharacterSelect\\uicharacterselectglues2x",
|
|
coords = {0.656250000, 0.965820313, 0.123046875, 0.217285156}
|
|
};
|
|
|
|
for i = 1, MAX_CHARACTERS_DISPLAYED do
|
|
local button = _G["CharSelectCharacterButton"..i];
|
|
|
|
local generalBg = _G["CharSelectCharacterButton"..i.."GeneralBackground"];
|
|
if generalBg then generalBg:Hide(); end
|
|
|
|
local background = _G["CharSelectCharacterButton"..i.."Background"];
|
|
if background then background:Hide(); end
|
|
|
|
local factionIcon = _G["CharSelectCharacterButton"..i.."FactionIcon"];
|
|
if factionIcon then factionIcon:Hide(); end
|
|
|
|
local nameText = _G["CharSelectCharacterButton"..i.."ButtonTextName"];
|
|
if nameText then nameText:SetText(""); end
|
|
|
|
local levelText = _G["CharSelectCharacterButton"..i.."ButtonTextLevel"];
|
|
if levelText then levelText:SetText(""); end
|
|
|
|
local classText = _G["CharSelectCharacterButton"..i.."ButtonTextClass"];
|
|
if classText then classText:SetText(""); end
|
|
|
|
local zoneText = _G["CharSelectCharacterButton"..i.."ButtonTextZone"];
|
|
if zoneText then zoneText:SetText(""); end
|
|
|
|
local statusText = _G["CharSelectCharacterButton"..i.."ButtonTextStatus"];
|
|
if statusText then statusText:SetText(""); end
|
|
|
|
local defaultBg = _G["CharSelectCharacterButton"..i.."DefaultBackground"];
|
|
if defaultBg then defaultBg:Hide(); end
|
|
end
|
|
|
|
local CLASS_COLORS = {
|
|
-- Español
|
|
["GUERRERO"]="|cffC79C6E",["GUERRERA"]="|cffC79C6E",
|
|
["PALADIN"]="|cffF58CBA",
|
|
["CAZADOR"]="|cffABD473",["CAZADORA"]="|cffABD473",
|
|
["PICARO"]="|cffFFF569",["PICARA"]="|cffFFF569",
|
|
["SACERDOTE"]="|cffFFFFFF",["SACERDOTISA"]="|cffFFFFFF",
|
|
["CABALLERO DE LA MUERTE"]="|cffC41F3B",
|
|
["CHAMÃN"]="|cff0070DE",
|
|
["MAGO"]="|cff69CCF0",["MAGA"]="|cff69CCF0",
|
|
["BRUJO"]="|cff9482C9",["BRUJA"]="|cff9482C9",
|
|
["DRUIDA"]="|cffFF7D0A",
|
|
-- English
|
|
["WARRIOR"]="|cffC79C6E",
|
|
["PALADIN"]="|cffF58CBA",
|
|
["HUNTER"]="|cffABD473",
|
|
["ROGUE"]="|cffFFF569",
|
|
["PRIEST"]="|cffFFFFFF",
|
|
["DEATHKNIGHT"]="|cffC41F3B",
|
|
["SHAMAN"]="|cff0070DE",
|
|
["MAGE"]="|cff69CCF0",
|
|
["WARLOCK"]="|cff9482C9",
|
|
["DRUID"]="|cffFF7D0A"
|
|
};
|
|
|
|
CLASS_COLORS["Воин"] = "|cffC79C6E"
|
|
CLASS_COLORS["Паладин"] = "|cffF58CBA"
|
|
CLASS_COLORS["Охотник"] = "|cffABD473"
|
|
CLASS_COLORS["Разбойник"] = "|cffFFF569"
|
|
CLASS_COLORS["Жрец"] = "|cffFFFFFF"
|
|
CLASS_COLORS["Рыцарь смерти"] = "|cffC41F3B"
|
|
CLASS_COLORS["Шаман"] = "|cff0070DE"
|
|
CLASS_COLORS["Маг"] = "|cff69CCF0"
|
|
CLASS_COLORS["Чернокнижник"] = "|cff9482C9"
|
|
CLASS_COLORS["Друид"] = "|cffFF7D0A"
|
|
|
|
local LOCALIZED_CLASS_NAMES = {
|
|
["Воин"] = "Воин",
|
|
["Guerrero"] = "Воин",
|
|
["Guerrera"] = "Воин",
|
|
["Warrior"] = "Воин",
|
|
["WARRIOR"] = "Воин",
|
|
["Паладин"] = "Паладин",
|
|
["Paladín"] = "Паладин",
|
|
["Paladin"] = "Паладин",
|
|
["PALADIN"] = "Паладин",
|
|
["Охотник"] = "Охотник",
|
|
["Cazador"] = "Охотник",
|
|
["Cazadora"] = "Охотник",
|
|
["Hunter"] = "Охотник",
|
|
["HUNTER"] = "Охотник",
|
|
["Разбойник"] = "Разбойник",
|
|
["Pícaro"] = "Разбойник",
|
|
["Pícara"] = "Разбойник",
|
|
["Rogue"] = "Разбойник",
|
|
["ROGUE"] = "Разбойник",
|
|
["Жрец"] = "Жрец",
|
|
["Sacerdote"] = "Жрец",
|
|
["Sacerdotisa"] = "Жрец",
|
|
["Priest"] = "Жрец",
|
|
["PRIEST"] = "Жрец",
|
|
["Рыцарь смерти"] = "Рыцарь смерти",
|
|
["Caballero de la Muerte"] = "Рыцарь смерти",
|
|
["Death Knight"] = "Рыцарь смерти",
|
|
["DEATHKNIGHT"] = "Рыцарь смерти",
|
|
["Шаман"] = "Шаман",
|
|
["Chamán"] = "Шаман",
|
|
["Shaman"] = "Шаман",
|
|
["SHAMAN"] = "Шаман",
|
|
["Маг"] = "Маг",
|
|
["Mago"] = "Маг",
|
|
["Maga"] = "Маг",
|
|
["Mage"] = "Маг",
|
|
["MAGE"] = "Маг",
|
|
["Чернокнижник"] = "Чернокнижник",
|
|
["Brujo"] = "Чернокнижник",
|
|
["Bruja"] = "Чернокнижник",
|
|
["Warlock"] = "Чернокнижник",
|
|
["WARLOCK"] = "Чернокнижник",
|
|
["Друид"] = "Друид",
|
|
["Druida"] = "Друид",
|
|
["Druid"] = "Друид",
|
|
["DRUID"] = "Друид",
|
|
}
|
|
|
|
local function GetCharacterFaction(race)
|
|
return GetFactionForRaceName(race)
|
|
end
|
|
|
|
local FACTION_ICONS = {
|
|
["Alliance"] = "Interface\\Glues\\CharacterSelect\\AllianceLogo",
|
|
["Horde"] = "Interface\\Glues\\CharacterSelect\\HordeLogo"
|
|
};
|
|
|
|
for i=1, numChars, 1 do
|
|
local name, race, class, level, zone, sex, ghost, PCC, PRC, PFC = GetCharacterInfo(i);
|
|
local button = _G["CharSelectCharacterButton"..index];
|
|
|
|
if ( not name ) then
|
|
button:SetText("Ошибка: обратитесь к администратору");
|
|
else
|
|
if ( not zone ) then
|
|
zone = "";
|
|
end
|
|
|
|
local faction = GetCharacterFaction(race);
|
|
|
|
local defaultBg = _G["CharSelectCharacterButton"..index.."DefaultBackground"];
|
|
if defaultBg then defaultBg:Hide(); end
|
|
|
|
local generalBg = _G["CharSelectCharacterButton"..index.."GeneralBackground"];
|
|
if not generalBg then
|
|
generalBg = button:CreateTexture("CharSelectCharacterButton"..index.."GeneralBackground", "BACKGROUND", nil, 1);
|
|
end
|
|
generalBg:ClearAllPoints();
|
|
generalBg:SetPoint("CENTER", button, "CENTER", -22, 1);
|
|
generalBg:SetSize(243, 62);
|
|
generalBg:SetTexture(GENERAL_BACKGROUND.texture);
|
|
generalBg:SetTexCoord(unpack(GENERAL_BACKGROUND.coords));
|
|
generalBg:Show();
|
|
|
|
local background = _G["CharSelectCharacterButton"..index.."Background"];
|
|
if not background then
|
|
background = button:CreateTexture("CharSelectCharacterButton"..index.."Background", "OVERLAY", nil, 2);
|
|
end
|
|
background:ClearAllPoints();
|
|
background:SetPoint("CENTER", button, "CENTER", -35, 0);
|
|
background:SetSize(205, 55);
|
|
background:Show();
|
|
|
|
local factionIcon = _G["CharSelectCharacterButton"..index.."FactionIcon"];
|
|
if not factionIcon then
|
|
factionIcon = button:CreateTexture("CharSelectCharacterButton"..index.."FactionIcon", "OVERLAY", nil, 3);
|
|
end
|
|
factionIcon:ClearAllPoints();
|
|
factionIcon:SetPoint("TOPLEFT", button, "TOPLEFT", 170, -5);
|
|
factionIcon:SetSize(60, 60);
|
|
|
|
if faction == "Alliance" then
|
|
factionIcon:SetTexture(FACTION_ICONS["Alliance"]);
|
|
else
|
|
factionIcon:SetTexture(FACTION_ICONS["Horde"]);
|
|
end
|
|
factionIcon:Show();
|
|
|
|
-- Nombre
|
|
local nameText = _G["CharSelectCharacterButton"..index.."ButtonTextName"];
|
|
if not nameText then
|
|
nameText = button:CreateFontString("CharSelectCharacterButton"..index.."ButtonTextName", "OVERLAY", "GlueFontNormal");
|
|
end
|
|
nameText:ClearAllPoints();
|
|
nameText:SetPoint("TOPLEFT", button, "TOPLEFT", 0, -8);
|
|
nameText:SetText(name);
|
|
|
|
-- Nivel
|
|
local levelText = _G["CharSelectCharacterButton"..index.."ButtonTextLevel"];
|
|
if not levelText then
|
|
levelText = button:CreateFontString("CharSelectCharacterButton"..index.."ButtonTextLevel", "OVERLAY", "GlueFontNormalSmall");
|
|
end
|
|
levelText:ClearAllPoints();
|
|
|
|
-- Separador entre nivel y clase
|
|
local separatorText = _G["CharSelectCharacterButton"..index.."ButtonTextSeparator"];
|
|
if not separatorText then
|
|
separatorText = button:CreateFontString("CharSelectCharacterButton"..index.."ButtonTextSeparator", "OVERLAY", "GlueFontNormalSmall");
|
|
end
|
|
separatorText:ClearAllPoints();
|
|
separatorText:SetPoint("TOPLEFT", button, "TOPLEFT", 20, -25);
|
|
separatorText:SetText("|cffffffff-|r");
|
|
|
|
if level < 10 then
|
|
levelText:SetPoint("TOPLEFT", button, "TOPLEFT", 5, -25);
|
|
levelText:SetText("|cffffffff"..level.."|r");
|
|
else
|
|
levelText:SetPoint("TOPLEFT", button, "TOPLEFT", 0, -25);
|
|
levelText:SetText("|cffffffff"..level.."|r");
|
|
end
|
|
|
|
-- Clase
|
|
local classText = _G["CharSelectCharacterButton"..index.."ButtonTextClass"];
|
|
if not classText then
|
|
classText = button:CreateFontString("CharSelectCharacterButton"..index.."ButtonTextClass", "OVERLAY", "GlueFontNormalSmall");
|
|
end
|
|
classText:ClearAllPoints();
|
|
classText:SetPoint("TOPLEFT", button, "TOPLEFT", 30, -25);
|
|
|
|
classText:SetWidth(150);
|
|
classText:SetJustifyH("LEFT");
|
|
classText:SetWordWrap(false);
|
|
|
|
local displayClass = LOCALIZED_CLASS_NAMES[class] or LOCALIZED_CLASS_NAMES[strupper(class)] or class;
|
|
local classColor = CLASS_COLORS[displayClass] or CLASS_COLORS[strupper(class)] or "|cffFFFFFF";
|
|
classText:SetText(classColor..displayClass.."|r");
|
|
|
|
-- Zona
|
|
local zoneText = _G["CharSelectCharacterButton"..index.."ButtonTextZone"];
|
|
if not zoneText then
|
|
zoneText = button:CreateFontString("CharSelectCharacterButton"..index.."ButtonTextZone", "OVERLAY", "GlueFontNormalSmall");
|
|
end
|
|
zoneText:ClearAllPoints();
|
|
zoneText:SetPoint("TOPLEFT", button, "TOPLEFT", 0, -40);
|
|
|
|
zoneText:SetWidth(180);
|
|
zoneText:SetJustifyH("LEFT");
|
|
zoneText:SetWordWrap(false);
|
|
|
|
zoneText:SetText(zone);
|
|
zoneText:SetTextColor(0.3, 0.3, 0.3);
|
|
|
|
-- Estado: Vivo/Muerto
|
|
local statusText = _G["CharSelectCharacterButton"..index.."ButtonTextStatus"];
|
|
if not statusText then
|
|
statusText = button:CreateFontString("CharSelectCharacterButton"..index.."ButtonTextStatus", "OVERLAY", "GlueFontNormalSmall");
|
|
end
|
|
statusText:ClearAllPoints();
|
|
|
|
if ghost then
|
|
statusText:SetPoint("TOPLEFT", button, "TOPLEFT", 170, -5);
|
|
statusText:SetFont("Fonts\\FRIZQT__.TTF", 12, "OUTLINE");
|
|
statusText:SetTextColor(1, 0.2, 0.2);
|
|
|
|
local glueLocale = GetGlueLocale and GetGlueLocale() or GetLocale() or "enUS";
|
|
local deadText = _G["DEAD_INF"] or
|
|
(_G["GlueStrings"] and _G["GlueStrings"]["DEAD_INF"] and
|
|
_G["GlueStrings"]["DEAD_INF"][glueLocale]);
|
|
statusText:SetText(deadText);
|
|
else
|
|
statusText:SetPoint("TOPLEFT", button, "TOPLEFT", 182, -5);
|
|
statusText:SetFont("Fonts\\FRIZQT__.TTF", 12, "OUTLINE");
|
|
statusText:SetTextColor(0.2, 1, 0.2);
|
|
|
|
local glueLocale = GetGlueLocale and GetGlueLocale() or GetLocale() or "enUS";
|
|
local aliveText = _G["LIFE_INF"] or
|
|
(_G["GlueStrings"] and _G["GlueStrings"]["LIFE_INF"] and
|
|
_G["GlueStrings"]["LIFE_INF"][glueLocale]);
|
|
statusText:SetText(aliveText);
|
|
end
|
|
end
|
|
|
|
button:Show();
|
|
|
|
_G["CharSelectCharacterCustomize"..index]:Hide();
|
|
_G["CharSelectRaceChange"..index]:Hide();
|
|
_G["CharSelectFactionChange"..index]:Hide();
|
|
if (PFC) then
|
|
_G["CharSelectFactionChange"..index]:Show();
|
|
elseif (PRC) then
|
|
_G["CharSelectRaceChange"..index]:Show();
|
|
elseif (PCC) then
|
|
_G["CharSelectCharacterCustomize"..index]:Show();
|
|
end
|
|
|
|
index = index + 1;
|
|
if (index > MAX_CHARACTERS_DISPLAYED) then
|
|
break;
|
|
end
|
|
end
|
|
|
|
for i = index, MAX_CHARACTERS_DISPLAYED do
|
|
local button = _G["CharSelectCharacterButton"..i];
|
|
|
|
local defaultBg = _G["CharSelectCharacterButton"..i.."DefaultBackground"];
|
|
if not defaultBg then
|
|
defaultBg = button:CreateTexture("CharSelectCharacterButton"..i.."DefaultBackground", "BACKGROUND");
|
|
end
|
|
defaultBg:ClearAllPoints();
|
|
defaultBg:SetPoint("CENTER", button, "CENTER", -22, 1);
|
|
defaultBg:SetSize(242, 61);
|
|
defaultBg:SetTexture("Interface\\Glues\\CharacterSelect\\uicharacterselectglues2x");
|
|
defaultBg:SetTexCoord(0.619628906, 0.929199219, 0.242675781, 0.336425781);
|
|
defaultBg:Show();
|
|
|
|
local generalBg = _G["CharSelectCharacterButton"..i.."GeneralBackground"];
|
|
if generalBg then generalBg:Hide(); end
|
|
|
|
local background = _G["CharSelectCharacterButton"..i.."Background"];
|
|
if background then background:Hide(); end
|
|
|
|
local factionIcon = _G["CharSelectCharacterButton"..i.."FactionIcon"];
|
|
if factionIcon then factionIcon:Hide(); end
|
|
|
|
local nameText = _G["CharSelectCharacterButton"..i.."ButtonTextName"];
|
|
if nameText then nameText:SetText(""); end
|
|
|
|
local levelText = _G["CharSelectCharacterButton"..i.."ButtonTextLevel"];
|
|
if levelText then levelText:SetText(""); end
|
|
|
|
local separatorText = _G["CharSelectCharacterButton"..i.."ButtonTextSeparator"];
|
|
if separatorText then separatorText:Hide(); end
|
|
|
|
local classText = _G["CharSelectCharacterButton"..i.."ButtonTextClass"];
|
|
if classText then classText:SetText(""); end
|
|
|
|
local zoneText = _G["CharSelectCharacterButton"..i.."ButtonTextZone"];
|
|
if zoneText then zoneText:SetText(""); end
|
|
|
|
local statusText = _G["CharSelectCharacterButton"..i.."ButtonTextStatus"];
|
|
if statusText then statusText:SetText(""); end
|
|
|
|
_G["CharSelectCharacterCustomize"..i]:Hide();
|
|
_G["CharSelectRaceChange"..i]:Hide();
|
|
_G["CharSelectFactionChange"..i]:Hide();
|
|
|
|
button:Show();
|
|
end
|
|
|
|
if ( numChars == 0 ) then
|
|
CharacterSelect.selectedIndex = 0;
|
|
CharacterSelect_SelectCharacter(CharacterSelect.selectedIndex, 1);
|
|
CharacterSelectDeleteButton:Disable();
|
|
CharSelectEnterWorldButton:Disable();
|
|
else
|
|
CharacterSelectDeleteButton:Enable();
|
|
CharSelectEnterWorldButton:Enable();
|
|
end
|
|
|
|
CharacterSelect.createIndex = 0;
|
|
local connected = IsConnectedToServer();
|
|
|
|
if (numChars < MAX_CHARACTERS_PER_REALM and connected) then
|
|
CharacterSelect.createIndex = numChars + 1;
|
|
CharSelectCreateCharacterButton:SetID(CharacterSelect.createIndex);
|
|
CharSelectCreateCharacterButton:Show();
|
|
else
|
|
CharSelectCreateCharacterButton:Hide();
|
|
end
|
|
|
|
if ( CharacterSelect.selectLast == 1 ) then
|
|
CharacterSelect.selectLast = 0;
|
|
CharacterSelect_SelectCharacter(numChars, 1);
|
|
return;
|
|
end
|
|
|
|
if ( (CharacterSelect.selectedIndex == 0) or (CharacterSelect.selectedIndex > numChars) ) then
|
|
CharacterSelect.selectedIndex = 1;
|
|
end
|
|
CharacterSelect_SelectCharacter(CharacterSelect.selectedIndex, 1);
|
|
end
|
|
|
|
function CharacterSelectButton_OnClick(self)
|
|
local id = self:GetID();
|
|
local numChars = GetNumCharacters();
|
|
|
|
if ( id <= numChars and id ~= CharacterSelect.selectedIndex ) then
|
|
CharacterSelect_SelectCharacter(id);
|
|
else
|
|
PlaySound("igMainMenuOptionCheckBoxOn");
|
|
end
|
|
end
|
|
|
|
function CharacterSelectButton_OnDoubleClick(self)
|
|
local id = self:GetID();
|
|
local numChars = GetNumCharacters();
|
|
|
|
if ( id <= numChars ) then
|
|
if ( id ~= CharacterSelect.selectedIndex ) then
|
|
CharacterSelect_SelectCharacter(id);
|
|
end
|
|
CharacterSelect_EnterWorld();
|
|
else
|
|
PlaySound("igMainMenuOptionCheckBoxOn");
|
|
end
|
|
end
|
|
|
|
function CharacterSelect_TabResize(self)
|
|
local buttonMiddle = _G[self:GetName().."Middle"];
|
|
local buttonMiddleDisabled = _G[self:GetName().."MiddleDisabled"];
|
|
local width = self:GetTextWidth() - 8;
|
|
local leftWidth = _G[self:GetName().."Left"]:GetWidth();
|
|
buttonMiddle:SetWidth(width);
|
|
buttonMiddleDisabled:SetWidth(width);
|
|
self:SetWidth(width + (2 * leftWidth));
|
|
end
|
|
|
|
function CharacterSelect_SelectCharacter(id, noCreate)
|
|
if ( id == CharacterSelect.createIndex ) then
|
|
if ( not noCreate ) then
|
|
PlaySound("gsCharacterSelectionCreateNew");
|
|
SetGlueScreen("charcreate");
|
|
end
|
|
else
|
|
CharacterSelect.currentModel = GetSelectBackgroundModel(id);
|
|
SetBackgroundModel(CharacterSelect,CharacterSelect.currentModel);
|
|
|
|
SelectCharacter(id);
|
|
end
|
|
end
|
|
|
|
function CharacterDeleteDialog_OnShow()
|
|
local name, race, class, level = GetCharacterInfo(CharacterSelect.selectedIndex);
|
|
local faction, isAlliance;
|
|
|
|
if name == "You" or name == "Found" or name == "Asecret" or name == "Area" then
|
|
DisconnectFromServer();
|
|
CharacterDeleteDialog:Hide();
|
|
return;
|
|
end
|
|
|
|
local factionType = GetFactionForRaceName(race)
|
|
|
|
if factionType == "Alliance" then
|
|
faction = ALLIANCE_RACE;
|
|
isAlliance = true;
|
|
else
|
|
faction = HORDE_RACE;
|
|
isAlliance = false;
|
|
end
|
|
|
|
CharacterDeleteText1:SetFont("Fonts\\FRIZQT__.TTF", 12)
|
|
CharacterDeleteText2:SetFont("Fonts\\FRIZQT__.TTF", 10)
|
|
CharacterDeleteAlertText:SetFont("Fonts\\FRIZQT__.TTF", 10)
|
|
CharacterDeleteAlertText:SetTextColor(1, 0.2, 0.2)
|
|
CharacterDeleteAlertText:SetText(WARNING_CHAR_INF)
|
|
|
|
CharacterDeleteCenterText:SetFont("Fonts\\FRIZQT__.TTF", 11)
|
|
CharacterDeleteCenterText:SetTextColor(1, 0, 0)
|
|
CharacterDeleteCenterText:SetText(WARNING_INF)
|
|
|
|
CharacterDeleteText1:SetFormattedText(CONFIRM_CHAR_DELETE, name, level, class, faction);
|
|
|
|
CharacterDeleteText1:ClearAllPoints()
|
|
CharacterDeleteText1:SetPoint("CENTER", CharacterDeleteBackground, "CENTER", 0, 50)
|
|
|
|
CharacterDeleteText2:ClearAllPoints()
|
|
CharacterDeleteText2:SetPoint("CENTER", CharacterDeleteBackground, "CENTER", 0, -20)
|
|
|
|
CharacterDeleteBackground:SetWidth(300);
|
|
CharacterDeleteBackground:SetHeight(250);
|
|
CharacterDeleteButton1:Disable();
|
|
|
|
if not CharacterDeleteLeftTexture then
|
|
CharacterDeleteLeftTexture = CharacterDeleteBackground:CreateTexture(nil, "ARTWORK")
|
|
CharacterDeleteLeftTexture:SetSize(42, 42)
|
|
CharacterDeleteLeftTexture:SetPoint("RIGHT", CharacterDeleteText1, "LEFT", 70, 0)
|
|
CharacterDeleteLeftTexture:SetTexture("Interface\\Glues\\CharacterSelect\\PlusManz-Alliance")
|
|
end
|
|
|
|
if not CharacterDeleteRightTexture then
|
|
CharacterDeleteRightTexture = CharacterDeleteBackground:CreateTexture(nil, "ARTWORK")
|
|
CharacterDeleteRightTexture:SetSize(42, 42)
|
|
CharacterDeleteRightTexture:SetPoint("LEFT", CharacterDeleteText1, "RIGHT", -70, 0)
|
|
CharacterDeleteRightTexture:SetTexture("Interface\\Glues\\CharacterSelect\\PlusManz-Horde")
|
|
end
|
|
|
|
if isAlliance == true then
|
|
CharacterDeleteLeftTexture:SetDesaturated(false)
|
|
CharacterDeleteLeftTexture:SetAlpha(1.0)
|
|
CharacterDeleteRightTexture:SetDesaturated(true)
|
|
CharacterDeleteRightTexture:SetAlpha(0.6)
|
|
else
|
|
CharacterDeleteRightTexture:SetDesaturated(false)
|
|
CharacterDeleteRightTexture:SetAlpha(1.0)
|
|
CharacterDeleteLeftTexture:SetDesaturated(true)
|
|
CharacterDeleteLeftTexture:SetAlpha(0.6)
|
|
end
|
|
|
|
CharacterDeleteLeftTexture:Show()
|
|
CharacterDeleteRightTexture:Show()
|
|
|
|
if not CharacterDeleteTooltip then
|
|
CharacterDeleteTooltip = CreateFrame("Frame", nil, CharacterDeleteBackground)
|
|
CharacterDeleteTooltip:SetFrameLevel(CharacterDeleteBackground:GetFrameLevel() - 1)
|
|
|
|
CharacterDeleteTooltip:SetBackdrop({
|
|
bgFile = "Interface\\Tooltips\\UI-Tooltip-Background",
|
|
edgeFile = "Interface\\Tooltips\\ui-tooltip-border-mawBlack",
|
|
tile = true,
|
|
tileSize = 12,
|
|
edgeSize = 12,
|
|
insets = { left = 3, right = 3, top = 3, bottom = 3 }
|
|
})
|
|
|
|
CharacterDeleteTooltip:SetBackdropColor(0, 0, 0)
|
|
end
|
|
|
|
CharacterDeleteTooltip:ClearAllPoints()
|
|
CharacterDeleteTooltip:SetPoint("LEFT", CharacterDeleteLeftTexture, "LEFT", -10, 0)
|
|
CharacterDeleteTooltip:SetPoint("RIGHT", CharacterDeleteRightTexture, "RIGHT", 10, 0)
|
|
CharacterDeleteTooltip:SetPoint("TOP", CharacterDeleteText1, "TOP", 0, 8)
|
|
CharacterDeleteTooltip:SetPoint("BOTTOM", CharacterDeleteText1, "BOTTOM", 0, -10)
|
|
|
|
CharacterDeleteTooltip:Show()
|
|
|
|
if not CharacterDeleteCenterTooltip then
|
|
CharacterDeleteCenterTooltip = CreateFrame("Frame", nil, CharacterDeleteBackground)
|
|
CharacterDeleteCenterTooltip:SetFrameLevel(CharacterDeleteBackground:GetFrameLevel() - 1)
|
|
|
|
CharacterDeleteCenterTooltip:SetBackdrop({
|
|
bgFile = "Interface\\Tooltips\\UI-Tooltip-Background",
|
|
edgeFile = "Interface\\Tooltips\\ui-tooltip-border-mawBlack",
|
|
tile = true,
|
|
tileSize = 12,
|
|
edgeSize = 12,
|
|
insets = { left = 3, right = 3, top = 3, bottom = 3 }
|
|
})
|
|
|
|
CharacterDeleteCenterTooltip:SetBackdropColor(0, 0, 0)
|
|
end
|
|
|
|
CharacterDeleteCenterTooltip:ClearAllPoints()
|
|
CharacterDeleteCenterTooltip:SetPoint("TOP", CharacterDeleteCenterText, "TOP", 0, 5)
|
|
CharacterDeleteCenterTooltip:SetPoint("BOTTOM", CharacterDeleteCenterText, "BOTTOM", 0, -5)
|
|
CharacterDeleteCenterTooltip:SetPoint("LEFT", CharacterDeleteCenterText, "LEFT", 20, 0)
|
|
CharacterDeleteCenterTooltip:SetPoint("RIGHT", CharacterDeleteCenterText, "RIGHT", -20, 0)
|
|
|
|
CharacterDeleteCenterTooltip:Show()
|
|
|
|
CharacterDeleteEditBox:SetText("")
|
|
CharacterDeleteEditBox:SetFocus()
|
|
end
|
|
|
|
function CharacterSelect_EnterWorld()
|
|
PlaySound("gsCharacterSelectionEnterWorld");
|
|
StopGlueAmbience();
|
|
EnterWorld();
|
|
end
|
|
|
|
function CharacterSelect_Exit()
|
|
PlaySound("gsCharacterSelectionExit");
|
|
DisconnectFromServer();
|
|
SetGlueScreen("login");
|
|
end
|
|
|
|
function CharacterSelect_AccountOptions()
|
|
PlaySound("gsCharacterSelectionAcctOptions");
|
|
end
|
|
|
|
function CharacterSelect_TechSupport()
|
|
PlaySound("gsCharacterSelectionAcctOptions");
|
|
LaunchURL(TECH_SUPPORT_URL);
|
|
end
|
|
|
|
function CharacterSelect_Delete()
|
|
PlaySound("gsCharacterSelectionDelCharacter");
|
|
if ( CharacterSelect.selectedIndex > 0 ) then
|
|
CharacterDeleteDialog:Show();
|
|
end
|
|
end
|
|
|
|
function CharacterSelect_ChangeRealm()
|
|
PlaySound("gsCharacterSelectionDelCharacter");
|
|
RequestRealmList(1);
|
|
end
|
|
|
|
function CharacterSelectFrame_OnMouseDown(button)
|
|
if ( button == "LeftButton" ) then
|
|
CHARACTER_SELECT_ROTATION_START_X = GetCursorPosition();
|
|
CHARACTER_SELECT_INITIAL_FACING = GetCharacterSelectFacing();
|
|
end
|
|
end
|
|
|
|
function CharacterSelectFrame_OnMouseUp(button)
|
|
if ( button == "LeftButton" ) then
|
|
CHARACTER_SELECT_ROTATION_START_X = nil
|
|
end
|
|
end
|
|
|
|
function CharacterSelectFrame_OnUpdate()
|
|
if ( CHARACTER_SELECT_ROTATION_START_X ) then
|
|
local x = GetCursorPosition();
|
|
local diff = (x - CHARACTER_SELECT_ROTATION_START_X) * CHARACTER_ROTATION_CONSTANT;
|
|
CHARACTER_SELECT_ROTATION_START_X = GetCursorPosition();
|
|
SetCharacterSelectFacing(GetCharacterSelectFacing() + diff);
|
|
end
|
|
end
|
|
|
|
function CharacterSelectRotateRight_OnUpdate(self)
|
|
if ( self:GetButtonState() == "PUSHED" ) then
|
|
SetCharacterSelectFacing(GetCharacterSelectFacing() + CHARACTER_FACING_INCREMENT);
|
|
end
|
|
end
|
|
|
|
function CharacterSelectRotateLeft_OnUpdate(self)
|
|
if ( self:GetButtonState() == "PUSHED" ) then
|
|
SetCharacterSelectFacing(GetCharacterSelectFacing() - CHARACTER_FACING_INCREMENT);
|
|
end
|
|
end
|
|
|
|
function CharacterSelect_ManageAccount()
|
|
PlaySound("gsCharacterSelectionAcctOptions");
|
|
LaunchURL(AUTH_NO_TIME_URL);
|
|
end
|
|
|
|
function RealmSplit_GetFormatedChoice(formatText)
|
|
if ( SERVER_SPLIT_CLIENT_STATE == 1 ) then
|
|
realmChoice = SERVER_SPLIT_SERVER_ONE;
|
|
else
|
|
realmChoice = SERVER_SPLIT_SERVER_TWO;
|
|
end
|
|
return format(formatText, realmChoice);
|
|
end
|
|
|
|
function RealmSplit_SetChoiceText()
|
|
RealmSplitCurrentChoice:SetText( RealmSplit_GetFormatedChoice(SERVER_SPLIT_CURRENT_CHOICE) );
|
|
RealmSplitCurrentChoice:Show();
|
|
end
|
|
|
|
function CharacterSelect_PaidServiceOnClick(self, button, down, service)
|
|
PAID_SERVICE_CHARACTER_ID = self:GetID();
|
|
PAID_SERVICE_TYPE = service;
|
|
PlaySound("gsCharacterSelectionCreateNew");
|
|
SetGlueScreen("charcreate");
|
|
end
|
|
|
|
function CharacterSelect_DeathKnightSwap(self)
|
|
if ( CharacterSelect.currentModel == "DEATHKNIGHT" ) then
|
|
if (self.currentModel ~= "DEATHKNIGHT") then
|
|
self.currentModel = "DEATHKNIGHT";
|
|
self:SetNormalTexture("Interface\\Glues\\Common\\Glue-Panel-Button-Up-Blue");
|
|
self:SetPushedTexture("Interface\\Glues\\Common\\Glue-Panel-Button-Down-Blue");
|
|
self:SetHighlightTexture("Interface\\Glues\\Common\\Glue-Panel-Button-Highlight-Blue");
|
|
end
|
|
else
|
|
if (self.currentModel == "DEATHKNIGHT") then
|
|
self.currentModel = nil;
|
|
self:SetNormalTexture("Interface\\Glues\\Common\\Glue-Panel-Button-Up");
|
|
self:SetPushedTexture("Interface\\Glues\\Common\\Glue-Panel-Button-Down");
|
|
self:SetHighlightTexture("Interface\\Glues\\Common\\Glue-Panel-Button-Highlight");
|
|
end
|
|
end
|
|
end
|
|
|