742 lines
22 KiB
Lua
742 lines
22 KiB
Lua
FADE_IN_TIME = 2;
|
|
DEFAULT_TOOLTIP_COLOR = {0.8, 0.8, 0.8, 0.09, 0.09, 0.09};
|
|
MAX_PIN_LENGTH = 10;
|
|
|
|
function AccountLogin_OnLoad(self)
|
|
TOSFrame.noticeType = "EULA";
|
|
|
|
self:RegisterEvent("SHOW_SERVER_ALERT");
|
|
self:RegisterEvent("SHOW_SURVEY_NOTIFICATION");
|
|
self:RegisterEvent("CLIENT_ACCOUNT_MISMATCH");
|
|
self:RegisterEvent("CLIENT_TRIAL");
|
|
self:RegisterEvent("SCANDLL_ERROR");
|
|
self:RegisterEvent("SCANDLL_FINISHED");
|
|
|
|
local versionType, buildType, version, internalVersion, date = GetBuildInfo();
|
|
AccountLoginVersion:SetFormattedText(VERSION_TEMPLATE, versionType, version, internalVersion, buildType, date);
|
|
|
|
-- Color edit box backdrops
|
|
local backdropColor = DEFAULT_TOOLTIP_COLOR;
|
|
AccountLoginAccountEdit:SetBackdropBorderColor(backdropColor[1], backdropColor[2], backdropColor[3]);
|
|
AccountLoginAccountEdit:SetBackdropColor(backdropColor[4], backdropColor[5], backdropColor[6]);
|
|
AccountLoginPasswordEdit:SetBackdropBorderColor(backdropColor[1], backdropColor[2], backdropColor[3]);
|
|
AccountLoginPasswordEdit:SetBackdropColor(backdropColor[4], backdropColor[5], backdropColor[6]);
|
|
AccountLoginTokenEdit:SetBackdropBorderColor(backdropColor[1], backdropColor[2], backdropColor[3]);
|
|
AccountLoginTokenEdit:SetBackdropColor(backdropColor[4], backdropColor[5], backdropColor[6]);
|
|
TokenEnterDialogBackgroundEdit:SetBackdropBorderColor(backdropColor[1], backdropColor[2], backdropColor[3]);
|
|
TokenEnterDialogBackgroundEdit:SetBackdropColor(backdropColor[4], backdropColor[5], backdropColor[6]);
|
|
|
|
self:SetCamera(0);
|
|
self:SetSequence(0);
|
|
|
|
if (IsStreamingTrial()) then
|
|
AccountLoginCinematicsButton:Disable();
|
|
AccountLogin:SetModel("Interface\\Glues\\Models\\UI_MainMenu\\UI_MainMenu.m2");
|
|
else
|
|
AccountLogin:SetModel("Interface\\Glues\\Models\\UI_RS_NightElf\\UI_RS_NightElf.m2");
|
|
end
|
|
end
|
|
|
|
function AccountLogin_OnShow(self)
|
|
self:SetSequence(0);
|
|
PlayGlueMusic(CurrentGlueMusic);
|
|
PlayGlueAmbience(GlueAmbienceTracks["DARKPORTAL"], 4.0);
|
|
|
|
-- Try to show the EULA or the TOS
|
|
AccountLogin_ShowUserAgreements();
|
|
|
|
local serverName = GetServerName();
|
|
if(serverName) then
|
|
AccountLoginRealmName:SetText(serverName);
|
|
else
|
|
AccountLoginRealmName:Hide()
|
|
end
|
|
|
|
local accountName = GetSavedAccountName();
|
|
|
|
AccountLoginAccountEdit:SetText(accountName);
|
|
AccountLoginPasswordEdit:SetText("");
|
|
AccountLoginTokenEdit:SetText("");
|
|
if ( accountName and accountName ~= "" and GetUsesToken() ) then
|
|
AccountLoginTokenEdit:Show()
|
|
else
|
|
AccountLoginTokenEdit:Hide()
|
|
end
|
|
|
|
AccountLogin_SetupAccountListDDL();
|
|
|
|
if ( accountName == "" ) then
|
|
AccountLogin_FocusAccountName();
|
|
else
|
|
AccountLogin_FocusPassword();
|
|
end
|
|
|
|
if( IsTrialAccount() ) then
|
|
AccountLoginUpgradeAccountButton:Show();
|
|
else
|
|
AccountLoginUpgradeAccountButton:Hide();
|
|
end
|
|
|
|
ACCOUNT_MSG_NUM_AVAILABLE = 0;
|
|
ACCOUNT_MSG_PRIORITY = 0;
|
|
ACCOUNT_MSG_HEADERS_LOADED = false;
|
|
ACCOUNT_MSG_BODY_LOADED = false;
|
|
ACCOUNT_MSG_CURRENT_INDEX = nil;
|
|
end
|
|
|
|
function AccountLogin_OnHide(self)
|
|
--Stop the sounds from the login screen (like the dragon roaring etc)
|
|
StopAllSFX( 1.0 );
|
|
if ( not AccountLoginSaveAccountName:GetChecked() ) then
|
|
SetSavedAccountList("");
|
|
end
|
|
end
|
|
|
|
function AccountLogin_FocusPassword()
|
|
AccountLoginPasswordEdit:SetFocus();
|
|
end
|
|
|
|
function AccountLogin_FocusAccountName()
|
|
AccountLoginAccountEdit:SetFocus();
|
|
end
|
|
|
|
function AccountLogin_OnKeyDown(key)
|
|
if ( key == "ESCAPE" ) then
|
|
if ( ConnectionHelpFrame:IsShown() ) then
|
|
ConnectionHelpFrame:Hide();
|
|
AccountLoginUI:Show();
|
|
elseif ( SurveyNotificationFrame:IsShown() ) then
|
|
-- do nothing
|
|
else
|
|
AccountLogin_Exit();
|
|
end
|
|
elseif ( key == "ENTER" ) then
|
|
if ( not TOSAccepted() ) then
|
|
return;
|
|
elseif ( TOSFrame:IsShown() or ConnectionHelpFrame:IsShown() ) then
|
|
return;
|
|
elseif ( SurveyNotificationFrame:IsShown() ) then
|
|
AccountLogin_SurveyNotificationDone(1);
|
|
end
|
|
AccountLogin_Login();
|
|
elseif ( key == "PRINTSCREEN" ) then
|
|
Screenshot();
|
|
end
|
|
end
|
|
|
|
function AccountLogin_OnEvent(event, arg1, arg2, arg3)
|
|
if ( event == "SHOW_SERVER_ALERT" ) then
|
|
ServerAlertText:SetText(arg1);
|
|
ServerAlertFrame:Show();
|
|
elseif ( event == "SHOW_SURVEY_NOTIFICATION" ) then
|
|
AccountLogin_ShowSurveyNotification();
|
|
elseif ( event == "CLIENT_ACCOUNT_MISMATCH" ) then
|
|
local accountExpansionLevel = arg1;
|
|
local installationExpansionLevel = arg2;
|
|
if ( accountExpansionLevel == 1 ) then
|
|
GlueDialog_Show("CLIENT_ACCOUNT_MISMATCH", CLIENT_ACCOUNT_MISMATCH_BC);
|
|
else
|
|
GlueDialog_Show("CLIENT_ACCOUNT_MISMATCH", CLIENT_ACCOUNT_MISMATCH_LK);
|
|
end
|
|
elseif ( event == "CLIENT_TRIAL" ) then
|
|
GlueDialog_Show("CLIENT_TRIAL");
|
|
elseif ( event == "SCANDLL_ERROR" ) then
|
|
GlueDialog:Hide();
|
|
ScanDLLContinueAnyway();
|
|
AccountLoginUI:Show();
|
|
elseif ( event == "SCANDLL_FINISHED" ) then
|
|
if ( arg1 == "OK" ) then
|
|
GlueDialog:Hide();
|
|
AccountLoginUI:Show();
|
|
else
|
|
AccountLogin.hackURL = _G["SCANDLL_URL_"..arg1];
|
|
AccountLogin.hackName = arg2;
|
|
AccountLogin.hackType = arg1;
|
|
local formatString = _G["SCANDLL_MESSAGE_"..arg1];
|
|
if ( arg3 == 1 ) then
|
|
formatString = _G["SCANDLL_MESSAGE_HACKNOCONTINUE"];
|
|
end
|
|
local msg = format(formatString, AccountLogin.hackName, AccountLogin.hackURL);
|
|
if ( arg3 == 1 ) then
|
|
GlueDialog_Show("SCANDLL_HACKFOUND_NOCONTINUE", msg);
|
|
else
|
|
GlueDialog_Show("SCANDLL_HACKFOUND", msg);
|
|
end
|
|
PlaySoundFile("Sound\\Creature\\MobileAlertBot\\MobileAlertBotIntruderAlert01.wav");
|
|
end
|
|
end
|
|
end
|
|
|
|
function AccountLogin_Login()
|
|
PlaySound("gsLogin");
|
|
DefaultServerLogin(AccountLoginAccountEdit:GetText(), AccountLoginPasswordEdit:GetText());
|
|
AccountLoginPasswordEdit:SetText("");
|
|
|
|
if ( AccountLoginSaveAccountName:GetChecked() ) then
|
|
SetSavedAccountName(AccountLoginAccountEdit:GetText());
|
|
else
|
|
SetSavedAccountName("");
|
|
SetUsesToken(false);
|
|
end
|
|
end
|
|
|
|
function AccountLogin_TOS()
|
|
if ( not GlueDialog:IsShown() ) then
|
|
PlaySound("gsLoginNewAccount");
|
|
AccountLoginUI:Hide();
|
|
TOSFrame:Show();
|
|
TOSScrollFrameScrollBar:SetValue(0);
|
|
TOSScrollFrame:Show();
|
|
TOSFrameTitle:SetText(TOS_FRAME_TITLE);
|
|
TOSText:Show();
|
|
end
|
|
end
|
|
|
|
function AccountLogin_ManageAccount()
|
|
PlaySound("gsLoginNewAccount");
|
|
LaunchURL(AUTH_NO_TIME_URL);
|
|
end
|
|
|
|
function AccountLogin_LaunchCommunitySite()
|
|
PlaySound("gsLoginNewAccount");
|
|
LaunchURL(COMMUNITY_URL);
|
|
end
|
|
|
|
function CharacterSelect_UpgradeAccount()
|
|
PlaySound("gsLoginNewAccount");
|
|
LaunchURL(AUTH_NO_TIME_URL);
|
|
end
|
|
|
|
function AccountLogin_Credits()
|
|
CreditsFrame.creditsType = 3;
|
|
PlaySound("gsTitleCredits");
|
|
SetGlueScreen("credits");
|
|
end
|
|
|
|
function AccountLogin_Cinematics()
|
|
if ( not GlueDialog:IsShown() ) then
|
|
PlaySound("gsLoginNewAccount");
|
|
if ( CinematicsFrame.numMovies > 1 ) then
|
|
CinematicsFrame:Show();
|
|
else
|
|
MovieFrame.version = 1;
|
|
SetGlueScreen("movie");
|
|
end
|
|
end
|
|
end
|
|
|
|
function AccountLogin_Options()
|
|
PlaySound("gsTitleOptions");
|
|
end
|
|
|
|
function AccountLogin_Exit()
|
|
-- PlaySound("gsTitleQuit");
|
|
QuitGame();
|
|
end
|
|
|
|
function AccountLogin_ShowSurveyNotification()
|
|
GlueDialog:Hide();
|
|
AccountLoginUI:Hide();
|
|
SurveyNotificationAccept:Enable();
|
|
SurveyNotificationDecline:Enable();
|
|
SurveyNotificationFrame:Show();
|
|
end
|
|
|
|
function AccountLogin_SurveyNotificationDone(accepted)
|
|
SurveyNotificationFrame:Hide();
|
|
SurveyNotificationAccept:Disable();
|
|
SurveyNotificationDecline:Disable();
|
|
SurveyNotificationDone(accepted);
|
|
AccountLoginUI:Show();
|
|
end
|
|
|
|
function AccountLogin_ShowUserAgreements()
|
|
TOSScrollFrame:Hide();
|
|
EULAScrollFrame:Hide();
|
|
TerminationScrollFrame:Hide();
|
|
ScanningScrollFrame:Hide();
|
|
ContestScrollFrame:Hide();
|
|
TOSText:Hide();
|
|
EULAText:Hide();
|
|
TerminationText:Hide();
|
|
ScanningText:Hide();
|
|
if ( not EULAAccepted() ) then
|
|
if ( ShowEULANotice() ) then
|
|
TOSNotice:SetText(EULA_NOTICE);
|
|
TOSNotice:Show();
|
|
end
|
|
AccountLoginUI:Hide();
|
|
TOSFrame.noticeType = "EULA";
|
|
TOSFrameTitle:SetText(EULA_FRAME_TITLE);
|
|
TOSFrameHeader:SetWidth(TOSFrameTitle:GetWidth());
|
|
EULAScrollFrame:Show();
|
|
EULAText:Show();
|
|
TOSFrame:Show();
|
|
elseif ( not TOSAccepted() ) then
|
|
if ( ShowTOSNotice() ) then
|
|
TOSNotice:SetText(TOS_NOTICE);
|
|
TOSNotice:Show();
|
|
end
|
|
AccountLoginUI:Hide();
|
|
TOSFrame.noticeType = "TOS";
|
|
TOSFrameTitle:SetText(TOS_FRAME_TITLE);
|
|
TOSFrameHeader:SetWidth(TOSFrameTitle:GetWidth());
|
|
TOSScrollFrame:Show();
|
|
TOSText:Show();
|
|
TOSFrame:Show();
|
|
elseif ( not TerminationWithoutNoticeAccepted() and SHOW_TERMINATION_WITHOUT_NOTICE_AGREEMENT ) then
|
|
if ( ShowTerminationWithoutNoticeNotice() ) then
|
|
TOSNotice:SetText(TERMINATION_WITHOUT_NOTICE_NOTICE);
|
|
TOSNotice:Show();
|
|
end
|
|
AccountLoginUI:Hide();
|
|
TOSFrame.noticeType = "TERMINATION";
|
|
TOSFrameTitle:SetText(TERMINATION_WITHOUT_NOTICE_FRAME_TITLE);
|
|
TOSFrameHeader:SetWidth(TOSFrameTitle:GetWidth());
|
|
TerminationScrollFrame:Show();
|
|
TerminationText:Show();
|
|
TOSFrame:Show();
|
|
elseif ( not ScanningAccepted() and SHOW_SCANNING_AGREEMENT ) then
|
|
if ( ShowScanningNotice() ) then
|
|
TOSNotice:SetText(SCANNING_NOTICE);
|
|
TOSNotice:Show();
|
|
end
|
|
AccountLoginUI:Hide();
|
|
TOSFrame.noticeType = "SCAN";
|
|
TOSFrameTitle:SetText(SCAN_FRAME_TITLE);
|
|
TOSFrameHeader:SetWidth(TOSFrameTitle:GetWidth());
|
|
ScanningScrollFrame:Show();
|
|
ScanningText:Show();
|
|
TOSFrame:Show();
|
|
elseif ( not ContestAccepted() and SHOW_CONTEST_AGREEMENT ) then
|
|
if ( ShowContestNotice() ) then
|
|
TOSNotice:SetText(CONTEST_NOTICE);
|
|
TOSNotice:Show();
|
|
end
|
|
AccountLoginUI:Hide();
|
|
TOSFrame.noticeType = "CONTEST";
|
|
TOSFrameTitle:SetText(CONTEST_FRAME_TITLE);
|
|
TOSFrameHeader:SetWidth(TOSFrameTitle:GetWidth());
|
|
ContestScrollFrame:Show();
|
|
ContestText:Show();
|
|
TOSFrame:Show();
|
|
elseif ( not IsScanDLLFinished() ) then
|
|
AccountLoginUI:Hide();
|
|
TOSFrame:Hide();
|
|
local dllURL = "";
|
|
if ( IsWindowsClient() ) then dllURL = SCANDLL_URL_WIN32_SCAN_DLL; end
|
|
ScanDLLStart(SCANDLL_URL_LAUNCHER_TXT, dllURL);
|
|
else
|
|
AccountLoginUI:Show();
|
|
TOSFrame:Hide();
|
|
end
|
|
end
|
|
|
|
function AccountLogin_UpdateAcceptButton(scrollFrame, isAcceptedFunc, noticeType)
|
|
local scrollbar = _G[scrollFrame:GetName().."ScrollBar"];
|
|
local min, max = scrollbar:GetMinMaxValues();
|
|
|
|
-- HACK: scrollbars do not handle max properly
|
|
-- DO NOT CHANGE - without speaking to Mikros/Barris/Thompson
|
|
if (scrollbar:GetValue() >= max - 20) then
|
|
TOSAccept:Enable();
|
|
else
|
|
if ( not isAcceptedFunc() and TOSFrame.noticeType == noticeType ) then
|
|
TOSAccept:Disable();
|
|
end
|
|
end
|
|
end
|
|
|
|
function ChangedOptionsDialog_OnShow(self)
|
|
if ( not ShowChangedOptionWarnings() ) then
|
|
self:Hide();
|
|
return;
|
|
end
|
|
|
|
local options = ChangedOptionsDialog_BuildWarningsString(GetChangedOptionWarnings());
|
|
if ( options == "" ) then
|
|
self:Hide();
|
|
return;
|
|
end
|
|
|
|
-- set text
|
|
ChangedOptionsDialogText:SetText(options);
|
|
|
|
-- resize the background to fit the text
|
|
local textHeight = ChangedOptionsDialogText:GetHeight();
|
|
local titleHeight = ChangedOptionsDialogTitle:GetHeight();
|
|
local buttonHeight = ChangedOptionsDialogOkayButton:GetHeight();
|
|
ChangedOptionsDialogBackground:SetHeight(26 + titleHeight + 16 + textHeight + 8 + buttonHeight + 16);
|
|
self:Raise();
|
|
end
|
|
|
|
function ChangedOptionsDialog_OnKeyDown(self,key)
|
|
if ( key == "PRINTSCREEN" ) then
|
|
Screenshot();
|
|
return;
|
|
end
|
|
|
|
if ( key == "ESCAPE" or key == "ENTER" ) then
|
|
ChangedOptionsDialogOkayButton:Click();
|
|
end
|
|
end
|
|
|
|
function ChangedOptionsDialog_BuildWarningsString(...)
|
|
local options = "";
|
|
for i=1, select("#", ...) do
|
|
if ( i == 1 ) then
|
|
options = select(1, ...);
|
|
else
|
|
options = options.."\n\n"..select(i, ...);
|
|
end
|
|
end
|
|
return options;
|
|
end
|
|
|
|
-- Virtual keypad functions
|
|
function VirtualKeypadFrame_OnEvent(event, ...)
|
|
if ( event == "PLAYER_ENTER_PIN" ) then
|
|
for i=1, 10 do
|
|
_G["VirtualKeypadButton"..i]:SetText(select(i,...));
|
|
end
|
|
end
|
|
-- Randomize location to prevent hacking (yeah right)
|
|
local xPadding = 5;
|
|
local yPadding = 10;
|
|
local xPos = random(xPadding, GlueParent:GetWidth()-VirtualKeypadFrame:GetWidth()-xPadding);
|
|
local yPos = random(yPadding, GlueParent:GetHeight()-VirtualKeypadFrame:GetHeight()-yPadding);
|
|
VirtualKeypadFrame:SetPoint("TOPLEFT", GlueParent, "TOPLEFT", xPos, -yPos);
|
|
|
|
VirtualKeypadFrame:Show();
|
|
VirtualKeypad_UpdateButtons();
|
|
end
|
|
|
|
function VirtualKeypadButton_OnClick(self)
|
|
local text = VirtualKeypadText:GetText();
|
|
if ( not text ) then
|
|
text = "";
|
|
end
|
|
VirtualKeypadText:SetText(text.."*");
|
|
VirtualKeypadFrame.PIN = VirtualKeypadFrame.PIN..self:GetID();
|
|
VirtualKeypad_UpdateButtons();
|
|
end
|
|
|
|
function VirtualKeypadOkayButton_OnClick()
|
|
local PIN = VirtualKeypadFrame.PIN;
|
|
local numNumbers = strlen(PIN);
|
|
local pinNumber = {};
|
|
for i=1, MAX_PIN_LENGTH do
|
|
if ( i <= numNumbers ) then
|
|
pinNumber[i] = strsub(PIN,i,i);
|
|
else
|
|
pinNumber[i] = nil;
|
|
end
|
|
end
|
|
PINEntered(pinNumber[1] , pinNumber[2], pinNumber[3], pinNumber[4], pinNumber[5], pinNumber[6], pinNumber[7], pinNumber[8], pinNumber[9], pinNumber[10]);
|
|
VirtualKeypadFrame:Hide();
|
|
end
|
|
|
|
function VirtualKeypad_UpdateButtons()
|
|
local numNumbers = strlen(VirtualKeypadFrame.PIN);
|
|
if ( numNumbers >= 4 and numNumbers <= MAX_PIN_LENGTH ) then
|
|
VirtualKeypadOkayButton:Enable();
|
|
else
|
|
VirtualKeypadOkayButton:Disable();
|
|
end
|
|
if ( numNumbers == 0 ) then
|
|
VirtualKeypadBackButton:Disable();
|
|
else
|
|
VirtualKeypadBackButton:Enable();
|
|
end
|
|
if ( numNumbers >= MAX_PIN_LENGTH ) then
|
|
for i=1, MAX_PIN_LENGTH do
|
|
_G["VirtualKeypadButton"..i]:Disable();
|
|
end
|
|
else
|
|
for i=1, MAX_PIN_LENGTH do
|
|
_G["VirtualKeypadButton"..i]:Enable();
|
|
end
|
|
end
|
|
end
|
|
|
|
TOKEN_SEED =
|
|
"idobdfillpkiimdgkclhnlibgnepalcbpccdkhloipdoeebccnoeedefgmljndai"..
|
|
"epicgamehpoifjbggbcihfanenmhkemffilglaebddmbakkhblpencadlaiepoga"..
|
|
"ecpjojaijcefflabhilmmpgjiecbhamoceponkbjiogaodhnagencenlaeljhbna"..
|
|
"ciglpffdnfgaaidccjjgbgiihhnbbjcbanhfdjadljkhmfknfnmpjblnelbfnnjf"..
|
|
"dpakjehajomgjahhljnmnhnpadfkbopppiicnkkkhblkbibgajfmemhhimpjgcoe"..
|
|
"mbkpilkleedkmpnckkcdbhnoanhpjeneinehgknalgglcbdcjdcppbjhgkahamgk"..
|
|
"gijkofghdhopbkjjghmndfdpiadcdigefikbgccfhgkkbmkollbhlkbdobhaofbh"..
|
|
"adbiepfnpiibfkcpflpkjpfmmhbopkcbcblaadaoodnoodgfhjpedmpballngmoo"..
|
|
"bbmkgghdgmhdngbfpmikijmdjgddkeahhidkofihemfmolbcojpiapfkogbdenfc"..
|
|
"cmahmfhlclfkeijbndcllbnffbjbbkfgdboiffhpkfgjckliookjlonenifdbenn"..
|
|
"epeicoloceldnilhlkameoeceiobfnpeccaihhgjdgagjhmeljacpfljlhgnlhkj"..
|
|
"dbihegomcbifklmmhmbaodnaehnbkikcjkloebkhmkhejakcdklndeiinidlgdhc"..
|
|
"ddfbafimcpddekndmbcfemcpfihngpkoccjniboomialmgejaalnfogjofbfgbdk"..
|
|
"poibhankhndpgeldkkdjgbknnahfdbcjhkmaciajeadkfmjcgaipjcilhhlagjcp"..
|
|
"lnbeodabfpofdabnhckmnbjnofopfhglgiociaehalfcclkmjmobmjdbillmompm"..
|
|
"jfgppnfgfancjglolkhoejogfjljnknoeiniiiimcifhlpiefmkkmhonbnppdndl"..
|
|
"hmgpgcniinbaanciifdggklbgoanaihndbjpnannabbmfjkdjfkhimpccelcpjed"..
|
|
"kgmpmpfnbmleiejkgbbknnnhambkmomlbjbhpkegehdfacdnbdfcmfagadbcaemg"..
|
|
"ddhpjoacekfnakamgafmkodcplnhbhblcllikeglfnedlmkcoiegldlhikoncmca"..
|
|
"bloiejelafbjjgmhapobofongodoojelpnkgfjdgpfckjglfbgaipbdpmbpjlcje"..
|
|
"jcpgagffnmappkacgacmokedaicjklinmemijkojchoojjandkcdmjigjeldpepl"..
|
|
"ihpenljefeechdndbdjkcipajcajghnhjackcjnoofebnmhimajekangghkfgcjm"..
|
|
"hndedmcpmdilipgljglplhppcogaidkfaeibkedaihckjodddfblfonfnnljgcbi"..
|
|
"hmnojjolaljebgiegnmjcficnkjchoakajkdhnchbljhonghjffebdobdcahpdjp"..
|
|
"bmhpmnamkgpfjfbfgghjnabakoilmlbkhjoiegldbcdlijakkmehoemokdeafgjl"..
|
|
"khmdjmbkdckdlidapcigbomjikehjddpblijhdgooegdfeinhaiponemlnffcnif"..
|
|
"bkbnihminfmkfhbdneaaegofpacckahbgnmobgehalklcfkncogkanff";
|
|
|
|
-- TOKEN SYSTEM
|
|
function TokenEntryOkayButton_OnLoad(self)
|
|
self:RegisterEvent("PLAYER_ENTER_TOKEN");
|
|
end
|
|
|
|
function TokenEntryOkayButton_OnEvent(self, event)
|
|
if (event == "PLAYER_ENTER_TOKEN") then
|
|
if ( AccountLoginSaveAccountName:GetChecked() ) then
|
|
if ( GetUsesToken() ) then
|
|
if ( AccountLoginTokenEdit:GetText() ~= "" ) then
|
|
TokenEntered(AccountLoginTokenEdit:GetText());
|
|
return;
|
|
end
|
|
else
|
|
SetUsesToken(true);
|
|
end
|
|
end
|
|
self:Show();
|
|
end
|
|
end
|
|
|
|
function TokenEntryOkayButton_OnShow()
|
|
TokenEnterDialogBackgroundEdit:SetText("");
|
|
TokenEnterDialogBackgroundEdit:SetFocus();
|
|
end
|
|
|
|
function TokenEntryOkayButton_OnKeyDown(self, key)
|
|
if ( key == "ENTER" ) then
|
|
TokenEntry_Okay(self);
|
|
elseif ( key == "ESCAPE" ) then
|
|
TokenEntry_Cancel(self);
|
|
end
|
|
end
|
|
|
|
function TokenEntry_Okay(self)
|
|
TokenEntered(TokenEnterDialogBackgroundEdit:GetText());
|
|
TokenEnterDialog:Hide();
|
|
end
|
|
|
|
function TokenEntry_Cancel(self)
|
|
TokenEnterDialog:Hide();
|
|
CancelLogin();
|
|
end
|
|
|
|
-- WOW Account selection
|
|
function WoWAccountSelect_OnLoad(self)
|
|
self:RegisterEvent("GAME_ACCOUNTS_UPDATED");
|
|
self:RegisterEvent("OPEN_STATUS_DIALOG");
|
|
WoWAccountSelectDialogBackgroundContainerScrollFrame.offset = 0
|
|
CURRENT_SELECTED_WOW_ACCOUNT = 1;
|
|
end
|
|
|
|
function WoWAccountSelect_OnShow (self)
|
|
AccountLoginAccountEdit:SetFocus();
|
|
AccountLoginAccountEdit:ClearFocus();
|
|
CURRENT_SELECTED_WOW_ACCOUNT = 1;
|
|
WoWAccountSelect_Update();
|
|
end
|
|
|
|
function WoWAccountSelectButton_OnClick(self)
|
|
CURRENT_SELECTED_WOW_ACCOUNT = self:GetID();
|
|
WoWAccountSelect_Update();
|
|
end
|
|
|
|
function WoWAccountSelectButton_OnDoubleClick(self)
|
|
WoWAccountSelect_SelectAccount(self:GetID());
|
|
end
|
|
|
|
function WoWAccountSelect_OnEvent(self, event)
|
|
if ( event == "GAME_ACCOUNTS_UPDATED" ) then
|
|
local str, selectedIndex, selectedName = ""
|
|
for i = 1, GetNumGameAccounts() do
|
|
local name = GetGameAccountInfo(i);
|
|
if ( name == GlueDropDownMenu_GetText(AccountLoginDropDown) ) then
|
|
selectedName = name;
|
|
selectedIndex = i;
|
|
end
|
|
str = str .. name .. "|";
|
|
end
|
|
|
|
if ( str == strreplace(GetSavedAccountList(), "!", "") and selectedIndex ) then
|
|
WoWAccountSelect_SelectAccount(selectedIndex);
|
|
return;
|
|
else
|
|
self:Show();
|
|
end
|
|
else
|
|
self:Hide();
|
|
end
|
|
end
|
|
|
|
function WoWAccountSelect_SelectAccount(index)
|
|
if ( AccountLoginSaveAccountName:GetChecked() ) then
|
|
WowAccountSelect_UpdateSavedAccountNames(index);
|
|
else
|
|
SetSavedAccountList("");
|
|
end
|
|
WoWAccountSelectDialog:Hide();
|
|
SetGameAccount(index);
|
|
end
|
|
|
|
function WowAccountSelect_UpdateSavedAccountNames(selectedIndex)
|
|
local count = GetNumGameAccounts();
|
|
|
|
local str = ""
|
|
for i = 1, count do
|
|
local name = GetGameAccountInfo(i);
|
|
if ( i == selectedIndex ) then
|
|
str = str .. "!" .. name .. "|";
|
|
else
|
|
str = str .. name .. "|";
|
|
end
|
|
end
|
|
SetSavedAccountList(str);
|
|
end
|
|
|
|
ACCOUNTNAME_BUTTON_HEIGHT = 20;
|
|
|
|
function WoWAccountSelect_OnVerticalScroll (self, offset)
|
|
local scrollbar = _G[self:GetName().."ScrollBar"];
|
|
scrollbar:SetValue(offset);
|
|
WoWAccountSelectDialogBackgroundContainerScrollFrame.offset = floor((offset / ACCOUNTNAME_BUTTON_HEIGHT) + 0.5);
|
|
WoWAccountSelect_Update();
|
|
end
|
|
|
|
MAX_ACCOUNTS_DISPLAYED = 8;
|
|
function WoWAccountSelect_Update()
|
|
local count = GetNumGameAccounts();
|
|
|
|
local offset = WoWAccountSelectDialogBackgroundContainerScrollFrame.offset;
|
|
for index=1, MAX_ACCOUNTS_DISPLAYED do
|
|
local button = _G["WoWAccountSelectDialogBackgroundContainerButton" .. index];
|
|
local name, regionID = GetGameAccountInfo(index + offset);
|
|
button:SetButtonState("NORMAL");
|
|
button.BG_Highlight:Hide();
|
|
if ( name ) then
|
|
button:SetID(index + offset);
|
|
button:SetText(name);
|
|
button.regionID = regionID;
|
|
button:Show();
|
|
if ( index == CURRENT_SELECTED_WOW_ACCOUNT) then
|
|
button.BG_Highlight:Show();
|
|
end
|
|
else
|
|
button:Hide();
|
|
end
|
|
end
|
|
|
|
GlueScrollFrame_Update(WoWAccountSelectDialogBackgroundContainerScrollFrame, count, MAX_ACCOUNTS_DISPLAYED, ACCOUNTNAME_BUTTON_HEIGHT);
|
|
end
|
|
|
|
function WoWAccountSelect_AccountButton_OnClick(self, button)
|
|
CURRENT_SELECTED_WOW_ACCOUNT = self:GetID();
|
|
WoWAccountSelect_Accept();
|
|
end
|
|
|
|
function WoWAccountSelect_OnKeyDown(self, key)
|
|
if ( key == "ESCAPE" ) then
|
|
WoWAccountSelect_OnCancel(self);
|
|
elseif ( key == "UP" ) then
|
|
CURRENT_SELECTED_WOW_ACCOUNT = max(1, CURRENT_SELECTED_WOW_ACCOUNT - 1);
|
|
WoWAccountSelect_Update()
|
|
elseif ( key == "DOWN" ) then
|
|
CURRENT_SELECTED_WOW_ACCOUNT = min(GetNumGameAccounts(), CURRENT_SELECTED_WOW_ACCOUNT + 1);
|
|
WoWAccountSelect_Update()
|
|
elseif ( key == "ENTER" ) then
|
|
WoWAccountSelect_SelectAccount(CURRENT_SELECTED_WOW_ACCOUNT);
|
|
elseif ( key == "PRINTSCREEN" ) then
|
|
Screenshot();
|
|
end
|
|
end
|
|
|
|
function WoWAccountSelect_OnCancel (self)
|
|
self:Hide();
|
|
GlueDialog:Hide();
|
|
CancelLogin();
|
|
end
|
|
|
|
function WoWAccountSelect_Accept()
|
|
WoWAccountSelect_SelectAccount(CURRENT_SELECTED_WOW_ACCOUNT);
|
|
end
|
|
|
|
function AccountLoginDropDown_OnClick(self)
|
|
GlueDropDownMenu_SetSelectedValue(AccountLoginDropDown, self.value);
|
|
end
|
|
|
|
function AccountLoginDropDown_Initialize()
|
|
local selectedValue = GlueDropDownMenu_GetSelectedValue(AccountLoginDropDown);
|
|
local info;
|
|
|
|
for i = 1, #AccountList do
|
|
AccountList[i].checked = (AccountList[i].text == selectedValue);
|
|
GlueDropDownMenu_AddButton(AccountList[i]);
|
|
end
|
|
end
|
|
|
|
AccountList = {};
|
|
function AccountLogin_SetupAccountListDDL()
|
|
if ( GetSavedAccountName() ~= "" and GetSavedAccountList() ~= "" ) then
|
|
AccountLoginPasswordEdit:SetPoint("BOTTOM", 0, 255);
|
|
AccountLoginLoginButton:SetPoint("BOTTOM", 0, 150);
|
|
AccountLoginDropDown:Show();
|
|
else
|
|
AccountLoginPasswordEdit:SetPoint("BOTTOM", 0, 275);
|
|
AccountLoginLoginButton:SetPoint("BOTTOM", 0, 170);
|
|
AccountLoginDropDown:Hide();
|
|
return;
|
|
end
|
|
|
|
AccountList = {};
|
|
local i = 1;
|
|
for str in string.gmatch(GetSavedAccountList(), "([%w!]+)|?") do
|
|
local selected = false;
|
|
if ( strsub(str, 1, 1) == "!" ) then
|
|
selected = true;
|
|
str = strsub(str, 2, #str);
|
|
GlueDropDownMenu_SetSelectedName(AccountLoginDropDown, str);
|
|
GlueDropDownMenu_SetText(str, AccountLoginDropDown);
|
|
end
|
|
AccountList[i] = { ["text"] = str, ["value"] = str, ["selected"] = selected, func = AccountLoginDropDown_OnClick };
|
|
i = i + 1;
|
|
end
|
|
end
|
|
|
|
function CinematicsFrame_OnLoad(self)
|
|
local numMovies = GetClientExpansionLevel();
|
|
CinematicsFrame.numMovies = numMovies;
|
|
if ( numMovies < 2 ) then
|
|
return;
|
|
end
|
|
|
|
for i = 1, numMovies do
|
|
_G["CinematicsButton"..i]:Show();
|
|
end
|
|
CinematicsBackground:SetHeight(numMovies * 40 + 70);
|
|
end
|
|
|
|
function CinematicsFrame_OnKeyDown(key)
|
|
if ( key == "PRINTSCREEN" ) then
|
|
Screenshot();
|
|
else
|
|
PlaySound("igMainMenuOptionCheckBoxOff");
|
|
CinematicsFrame:Hide();
|
|
end
|
|
end
|
|
|
|
function Cinematics_PlayMovie(self)
|
|
CinematicsFrame:Hide();
|
|
PlaySound("gsTitleOptionOK");
|
|
MovieFrame.version = self:GetID();
|
|
SetGlueScreen("movie");
|
|
end |