import flash.external.*; import gfx.controls.TextInput; import gfx.controls.Button; import gfx.controls.CheckBox; import gfx.data.dataProvider; import gfx.controls.DropdownMenu; import Screens.ProfileScreen; import Screens.RegisterAccountScreen; import Screens.RegisterAccountScreen2; import mx.utils.Delegate; //Login Infomation class Screens.RegisterAccountScreen3 extends Screen { private static var mInstance:RegisterAccountScreen3; private var password:TextInput; private var passwordConfirm:TextInput; private var passwordRecoveryQuestion:DropdownMenu; private var passwordRecoveryAnswer:TextInput; private var ageInDays:TextInput; private var handle:TextInput; private var mcCheckUsername:MovieClip; private var mcCheckmark:MovieClip; private var tfRegistrationStatus:TextField; private var validateHandleButton:Button; private var registerAccountButton:Button; private var updateAccountButton:Button; private var cancelButton:Button; private var SecretQuestionList:Array = [ "Your city of birth?", "Your mother's middle name?", "Your first job title?", "Your favorite college restaurant?" ]; public function RegisterAccountScreen3() { mInstance = this; ConsoleWindow.Trace("Constructing RegisterAccountScreen3"); mScreenId = ScreenID.REGISTER_ACCOUNT_LOGIN; mScreenTabId = ScreenTab.ID_REGISTRATION; } public static function get Instance():RegisterAccountScreen3 { return mInstance; } public function VOnFinishedLoading():Void { passwordRecoveryQuestion.dataProvider = SecretQuestionList; mcCheckUsername.onPress = Delegate.create( this, CheckUsername ); //Add click event for buttons validateHandleButton.addEventListener("click", this, "f2c_ValidateHandle"); cancelButton.addEventListener("click", this, "Back"); registerAccountButton.addEventListener("click", this, "f2c_RegisterAccount"); updateAccountButton.addEventListener("click", this, "f2c_UpdateAccount"); //Add callbacks for C++ ExternalInterface.addCallback("c2f_ValidateHandleResult", this, c2f_ValidateHandleResult); ExternalInterface.addCallback("c2f_RegisterAccountResult", this, c2f_RegisterAccountResult); ExternalInterface.addCallback("c2f_UpdateAccountResult", this, c2f_UpdateAccountResult); super.VOnFinishedLoading(); } public function OnShow():Void { if ( LobbyInterface.Instance.IsLoggedIn() ) { gotoAndStop("Update"); PopulateFromAccountInfo(); registerAccountButton._visible = false; updateAccountButton._visible = true; } else { gotoAndStop("New"); registerAccountButton._visible = true; updateAccountButton._visible = false; } mcCheckmark.gotoAndStop("Hide"); tfRegistrationStatus._visible = false; } public function CheckUsername():Void { ConsoleWindow.Trace( "checking username: " + handle.text); f2c_ValidateHandle(); } public function Back():Void { if ( LobbyInterface.Instance.IsLoggedIn() ) { SaveToAccountInfo(); } LobbyInterface.Instance.ShowScreen( ScreenID.REGISTER_ACCOUNT_BILLING ); } public function f2c_RegisterAccount():Void { if ( password.text != passwordConfirm.text ) { LobbyInterface.Instance.CreateMessageBox( "ERROR: Bad Confirm Password field." ); } else { tfRegistrationStatus._visible = false; var registrationScreen1 = LobbyInterface.Instance.GetScreen( ScreenID.REGISTER_ACCOUNT_PERSONAL ); var registrationScreen2 = LobbyInterface.Instance.GetScreen( ScreenID.REGISTER_ACCOUNT_BILLING ); // Do not change the order the parameters are passed in as ExternalInterface.call("f2c_RegisterAccount", [ registrationScreen1.GetFirstName(), registrationScreen1.GetMiddleInitial(), registrationScreen1.GetLastName(), registrationScreen1.GetSelectedRace(), registrationScreen1.GetIsMale(), registrationScreen1.GetStreetAddress(), registrationScreen1.GetStreetAddress2(), registrationScreen1.GetCity(), registrationScreen1.GetSelectedState(), "United States",//countryList[homeCountry.selectedIndex] registrationScreen1.GetZipCode(), registrationScreen2.GetStreetAddress1(), registrationScreen2.GetStreetAddress2(), registrationScreen2.GetCity(), registrationScreen2.GetSelectedState(), "United States",// countryList[billingCountry.selectedIndex], registrationScreen2.GetZipCode(), registrationScreen1.GetEmail(), password.text, GetSelectedSecretQuestion(), passwordRecoveryAnswer.text, "", "", String(registrationScreen1.GetAgeInDays()), handle.text, "about me....", "activities...", "interests...", "fav games...", "fav movies...", "fav books...", "fav quotes..." ]); } /* ExternalInterface.call("f2c_RegisterAccount", [ "first name", "m", "lastname", registrationScreen1.GetSelectedRace(), registrationScreen1.GetIsMale(), registrationScreen1.GetStreetAddress(), registrationScreen2.GetStreetAddress(), registrationScreen1.GetCity(), registrationScreen1.GetSelectedState(), "Unknown Country",//countryList[homeCountry.selectedIndex] registrationScreen1.GetZipCode(), registrationScreen2.GetStreetAddress1(), registrationScreen2.GetStreetAddress2(), registrationScreen2.GetCity(), registrationScreen2.GetSelectedState(), "Unknown Country",// countryList[billingCountry.selectedIndex], registrationScreen2.GetZipCode(), registrationScreen1.GetEmail(), password.text, GetSelectedSecretQuestion(), passwordRecoveryAnswer.text, "", "", "Age in days?", handle.text ]);*/ } public function f2c_UpdateAccount():Void { if ( password.text != passwordConfirm.text ) { LobbyInterface.Instance.CreateMessageBox( "ERROR: Bad Confirm Password field." ); } else { tfRegistrationStatus._visible = false; var registrationScreen1 = LobbyInterface.Instance.GetScreen( ScreenID.REGISTER_ACCOUNT_PERSONAL ); var registrationScreen2 = LobbyInterface.Instance.GetScreen( ScreenID.REGISTER_ACCOUNT_BILLING ); /* ConsoleWindow.Trace("update account : "); ConsoleWindow.Trace("first name = " + registrationScreen1.GetFirstName()); ConsoleWindow.Trace("GetMiddleInitial name = " + registrationScreen1.GetMiddleInitial()); ConsoleWindow.Trace("GetLastName = " + registrationScreen1.GetLastName()); ConsoleWindow.Trace("GetSelectedRace = " + registrationScreen1.GetSelectedRace()); ConsoleWindow.Trace("GetIsMale = " + registrationScreen1.GetIsMale()); ConsoleWindow.Trace("GetStreetAddress = " + registrationScreen1.GetStreetAddress()); ConsoleWindow.Trace("GetStreetAddress2 = " + registrationScreen1.GetStreetAddress2()); ConsoleWindow.Trace("GetCity = " + registrationScreen1.GetCity()); ConsoleWindow.Trace("GetSelectedState = " + registrationScreen1.GetSelectedState()); ConsoleWindow.Trace("United States = "); ConsoleWindow.Trace("GetZipCode = " + registrationScreen1.GetZipCode()); ConsoleWindow.Trace("billing GetStreetAddress1 = " + registrationScreen2.GetStreetAddress1()); ConsoleWindow.Trace("billing GetStreetAddress2 = " + registrationScreen2.GetStreetAddress2()); ConsoleWindow.Trace("billing GetCity = " + registrationScreen2.GetCity()); ConsoleWindow.Trace("billing GetSelectedState = " + registrationScreen2.GetSelectedState()); ConsoleWindow.Trace("United States "); ConsoleWindow.Trace("billing GetZipCode = " + registrationScreen2.GetZipCode()); ConsoleWindow.Trace("GetEmail = " + registrationScreen1.GetEmail()); ConsoleWindow.Trace("password.text = " + password.text); ConsoleWindow.Trace("GetSelectedSecretQuestion = " + GetSelectedSecretQuestion()); ConsoleWindow.Trace("passwordRecoveryAnswer.text = " + passwordRecoveryAnswer.text); */ // Do not change the order the parameters are passed in as ExternalInterface.call("f2c_UpdateAccount", [ registrationScreen1.GetFirstName(), registrationScreen1.GetMiddleInitial(), registrationScreen1.GetLastName(), registrationScreen1.GetSelectedRace(), registrationScreen1.GetIsMale(), registrationScreen1.GetStreetAddress(), registrationScreen1.GetStreetAddress2(), registrationScreen1.GetCity(), registrationScreen1.GetSelectedState(), "United States",//countryList[homeCountry.selectedIndex] registrationScreen1.GetZipCode(), registrationScreen2.GetStreetAddress1(), registrationScreen2.GetStreetAddress2(), registrationScreen2.GetCity(), registrationScreen2.GetSelectedState(), "United States",// countryList[billingCountry.selectedIndex], registrationScreen2.GetZipCode(), registrationScreen1.GetEmail(), password.text, GetSelectedSecretQuestion(), passwordRecoveryAnswer.text, "", "", String(registrationScreen1.GetAgeInDays()), ProfileScreen.Instance.GetAboutMe(), ProfileScreen.Instance.GetActivities(), ProfileScreen.Instance.GetInterests(), ProfileScreen.Instance.GetFavoriteGames(), ProfileScreen.Instance.GetFavoriteMovies(), ProfileScreen.Instance.GetFavoriteBooks(), ProfileScreen.Instance.GetFavoriteQuotes() ]); // AccountInfo.Instance.GetAccountInfoFromServer(); //LobbyInterface.Instance.ShowScreen( ScreenID.PROFILE ); } } public function GetSelectedSecretQuestion():String { return passwordRecoveryQuestion.dataProvider[passwordRecoveryQuestion.selectedIndex]; } public function f2c_ValidateHandle():Void { mcCheckmark.gotoAndStop("Hide"); tfRegistrationStatus._visible = false; ExternalInterface.call("f2c_ValidateHandle", handle.text); } public function c2f_ValidateHandleResult(resultIdentifier:String):Void { //tfRegistrationStatus._visible = true; switch (resultIdentifier) { case "SUCCESS": // Handle is ok ConsoleWindow.Trace("Handle is OK"); mcCheckmark.gotoAndPlay("Show"); tfRegistrationStatus._visible = false; break; case "PROFANITY_FILTER_CHECK_FAILED": // Handle has profanity //ConsoleWindow.Trace("Handle has profanity"); //tfRegistrationStatus.text = "Handle has profanity"; break; case "Client_ValidateHandle_HANDLE_ALREADY_IN_USE": // Handle is already in use //ConsoleWindow.Trace("Handle is already in use"); //tfRegistrationStatus.text = "Handle is already in use"; break; case "HANDLE_IS_EMPTY": //ConsoleWindow.Trace("Handle is empty"); //tfRegistrationStatus.text = "Username field is empty."; break; default: ConsoleWindow.Trace("Unknown handle result: " + resultIdentifier); break; } if ( resultIdentifier != "SUCCESS" ) { LobbyInterface.Instance.CreateMessageBox( resultIdentifier ); } } public function c2f_RegisterAccountResult(resultIdentifier:String, username:String, password:String):Void { switch (resultIdentifier) { case "Client_RegisterAccount_INVALID_COUNTRY": //tfRegistrationStatus.text = "INVALID COUNTRY"; break; case "Client_RegisterAccount_INVALID_STATE": //tfRegistrationStatus.text = "INVALID STATE"; break; case "Client_RegisterAccount_INVALID_RACE": //tfRegistrationStatus.text = "INVALID RACE"; break; case "Client_RegisterAccount_REQUIRED_AGE_NOT_MET": // User is not old enough to register an account with the game being registered //tfRegistrationStatus.text = "USER IS NOT OLD ENOUGH TO REGISTER."; break; case "PROFANITY_FILTER_CHECK_FAILED": // Username has profanity //tfRegistrationStatus.text = "USERNAME HAS PROFANITY."; break; case "Client_RegisterAccount_HANDLE_ALREADY_IN_USE": //tfRegistrationStatus.text = "HANDLE ALREADY IN USE."; break; case "Client_RegisterAccount_REQUIRES_CD_KEY": // Required that you entered a CD key, but you didn't //tfRegistrationStatus.text = "REQUIRES THAT YOU ENTER A CD KEY."; break; case "Client_RegisterAccount_CD_KEY_NOT_USABLE": //tfRegistrationStatus.text = "BAD CD KEY."; break; case "Client_RegisterAccount_CD_KEY_STOLEN": // tfRegistrationStatus.text = "CD KEY IS STOLEN."; break; case "Client_RegisterAccount_CD_KEY_ALREADY_USED": // tfRegistrationStatus.text = "CD KEY IS ALREADY IN USED."; break; case "DATABASE_CONSTRAINT_FAILURE": // Database messed up, user should try again //tfRegistrationStatus.text = "DATABASE FAILURE, PLEASE TRY AGAIN."; break; case "PASSWORD_IS_TOO_SHORT": //tfRegistrationStatus.text = "PASSWORD ID TOO SHORT"; break; case "EMAIL_ADDRESS_IS_INVALID": //tfRegistrationStatus.text = "EMAIL ADDRESS IS INVALID."; break; case "SUCCESS": // Account created // Show a dialog telling the user about this // Go to ConnectedToServer, fill in fields there //_root.gotoAndPlay("ConnectedToServer"); LobbyInterface.Instance.ShowScreen( ScreenID.LOGIN ); break; default: //ConsoleWindow.Trace( "UNKNOWN ERROR: " + resultIdentifier ); break; } //tfRegistrationStatus._visible = true; if ( resultIdentifier != "SUCCESS" ) { LobbyInterface.Instance.CreateMessageBox( resultIdentifier ); } } private function c2f_UpdateAccountResult(resultIdentifier:String):Void { ConsoleWindow.Trace("c2f_UpdateAccountResult: " + resultIdentifier) switch( resultIdentifier ) { case "SUCCESS": LobbyInterface.Instance.ShowScreen( ScreenID.PROFILE ); break; default: // tfRegistrationStatus.text = resultIdentifier; break; } //tfRegistrationStatus._visible = true; if ( resultIdentifier != "SUCCESS" ) { LobbyInterface.Instance.CreateMessageBox( resultIdentifier ); } } private function PopulateFromAccountInfo():Void { ConsoleWindow.Trace("received account info... password.text = " + password.text); handle.text = AccountInfo.Instance.GetUserName(); password.text = AccountInfo.Instance.GetPassword(); passwordConfirm.text = AccountInfo.Instance.GetPassword(); passwordRecoveryQuestion.selectedIndex = GetIndexFromElement( AccountInfo.Instance.GetPasswordRecoveryQuestion(), SecretQuestionList ); passwordRecoveryAnswer.text = AccountInfo.Instance.GetPasswordRecoveryAnswer(); } //temporary save, data will get wiped if user exits edit account private function SaveToAccountInfo():Void { } }