Files
SLikeNet/Samples/Lobby2ClientGFx3.0/Resources/Classes/Screens/RegisterAccountScreen3.as
2025-11-24 14:19:51 +05:30

374 lines
14 KiB
ActionScript

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
{
}
}