This commit is contained in:
2025-11-24 14:19:51 +05:30
commit f5c1412b28
6734 changed files with 1527575 additions and 0 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 71 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 19 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

View File

@ -0,0 +1,275 @@
import flash.filters.GradientGlowFilter;
import flash.external.*;
import Screens.ProfileScreen;
import Screens.RegisterAccountScreen;
class AccountInfo
{
private var mFirstName:String;
private var mMiddleName:String;
private var mLastName:String;
private var mHomeAddress1:String;
private var mHomeAddress2:String;
private var mHomeCity:String;
private var mHomeState:String;
private var mHomeZipCode:String;
private var mBillingAddress1:String;
private var mBillingAddress2:String;
private var mBillingCity:String;
private var mBillingState:String;
private var mBillingZipCode:String;
private var mEmailAddress:String;
private var mPassword:String;
private var mPasswordRecoveryQuestion:String;
private var mPasswordRecoveryAnswer:String;
//private var caption1:TextInput;
//private var caption2:TextInput;
//private var ageInDays:TextInput;
private var mUserName:String;
private var mRace:String;
private var mHomeCountry:String;
private var mBillingCountry:String;
private var mIsMale:Boolean;
private var mAgeInDays:Number;
private var mBirthYear:Number;
private var mBirthMonth:Number;
private var mBirthDate:Number;
private var mAboutMe:String;
private var mActivities:String;
private var mInterests:String;
private var mFavoriteGames:String;
private var mFavoriteMovies:String;
private var mFavoriteBooks:String;
private var mFavoriteQuotes:String;
private static var mInstance:AccountInfo;
public function AccountInfo()
{
mInstance = this;
}
public static function get Instance():AccountInfo
{
return mInstance;
}
public function GetAccountInfoFromServer():Void
{
ConsoleWindow.Trace("AccountInfo.GetAccountInfoFromServer");
// Do not change the order the parameters are passed in as
ExternalInterface.call("f2c_GetAccountDetails");
}
public function ServerSetAccountInfo( resultIdentifier:String, firstNameParam:String, middleNameParam:String, lastNameParam:String, raceParam:String,
sex_maleParam:Boolean, homeAddress1Param:String, homeAddress2Param:String, homeCityParam:String, homeStateParam:String,
homeCountryParam:String, homeZipCodeParam:String, billingAddress1Param:String, billingAddress2Param:String,
billingCityParam:String, billingStateParam:String, billingCountryParam:String, billingZipCodeParam:String,
emailAddressParam:String, passwordParam:String, passwordRecoveryQuestionParam:String, passwordRecoveryAnswerParam:String,
caption1Param:String, caption2Param:String, ageInDaysParam:Number, aboutMe:String, activities:String , interests:String,
favGames:String , favMovies:String, favBooks:String, favQuotes:String ):Void
{
ConsoleWindow.Trace( "AccountInfo.ServerSetAccountInfo()... " + resultIdentifier );
switch (resultIdentifier)
{
case "SUCCESS":
{
mFirstName = firstNameParam;
mMiddleName = middleNameParam;
mLastName = lastNameParam;
mRace = raceParam;
mIsMale = sex_maleParam;
mHomeAddress1 = homeAddress1Param;
mHomeAddress2 = homeAddress2Param;
mHomeCity = homeCityParam;
mHomeState = homeStateParam;
mHomeCountry = homeCountryParam;
mHomeZipCode = homeZipCodeParam;
mBillingAddress1 = billingAddress1Param;
mBillingAddress2 = billingAddress2Param;
mBillingCity = billingCityParam;
mBillingState = billingStateParam;
mBillingCountry = billingCountryParam;
mBillingZipCode = billingZipCodeParam;
mEmailAddress = emailAddressParam;
mPassword = passwordParam;
mPasswordRecoveryQuestion = passwordRecoveryQuestionParam;
mPasswordRecoveryAnswer = passwordRecoveryAnswerParam;
//caption1.text = caption1Param;
//caption2.text = caption2Param;
mAgeInDays = ageInDaysParam;
var object:Object = { };
ConvertAgeDaysToBirthdate( mAgeInDays, object );
mBirthYear = object.year;
mBirthMonth = object.month;
mBirthDate = object.date;
mUserName = LobbyInterface.Instance.GetUsername();
mAboutMe = aboutMe;
mActivities = activities;
mInterests = interests;
mFavoriteGames = favGames;
mFavoriteBooks = favBooks;
mFavoriteMovies = favMovies;
mFavoriteQuotes = favQuotes;
/* ConsoleWindow.Trace("Home state = " + mHomeState);
ConsoleWindow.Trace("Race = " + mRace);
ConsoleWindow.Trace("mBirthYear = " + mBirthYear);
ConsoleWindow.Trace("mBirthMonth = " + mBirthMonth);
ConsoleWindow.Trace("mBirthDate = " + mBirthDate);
ConsoleWindow.Trace("mAgeInDays = " + mAgeInDays);
ConsoleWindow.Trace("aboutMe = " + aboutMe);
ConsoleWindow.Trace("activities = " + activities);
ConsoleWindow.Trace("interests = " + interests);
ConsoleWindow.Trace("favGames = " + favGames);
ConsoleWindow.Trace("favMovies = " + favMovies);
ConsoleWindow.Trace("favBooks = " + favBooks);
ConsoleWindow.Trace("favQuotes = " + favQuotes);*/
ProfileScreen.Instance.OnReceivedPlayerInfo();
break;
}
case "DATABASE_CONSTRAINT_FAILURE":
//ConsoleWindow.Trace( "Can't find the logged in user in the database for some reason" );
LobbyInterface.Instance.CreateMessageBox(resultIdentifier);
break;
}
}
public function GetFirstName():String { return mFirstName; }
public function GetMiddleName():String { return mMiddleName; }
public function GetLastName():String { return mLastName; }
public function GetRace():String { return mRace; }
public function GetIsMale():Boolean { return mIsMale; }
public function GetHomeAddress1():String { return mHomeAddress1; }
public function GetHomeAddress2():String { return mHomeAddress2; }
public function GetHomeCity():String { return mHomeCity; }
public function GetHomeState():String { return mHomeState; }
public function GetHomeCountry():String { return mHomeCountry; }
public function GetHomeZipCode():String { return mHomeZipCode; }
public function GetBillingAddress1():String { return mBillingAddress1; }
public function GetBillingAddress2():String { return mBillingAddress2; }
public function GetBillingCity():String { return mBillingCity; }
public function GetBillingState():String { return mBillingState; }
public function GetBillingCountry():String { return mBillingCountry; }
public function GetBillingZipCode():String { return mBillingZipCode; }
public function GetEmailAddress():String { return mEmailAddress; }
public function GetPassword():String { return mPassword; }
public function GetPasswordRecoveryQuestion():String { return mPasswordRecoveryQuestion; }
public function GetPasswordRecoveryAnswer():String { return mPasswordRecoveryAnswer; }
public function GetAgeInDays():Number { return mAgeInDays; }
public function GetBirthYear():Number { return mBirthYear; }
public function GetBirthMonth():Number { return mBirthMonth; }
public function GetBirthDate():Number { return mBirthDate; }
public function GetUserName():String { return mUserName; }
public function GetAboutMe():String { return mAboutMe; }
public function GetActivities():String { return mActivities; }
public function GetInterests():String { return mInterests; }
public function GetFavoriteGames():String { return mFavoriteGames; }
public function GetFavoriteBooks():String { return mFavoriteBooks; }
public function GetFavoriteMovies():String { return mFavoriteMovies; }
public function GetFavoriteQuotes():String { return mFavoriteQuotes; }
public function SetFirstName( firstName:String ):Void { mFirstName = firstName; }
public function SetMiddleName( middleName:String ):Void { mMiddleName = middleName; }
public function SetLastName( lastName:String ):Void { mLastName = lastName; }
public function SetRace( race:String ):Void { mRace = race; }
public function SetIsMale( isMale:Boolean ):Void { mIsMale = isMale; }
public function SetHomeAddress1( homeAddress1:String):Void { mHomeAddress1 = homeAddress1; }
public function SetHomeAddress2( homeAddress2:String):Void { mHomeAddress2 = homeAddress2; }
public function SetHomeCity( homeCity:String):Void { mHomeCity = homeCity; }
public function SetHomeState( homeState:String):Void { mHomeState = homeState; }
public function SetHomeCountry( homeCountry:String):Void { mHomeCountry = homeCountry; }
public function SetHomeZipCode( homeZipeCode:String):Void { mHomeZipCode = homeZipeCode; }
public function SetBillingAddress1( billingAddress1:String):Void { mBillingAddress1 = billingAddress1; }
public function SetBillingAddress2( billingAddress2:String):Void { mBillingAddress2 = billingAddress2; }
public function SetBillingCity( billingCity:String):Void { mBillingCity = billingCity; }
public function SetBillingState( billingState:String):Void { mBillingState = billingState; }
public function SetBillingCountry( billingCountry:String):Void { mBillingCountry = billingCountry; }
public function SetBillingZipCode( billingZipCode:String):Void { mBillingZipCode = billingZipCode; }
public function SetEmailAddress( billingEmail:String):Void { mEmailAddress = billingEmail; }
public function SetPassword( password:String):Void { mPassword = password; }
public function SetPasswordRecoveryQuestion( passwordQuestion:String):Void { mPasswordRecoveryQuestion = passwordQuestion; }
public function SetPasswordRecoveryAnswer( passwordAnswer:String):Void { mPasswordRecoveryAnswer = passwordAnswer; }
public function SetAgeInDays( ageInDays:Number ):Void { mAgeInDays = ageInDays; }
public function SetBirthYear( birthYear:Number ):Void { mBirthYear = birthYear; }
public function SetBirthMonth( birthMonth:Number ):Void { mBirthMonth = birthMonth; }
public function SetBirthDate( birthDate:Number ):Void { mBirthDate = birthDate; }
public function SetUserName( username:String ):Void { mUserName = username; }
public function SetAboutMe( aboutMe:String ):Void { mAboutMe = aboutMe; }
public function SetActivities( activities:String ):Void { mActivities = activities; }
public function SetInterests( interests:String ):Void { mInterests = interests; }
public function SetFavoriteGames( games:String ):Void { mFavoriteGames = games; }
public function SetFavoriteBooks( books:String ):Void { mFavoriteBooks = books; }
public function SetFavoriteMovies( movies:String ):Void { mFavoriteMovies = movies; }
public function SetFavoriteQuotes( quotes:String ):Void { mFavoriteQuotes = quotes; }
public static function ConvertBirthdateToDays( month:Number, date:Number, year:Number ):Number
{
var ageInDays:Number = 0;
month -= 1; //jan = 0, feb = 1....
var curDate:Date = new Date();
var curMonth:Number = curDate.getMonth();
ageInDays = (curDate.getFullYear() - year) * 365;
if( month > curMonth )
{
ageInDays -= 365;
}
for ( var i:Number = 0; i < 12; i++ )
{
if ( month != curMonth )
{
ageInDays += RegisterAccountScreen.MonthDays[month];
month = ( month + 1 ) % 12;
}
else
{
ageInDays += curDate.getDate() - date;
break;
}
}
return ageInDays;
}
public static function ConvertAgeDaysToBirthdate( ageInDays:Number, object:Object ):Void
{
//ConsoleWindow.Trace("ConsoleWindow.Trace(), ageInDays = " + ageInDays);
var curDate:Date = new Date();
var yearFromNow:Number = Math.floor(ageInDays / 365);
ageInDays = ageInDays % 365;
var month:Number = curDate.getMonth();
var date:Number = curDate.getDate();
for ( var i:Number = 0; i < 12; i++ )
{
trace("Age in days = " + ageInDays);
if( ageInDays >= date )
{
month--;
if( month < 0 )
{
month = 11;
yearFromNow++;
}
ageInDays -= RegisterAccountScreen.MonthDays[month];
}
else
{
date = date - ageInDays;
break;
}
}
object.year = curDate.getFullYear() - yearFromNow;
object.month = month + 1;
object.date = date;
//ConsoleWindow.Trace("year = " + year + ", month = " + month + ", date = " + date);
}
}

View File

@ -0,0 +1,38 @@
import gfx.controls.Button;
class ConsoleWindow extends MovieClip
{
static private var mSingleInstance:ConsoleWindow;
private var mcButton:Button;
private var tfWindow:TextField;
public function ConsoleWindow()
{
mSingleInstance = this;
onLoad = OnFinishedLoading;
}
public function OnFinishedLoading():Void
{
mcButton.addEventListener( "click", this, "ToggleWindow" );
tfWindow._visible = false;
}
public function ToggleWindow():Void
{
tfWindow._visible = !tfWindow._visible;
}
public static function Trace( text:String ):Void
{
mSingleInstance.tfWindow.text += "\n" + text;
trace(text);
}
public static function get Instance():ConsoleWindow
{
return mSingleInstance;
}
}

View File

@ -0,0 +1,177 @@
import flash.external.*;
class LobbyInterface extends MovieClip
{
private static var mSingletonInstance:LobbyInterface;
private var mScreens:Array;
private var mCurScreenID:Number;
private var mLastScreenID:Number;
private var mScreensRegistered:Number;
private var mIsLoggedIn:Boolean;
private var mScreenTabManager:ScreenTabManager;
private var mcNavigationPanel:NavigationMenu;
private var mFlashMode:Boolean = false;
//====================================================
//User data
private var mProfileImageIndex:Number;
private var mAccountInfo:AccountInfo;
public function LobbyInterface()
{
ConsoleWindow.Trace("Constructing LobbyInterface");
mSingletonInstance = this;
mScreens = new Array();
mCurScreenID = 0;
mScreensRegistered = 0;
mProfileImageIndex = 1; //TODO: get this from c++
mScreenTabManager = new ScreenTabManager();
onLoad = Initialize;
}
//All screens should be constructed by now, but not neccessarily loaded
public function Initialize():Boolean
{
ConsoleWindow.Trace("LobbyInterface.Initialize()....");
mAccountInfo = new AccountInfo();
ExternalInterface.addCallback("c2f_NotifyConnectionLost", this, c2f_NotifyConnectionLost);
ExternalInterface.addCallback("c2f_GetAccountDetailsResult", mAccountInfo, ServerSetAccountInfo);
return true;
}
public function blah():Void
{
ConsoleWindow.Trace("blah..");
}
public static function get Instance():LobbyInterface
{
return mSingletonInstance;
}
public function GetCurrentScreen():Screen
{
return mScreens[mCurScreenID];
}
public function GetScreen( _screenID:Number ):Screen
{
return mScreens[_screenID];
}
//TODO: get this from c++
//player might get to a page that has a profile image before seeing this screen so we have to make sure this is loaded from c++ first
public function GetProfileImageIndex():Number
{
return mProfileImageIndex;
}
public function GetUsername():String
{
if ( mIsLoggedIn )
{
return mScreens[ScreenID.LOGIN].GetUsername();
}
return null;
}
public function SetLoginState( _state:Boolean ):Void
{
if ( mIsLoggedIn != _state )
{
mIsLoggedIn = _state;
if ( mIsLoggedIn )
{
mcNavigationPanel.OnPlayerLoggedIn();
}
else
{
mcNavigationPanel.OnPlayerLoggedOut();
}
}
}
public function IsLoggedIn():Boolean
{
return mIsLoggedIn;
}
public function RegisterScreen( _screenID:Number, _screen ):Void
{
mScreens[_screenID] = _screen;
mScreensRegistered++;
//trace("Registering screen: " + this[ ScreenID.GetScreenName(_screenID) ] );
ConsoleWindow.Trace("Registering screen: " + mScreens[_screenID] );
//All screens are done loading
if ( mScreensRegistered == ScreenID.TOTAL_SCREENS )
{
ConsoleWindow.Trace( "Finished registering all " + mScreensRegistered + " screens!" );
ShowScreen( ScreenID.CONNECTION );
//GetCurrentScreen()["f2c_Connect"]();
}
}
public function ShowScreen( _id:Number ):Void
{
//mScreens[mCurScreenID].Hide();
mScreenTabManager.ShowScreen( _id );
mLastScreenID = mCurScreenID;
mCurScreenID = _id;
//mScreens[mCurScreenID].Show();
}
public function GetLastScreenId():Number
{
return mLastScreenID;
}
public function ShowLastScreen():Void
{
ShowScreen( mLastScreenID );
}
public function CreateMessageBox( message:String, callback:Function ):Void
{
var messageBox = attachMovie("MessageBox", "MessageBox" + getNextHighestDepth(), getNextHighestDepth() );
messageBox.SetMessage( message, callback );
}
public function IsInFlashMode():Boolean { return mFlashMode; }
//===============================================================================================================================
//Functions called by C++
public function c2f_NotifyConnectionLost(resultIdentifier:String):Void
{
switch (resultIdentifier)
{
case "LCR_CLOSED_BY_USER":
// Programmer closed the connection to the server intentionally
break;
case "LCR_DISCONNECTION_NOTIFICATION":
// Server disconnected us intentionally
break;
case "LCR_CONNECTION_LOST":
// Lost connection to the server
break;
}
// If the user is in any state where you have to be connected (anything other than Disconnected and ConnectingToServer)
// And you get this callback, then show an error dialog, immediately leave whatever screen they are on once they click ok,
// and go to the disconnected state
//gotoAndStop("Disconnected");
ShowScreen(ScreenID.CONNECTION);
}
}

View File

@ -0,0 +1,178 @@
import flash.external.*;
import gfx.controls.TextInput;
import gfx.controls.Button;
import mx.utils.Delegate;
import gfx.controls.TextArea;
import gfx.controls.CheckBox;
class Mail extends MovieClip
{
public static var cMode1:Number = 1;
public static var cMode2:Number = 2;
//only in mail1 mode
private var tfTo:TextField; //this is the one that says "TO:" we need access because we change it to "FROM:" for receiving mails
private var tiTo:TextInput; //this is the actual field we display who the mail is address to
//only in mail2 mode
private var mcProfileImage:MovieClip;
private var tfUsername:TextField;
//shared
private var tfTitle:TextField;
private var tiSubject:TextInput;
private var taMessage:TextArea;
private var btnButton1:Button;
private var btnButton2:Button;
private var btnButton3:Button;
private var callbackBtn1:Function;
private var callbackBtn2:Function;
private var callbackBtn3:Function;
private var mCheckBox:CheckBox;
public function Mail()
{
mCheckBox._visible = false;
}
public function SetMode( mode:Number ):Void
{
switch( mode )
{
case cMode1:
gotoAndStop("Mail1");
break;
case cMode2:
gotoAndStop("Mail2");
break;
default:
break;
}
}
public function onLoad():Void
{
btnButton1.addEventListener("click", this, "OnClickedButton1");
btnButton2.addEventListener("click", this, "OnClickedButton2");
btnButton3.addEventListener("click", this, "OnClickedButton3");
btnButton1.visible = false;
btnButton2.visible = false;
btnButton3.visible = false;
}
public function HideButton( index:Number ):Void
{
this["btnButton" + index]._visible = false;
}
public function Clear():Void
{
tfTitle.text = "";
tiTo.text = "";
tiTo.disabled = false;
tiSubject.disabled = false;
tiSubject.text = "";
taMessage.text = "";
taMessage.disabled = false;
mCheckBox._visible = false;
btnButton1.visible = false;
btnButton2.visible = false;
btnButton3.visible = false;
}
public function SetTitle( _title:String ):Void
{
tfTitle.text = _title;
}
public function SetButton( _index:Number, _label:String, _callback:Function ):Void
{
this["btnButton" + _index].label = _label;
this["callbackBtn" + _index] = _callback;
this["btnButton" + _index].visible = true;
}
public function SetToDisplayText( text:String ):Void
{
tfTo.text = text;
}
public function SetToField( _username:String ):Void
{
tiTo.text = _username;
}
public function DisableToField():Void
{
tiTo.disabled = true;
}
public function SetUsername( _username:String ):Void
{
tfUsername.text = _username;
}
public function GetToField():String
{
return tiTo.text;
}
public function GetSubjectField():String
{
return tiSubject.text;
}
public function SetSubjectField( subject:String ):Void
{
tiSubject.text = subject;
}
public function DisableSubjectField():Void
{
tiSubject.disabled = true;
}
public function GetMsgField():String
{
return taMessage.text;
}
public function SetMsgField( msg:String ):Void
{
taMessage.text = msg;
}
public function DisableMsgField():Void
{
taMessage.disabled = true;
}
public function OnClickedButton1():Void
{
callbackBtn1.call();
}
public function OnClickedButton2():Void
{
callbackBtn2.call();
}
public function OnClickedButton3():Void
{
callbackBtn3.call();
}
public function SetCheckBox( text:String ):Void
{
mCheckBox.label = text;
mCheckBox._visible = true;
}
public function IsCheckBoxOn():Boolean
{
return mCheckBox.selected;
}
}

View File

@ -0,0 +1,37 @@
import gfx.controls.Button;
import mx.utils.Delegate;
import flash.external.*;
class MessageBox extends MovieClip
{
private var tfMessage:TextField;
private var btnOK:Button;
private var mCallback:Function;
public function MessageBox()
{
_visible = false;
}
public function onLoad():Void
{
btnOK.addEventListener("click", this, "OnClickOK");
}
public function SetMessage( message:String, callback:Function ):Void
{
tfMessage.text = message;
mCallback = callback;
_visible = true;
}
public function OnClickOK():Void
{
if ( mCallback )
{
mCallback.call();
}
this.removeMovieClip();
}
}

View File

@ -0,0 +1,154 @@

import gfx.controls.Button;
import mx.transitions.easing.None;
import mx.transitions.Tween;
class NavigationMenu extends MovieClip
{
private var mcLogIn:Button;
private var mcLogOut:Button;
private var mcProfile:Button;
private var mcFriends:Button;
private var mcEmail:Button;
private var mcClan:Button;
private var mcExit:Button;
private var mButtonAnimCt:Number;
private var mButtons:Array; //store buttons in array for sequencial animation
public function NavigationMenu()
{
mButtons = new Array;
}
public function onLoad()
{
mcLogIn.addEventListener("click", this, "OnClickedLogInButton");
mcLogOut.addEventListener("click", this, "OnClickedLogoutButton");
mcProfile.addEventListener("click", this, "OnClickedProfileButton");
mcFriends.addEventListener("click", this, "OnClickedFriendsButton");
mcEmail.addEventListener("click", this, "OnClickedEmailButton");
mcClan.addEventListener("click", this, "OnClickedClanButton");
mcExit.addEventListener("click", this, "OnClickedExitButton");
mButtons.push( mcLogOut );
mButtons.push( mcProfile );
mButtons.push( mcFriends );
mButtons.push( mcEmail );
mButtons.push( mcClan );
mButtons.push( mcExit );
OnPlayerLoggedOut();
}
public function OnClickedLogInButton():Void
{
}
public function OnClickedLogoutButton():Void
{
if ( LobbyInterface.Instance.IsLoggedIn() )
{
LobbyInterface.Instance.GetScreen(ScreenID.LOGGED_IN)["f2c_Logoff"]();
}
}
public function OnClickedProfileButton():Void
{
if ( LobbyInterface.Instance.IsLoggedIn() )
{
LobbyInterface.Instance.ShowScreen( ScreenID.PROFILE );
}
}
public function OnClickedFriendsButton():Void
{
if ( LobbyInterface.Instance.IsLoggedIn() )
{
LobbyInterface.Instance.ShowScreen( ScreenID.FRIENDS );
}
}
public function OnClickedEmailButton():Void
{
if ( LobbyInterface.Instance.IsLoggedIn() )
{
LobbyInterface.Instance.ShowScreen( ScreenID.EMAIL );
}
}
public function OnClickedClanButton():Void
{
if ( LobbyInterface.Instance.IsLoggedIn() )
{
LobbyInterface.Instance.ShowScreen( ScreenID.CLAN_ROOT );
}
}
public function OnClickedExitButton():Void
{
if ( LobbyInterface.Instance.IsLoggedIn() )
{
LobbyInterface.Instance.GetScreen(ScreenID.LOGGED_IN)["f2c_Logoff"]();
}
}
private var mLastTime:Number;
public function OnPlayerLoggedIn():Void
{
mButtonAnimCt = 0;
onEnterFrame = PlayIntroAnimation;
mLastTime = getTimer();
/*
mcLogIn.visible = false;
mcLogOut.visible = true;
mcProfile.visible = true;
mcFriends.visible = true;
mcClan.visible = true;
mcEmail.visible = true;
mcFriends.visible = true;
mcExit.visible = true; */
PlayIntroAnimation();
}
public function PlayIntroAnimation():Void
{
var now:Number = getTimer();
var delta:Number = now - mLastTime;
if ( delta > 100 )
{
mLastTime = now;
//mButtons[mButtonAnimCt]._visible = true;
new Tween( mButtons[mButtonAnimCt], "_alpha", None.easeNone, 0, 100, .5, true );
// new Tween( this, "_alpha", None.easeNone, 0, 100, .5, true );
mButtonAnimCt++;
if ( mButtonAnimCt >= mButtons.length )
{
onEnterFrame = null;
}
}
}
public function OnPlayerLoggedOut():Void
{
/*mcLogOut._alpha = 0;
mcProfile._alpha = 0;
mcFriends._alpha = 0;
mcClan._alpha = 0;
mcEmail._alpha = 0;
mcFriends._alpha = 0;
mcExit._alpha = 0;*/
for ( var i:Number = 0; i < mButtons.length; i++ )
{
new Tween( mButtons[i], "_alpha", None.easeNone, 100, 0, .4, true );
}
/* mcLogIn._alpha = true;
mcLogOut.visible = false;
mcProfile.visible = false;
mcFriends.visible = false;
mcClan.visible = false;
mcEmail.visible = false;
mcFriends.visible = false;
mcExit.visible = false;*/
}
}

View File

@ -0,0 +1,105 @@

import mx.utils.Delegate;
class PageNavigator extends MovieClip
{
[Inspectable(name = "Page Total", type = "Number", defaultValue = 1)]
private var mTotalPages:Number;
private var mcLeftArrow:MovieClip;
private var mcRightArrow:MovieClip;
private var tfPage:TextField;
private var mCurPage:Number;
private var mNextPageCallback:Function;
private var mPreviousPageCallback:Function;
private var mIsEnabled:Boolean;
public function PageNavigator()
{
mCurPage = 1;
mTotalPages = 1;
mIsEnabled = true;
}
public function onLoad():Void
{
OnPageChanged();
mcRightArrow.onPress = Delegate.create( this, NextPage );
mcLeftArrow.onPress = Delegate.create( this, PreviousPage );
}
public function AddCallbacks( _onNextPage:Function, _onPreviousPage:Function )
{
mNextPageCallback = _onNextPage;
mPreviousPageCallback = _onPreviousPage;
ConsoleWindow.Trace( "Adding calls: " + _onNextPage + ", " + _onPreviousPage );
}
public function Disable():Void
{
mIsEnabled = false;
}
public function Enable():Void
{
mIsEnabled = true;
}
public function SetTotalPages( _total ):Void
{
mTotalPages = _total;
OnPageChanged();
_visible = ( mTotalPages > 0 );
}
public function GoToPage( _page:Number ):Void
{
if ( _page > 0 && _page <= mTotalPages )
{
mCurPage = 1;
OnPageChanged();
}
}
private function NextPage():Void
{
if ( mIsEnabled && mCurPage + 1 <= mTotalPages )
{
mCurPage++;
OnPageChanged();
mNextPageCallback.call();
}
}
public function PreviousPage():Void
{
if ( mIsEnabled && mCurPage - 1 > 0 )
{
mCurPage--;
OnPageChanged();
mPreviousPageCallback.call();
}
}
private function OnPageChanged():Void
{
tfPage.text = String(mCurPage) + " OF " + String(mTotalPages);
mcLeftArrow._visible = true;
mcRightArrow._visible = true;
if ( mCurPage == mTotalPages )
{
mcRightArrow._visible = false;
}
if ( mCurPage == 1 )
{
mcLeftArrow._visible = false;
}
}
}

View File

@ -0,0 +1,120 @@
/*
* Screen - base screen class. Many screen classes will derive from this
* Note: V before the function names stand for virtual, these functions are intended to be overwritten by children if needed
*
*/
import mx.transitions.easing.None;
import mx.transitions.Tween;
class Screen extends MovieClip
{
private var mScreenId:Number;
private var mScreenTabId:Number;
private var mIsLoaded:Boolean;
public function Screen()
{
_alpha = 0;
_x = -1000;
ConsoleWindow.Trace("Constructing Screen");
mScreenId = -1;
mIsLoaded = false;
onLoad = VOnFinishedLoading;
}
public function VInitialize():Boolean
{
return true;
}
//Child class should still call this even if it needs to define its own VOnFinishedLoading func
public function VOnFinishedLoading():Void
{
mIsLoaded = true;
LobbyInterface.Instance.RegisterScreen( mScreenId, this );
}
public function IsLoaded():Boolean
{
return mIsLoaded;
}
public function Show( bDoTween:Boolean, tweenFrom:Number, tweenTo:Number ):Void
{
ConsoleWindow.Trace("Showing " + this);
if ( bDoTween )
{
new Tween( this, "_x", None.easeNone, tweenFrom, 0, .5, true );
new Tween( this, "_alpha", None.easeNone, 0, 100, .5, true );
}
else
{
_x = 0;
_alpha = 100;
}
OnShow();
}
public function OnShow():Void
{
}
public function Hide( bDoTween:Boolean, tweenTo:Number ):Void
{
ConsoleWindow.Trace("Hiding " + this);
if ( bDoTween )
{
new Tween( this, "_x", None.easeNone, this._x, tweenTo, .5, true );
new Tween( this, "_alpha", None.easeNone, 100, 0, .5, true );
}
else
{
this._x = -1000;// tweenTo;
this._alpha = 0;
}
OnHide();
}
public function OnHide():Void
{
}
public function GetScreenTabId():Number
{
return mScreenTabId;
}
public function GetScreenId():Number
{
return mScreenId;
}
public function CleanUpMoveClipList( list:Array ):Void
{
var length:Number = list.length;
for ( var i:Number = 0; i < length; i++ )
{
var mc:MovieClip = list[i];
//ConsoleWindow.Trace("Removing mc: " + mc);
mc.removeMovieClip();
}
}
public static function GetIndexFromElement( element, array ):Number
{
var length:Number = array.length;
for ( var i:Number = 0; i < length; i++ )
{
if ( element == array[i] )
{
return i;
}
}
ConsoleWindow.Trace("Can't find element: " + element);
return 0;
}
}

View File

@ -0,0 +1,101 @@

class ScreenID
{
public static var INVALID_ID:Number = -1;
public static var BLOCK_LIST:Number = 0;
public static var CLAN_ROOT:Number = 1;
public static var CLAN_EMAIL:Number = 2;
public static var CLAN_GENERAL:Number = 3;
public static var CLAN_QUERY:Number = 4;
public static var CONNECTING_TO_SERVER:Number = 5;
public static var CONNECTION:Number = 6;
public static var EMAIL:Number = 7;
public static var ENTER_CD_KEY:Number = 8;
public static var FRIENDS:Number = 9;
public static var POSSIBLE_FRIENDS:Number = 10;
public static var LOGGING_IN:Number = 11;
public static var LOGIN:Number = 12;
public static var LOGGED_IN:Number = 13;
public static var RECOVER_PASSWORD:Number = 14;
public static var REGISTER_ACCOUNT_PERSONAL:Number = 15;
public static var REGISTER_ACCOUNT_BILLING:Number = 16;
public static var REGISTER_ACCOUNT_LOGIN:Number = 17;
public static var UPDATE_ACCOUNT:Number = 18;
public static var PROFILE:Number = 19;
public static var CHANGE_PHOTO:Number = 20;
public static var CLAN_CREATE:Number = 21;
public static var CLAN_INVITED_REQUESTED:Number = 22;
public static var CLAN_MY_CLANS:Number = 23;
public static var CLAN_BLOCK_LIST:Number = 24;
public static var TOTAL_SCREENS:Number = 25;
//Used as screen instance names
/*public static function GetScreenName( id:Number ):String
{
switch( id )
{
case BLOCK_LIST:
return "mcBlockListScreen";
case CLAN_ROOT:
return "mcClanRootScreen";
case CLAN_EMAIL:
return "mcClanEmailScreen";
case CLAN_GENERAL:
return "mcClanGeneralScreen";
case CLAN_QUERY:
return "mcClanQueryScreen";
case CONNECTING_TO_SERVER:
return "mcConnectingToServerScreen";
case CONNECTION:
return "mcConnectionScreen";
case EMAIL:
return "mcEmailScreen";
case ENTER_CD_KEY:
return "mcEnterCDKeyScreen";
case FRIENDS:
return "mcFriendScreen";
case LOGGING_IN:
return "mcLoggingInScreen";
case LOGIN:
return "mcLoginScreen";
case LOGGED_IN:
return "mcLoggedInScreen";
case RECOVER_PASSWORD:
return "mcRecoverPasswordScreen";
case REGISTER_ACCOUNT_PERSONAL:
return "mcRegisterAccountScreen";
case REGISTER_ACCOUNT_BILLING:
return "mcRegisterAccountScreen2";
case REGISTER_ACCOUNT_LOGIN:
return "mcRegisterAccountScreen3";
case UPDATE_ACCOUNT:
return "mcUpdateAccountScreen";
case PROFILE:
return "mcProfileScreen";
default:
ConsoleWindow("ERROR!! INVALID SCREEN ID: " + id);
return null;
}
}*/
}

View File

@ -0,0 +1,81 @@
/**
* October 20, 2009
* @author Dezhu Chen
*/
class ScreenTab extends MovieClip
{
// Public Properties that are set from the FLA file
[Inspectable(type="Number")]
public var tabID:Number;
[Inspectable(type="Boolean")]
public var isHiddenByDefault:Boolean;
private var mcLabel:MovieClip;
private var mStartingPosX:Number;
public static var cExtendedPosX:Number = -100;
//DO NOT Change these, they're being referenced in the FLA
public static var ID_INVALID:Number = 0;
public static var ID_LOGIN:Number = 0;
public static var ID_PROFILE:Number = 1;
public static var ID_FRIENDS:Number = 2;
public static var ID_EMAIL:Number = 3;
public static var ID_CLANS:Number = 4;
public static var ID_CONNECTION:Number = 5;
public static var ID_CD_KEY:Number = 6;
public static var ID_REGISTRATION:Number = 7;
public function ScreenTab()
{
_visible = !isHiddenByDefault;
mStartingPosX = _x;
mcLabel.tfTabName.text = GetTabName( tabID );
var timerformat:TextFormat = new TextFormat();
timerformat.letterSpacing = 4;
mcLabel.tfTabName.setTextFormat(timerformat);
//ConsoleWindow.Trace("mcLabel.tfTabName = " + mcLabel.tfTabName);
//ConsoleWindow.Trace("letter spacing = " + mcLabel.tfTabName.getTextFormat().letterSpacing);
ScreenTabManager.Instance.AddScreenTab( this );
}
public function GetStartingPos():Number
{
return mStartingPosX;
}
public function GetTabName( _tabID:Number ):String
{
switch( _tabID )
{
case ID_LOGIN:
return "LOGIN";
case ID_PROFILE:
return "PROFILE";
case ID_FRIENDS:
return "FRIENDS";
case ID_EMAIL:
return "EMAIL";
case ID_CLANS:
return "CLAN";
case ID_CONNECTION:
return "CONNECTION";
case ID_CD_KEY:
return "CD KEY";
case ID_REGISTRATION:
return "REGISTRATION";
}
}
}

View File

@ -0,0 +1,56 @@
/**
* October 21, 2009
* @author Dezhu Chen
*/
import mx.transitions.easing.None;
import mx.transitions.Tween;
class ScreenTabManager
{
private static var mSingletonInstance:ScreenTabManager;
private var mScreenTabs:Array;
public function ScreenTabManager()
{
mSingletonInstance = this;
mScreenTabs = new Array();
}
public static function get Instance():ScreenTabManager
{
return mSingletonInstance;
}
public function AddScreenTab( tab:ScreenTab ):Void
{
mScreenTabs[tab.tabID] = tab;
}
public function ShowScreen( _newScreenId:Number ):Void
{
var curScreen:Screen = LobbyInterface.Instance.GetCurrentScreen();
var newScreen:Screen = LobbyInterface.Instance.GetScreen( _newScreenId );
var curTab:ScreenTab = mScreenTabs[curScreen.GetScreenTabId()];
var newTab:ScreenTab = mScreenTabs[newScreen.GetScreenTabId()];
if ( curTab != newTab )
{
newTab._visible = true;
ConsoleWindow.Trace("Hiding " + curTab.tabID + ", showing " + newTab.tabID);
new Tween( curTab, "_x", None.easeNone, curTab._x, curTab.GetStartingPos(), .5, true );
curScreen.Hide( true, curTab.GetStartingPos() );
new Tween( newTab, "_x", None.easeNone, newTab._x, ScreenTab.cExtendedPosX, .5, true );
newScreen.Show( true, newTab._x, ScreenTab.cExtendedPosX );
}
else if ( curScreen.GetScreenId != _newScreenId )
{
curScreen.Hide( false, curTab.GetStartingPos() );
newScreen.Show( false );
}
}
}

View File

@ -0,0 +1,272 @@
import mx.utils.Delegate;
import mx.transitions.easing.None;
import mx.transitions.Tween;
// This is an abstract class, and should be extended.
// It only has common functions that can be shared among screens with page navigation functionality
// The extended class still has to setup the list array properly and calling these functions at the right places
class ScreenWithPageNavigator extends Screen
{
private var mcPageNavigator:PageNavigator;
private var mCurrentPage:Number;
private var mMovieClipList:Array;
private var mEntriesPerPage:Number = 10;
private var mFirstEntryX:Number;
private var mFirstEntryY:Number;
private var mDeltaY:Number;
public function ScreenWithPageNavigator()
{
mCurrentPage = 0;
mScreenId = ScreenID.INVALID_ID;
mScreenTabId = ScreenTab.ID_INVALID;
mMovieClipList = new Array();
//extended class should reset these to different values in the constructor
mFirstEntryX = 0;
mFirstEntryY = 0;
mDeltaY = 0;
}
public function OnShow():Void
{
mcPageNavigator._x = 611;
mcPageNavigator.AddCallbacks( Delegate.create( this, NextPage ), Delegate.create( this, PreviousPage ) );
}
public function OnMoveClipListUpdated():Void
{
mcPageNavigator.SetTotalPages( Math.ceil( mMovieClipList.length / mEntriesPerPage ) );
}
public function GoToPage( _page ):Void
{
mcPageNavigator.GoToPage( _page );
}
public function NextPage():Void
{
ShowPage( mCurrentPage + 1);
}
public function PreviousPage():Void
{
ShowPage( mCurrentPage - 1 );
}
public function ShowPage( _page:Number ):Void
{
if ( ( _page - 1 ) * mEntriesPerPage <= mMovieClipList.length && _page != mCurrentPage )
{
if ( mCurrentPage > 0 )
{
HidePage( mCurrentPage );
mCurrentPage = _page;
}
else
{
ConsoleWindow.Trace("Showing page " + _page);
mCurrentPage = _page;
TogglePageVisibility( mCurrentPage, true );
}
}
}
public function HidePage( _page:Number ):Void
{
if ( ( _page-1 ) * mEntriesPerPage <= mMovieClipList.length )
{
ConsoleWindow.Trace("Hiding page " + _page);
TogglePageVisibility( _page, false );
}
}
private function RefreshPage():Void
{
//TogglePageVisibility( mCurrentPage, true );
InstantShowPage();
}
private function InstantShowPage():Void
{
var startIndex:Number = mCurrentPage * mEntriesPerPage - ( mEntriesPerPage );
var endIndex:Number = startIndex + mEntriesPerPage;
for ( var i:Number = 0; i < mEntriesPerPage; i++ )
{
var mcEntry:MovieClip = mMovieClipList[startIndex+i];
if ( !mcEntry )
{
break;
}
mcEntry._visible = true;
mcEntry._x = mFirstEntryX;
mcEntry._y = mFirstEntryY + (i) * (mcEntry._height + mDeltaY);
OnShowMovieClipEntry( mcEntry );
}
}
private var mLastTime:Number;
private var mCurEntryIndex:Number;
private var mFirstEntryIndex:Number;
private var mEntryVisibleState:Boolean;
private function TogglePageVisibility( _page:Number, _visibleState:Boolean ):Void
{
mcPageNavigator.Disable();
ConsoleWindow.Trace(this + ".TogglePageVisibility()..." + _visibleState);
mLastTime = getTimer();
mFirstEntryIndex = _page * mEntriesPerPage - ( mEntriesPerPage );
mEntryVisibleState = _visibleState;
mCurEntryIndex = 0;
onEnterFrame = OnTick;
}
private function OnTick():Void
{
var now:Number = getTimer();
var delta:Number = now - mLastTime;
//ConsoleWindow.Trace("OnTick, delta = " + delta);
//for ( var i:Number = 0; i < mEntriesPerPage; i++ )
if( delta > 100 )
{
ToggleEntryVisibility();
mLastTime = now;
}
}
private function ToggleEntryVisibility():Void
{
//ConsoleWindow.Trace(this + ".ToggleEntryVisibility(), mEntryVisibleState = " + mEntryVisibleState);
if( mCurEntryIndex < mEntriesPerPage )
{
var mcEntry:MovieClip = mMovieClipList[mFirstEntryIndex+mCurEntryIndex];
if ( !mcEntry )
{
ConsoleWindow.Trace("Entry not found.");
RemoveOnTick();
return;
}
mcEntry._visible = true;
if ( mEntryVisibleState )
{
//ConsoleWindow.Trace("Showing entry: " + mcEntry);
mcEntry._x = mFirstEntryX;// + 500;
mcEntry._y = mFirstEntryY + (mCurEntryIndex) * (mcEntry._height + mDeltaY);
//new Tween( mcEntry, "_x", None.easeNone, mFirstEntryX-200, mFirstEntryX, .3, true );
new Tween( mcEntry, "_alpha", None.easeNone, 0, 100, .3, true );
OnShowMovieClipEntry( mcEntry );
}
else
{
var tween_handler:Tween = new Tween( mcEntry, "_alpha", None.easeNone, 100, 0, .3, true );
//ConsoleWindow.Trace("Hiding entry: " + mcEntry);
//ConsoleWindow.Trace("Hiding tween_handler: " + tween_handler);
tween_handler.onMotionFinished = function()
{
this.obj._visible = false;
}
//OnHideMovieClipEntry( mcEntry );
}
mCurEntryIndex++;
return;
}
RemoveOnTick();
}
public function RemoveOnTick():Void
{
onEnterFrame = null;
if ( !mEntryVisibleState )
{
ConsoleWindow.Trace("Finished hiding previous page, showing current page: " + mCurrentPage);
TogglePageVisibility( mCurrentPage, true );
}
else
{
mcPageNavigator.Enable();
}
}
//override this in extended class to show/hide specific movieclips within mcEntry
private function OnShowMovieClipEntry( mcEntry:MovieClip, index:Number ):Void
{
mcEntry.mcLine._visible = ( index != 0 );
}
private function OnHideMovieClipEntry( mcEntry:MovieClip ):Void
{
}
private function OnFinishedHidingEntry( mcEntry:MovieClip ):Void
{
}
private function RemoveEntryFromList( _entry:MovieClip, _list:Array, bInstantRefresh:Boolean ):Void
{
var index:Number = -1;
var length = mMovieClipList.length;
for ( var i:Number = 0; i < length; i++ )
{
var entry:MovieClip = mMovieClipList[i];
//ConsoleWindow.Trace("entry = " + entry);
if ( entry == _entry )
{
index = i;
break;
}
}
if ( index >= 0 )
{
mMovieClipList.splice( index, 1 );
_entry.removeMovieClip();
if ( bInstantRefresh )
{
InstantShowPage();
}
else
{
mFirstEntryIndex = mCurrentPage * mEntriesPerPage - ( mEntriesPerPage );
mCurEntryIndex = index - mFirstEntryIndex;
ConsoleWindow.Trace("Entry removed. mFirstEntryIndex = " + mFirstEntryIndex + " mCurEntryIndex = " + mCurEntryIndex);
for ( var n:Number = mCurEntryIndex; n < mEntriesPerPage; n++ )
{
var mcEntry:MovieClip = mMovieClipList[mFirstEntryIndex + n];
if ( n == mEntriesPerPage - 1 )
{
mcEntry._visible = true;
mcEntry._x = mFirstEntryX;
mcEntry._y = mFirstEntryY + (n+1) * (mcEntry._height + mDeltaY);
new Tween( mcEntry, "_alpha", None.easeNone, 0, 100, .3, true );
}
var targetY:Number = mFirstEntryY + (n) * (mcEntry._height + mDeltaY);
new Tween( mcEntry, "_y", None.easeNone, mcEntry._y, targetY, .3, true );
}
}
OnMoveClipListUpdated();
}
else
{
ConsoleWindow.Trace("WARNING! RemoveEntryFromList(), can't find the right entry to remove! entry = " + _entry);
}
mFirstEntryIndex = mCurrentPage * mEntriesPerPage - ( mEntriesPerPage );
//User deleted all the entries on the current page, manually show previous page
if ( mFirstEntryIndex >= mMovieClipList.length && mCurrentPage > 1 )
{
mcPageNavigator.PreviousPage();
}
//ConsoleWindow.Trace( " mFirstEntryIndex = " + mFirstEntryIndex + " mMovieClipList.length = " + mMovieClipList.length);
}
}

View File

@ -0,0 +1,225 @@
import flash.external.*;
import gfx.controls.TextInput;
import gfx.controls.Button;
import gfx.controls.ScrollBar;
import mx.utils.Delegate;
class Screens.BlockListScreen extends ScreenWithPageNavigator
{
private var ignoreUsernameEditBox:TextInput;
private var startIgnoreButton:Button;
private var btnBack:Button;
private var tfUsername:TextField;
private var mcProfileImage:MovieClip;
private var mcScrollBar:ScrollBar
private var mIsWaitingForResponseFromServer:Boolean; //true when user hit ignore or stop ignore to wait for server to verify the action
private var mUsernameOnHold:String;
public function BlockListScreen()
{
ConsoleWindow.Trace("Constructing BlockListScreen");
mScreenId = ScreenID.BLOCK_LIST;
mScreenTabId = ScreenTab.ID_PROFILE;
mIsWaitingForResponseFromServer = false;
mEntriesPerPage = 10;
mFirstEntryX = 440;
mFirstEntryY = -245;
mDeltaY = 10;
}
public function VOnFinishedLoading():Void
{
//Add click event for buttons
startIgnoreButton.addEventListener("click", this, "f2c_StartIgnore");
//stopIgnoreButton.addEventListener("click", this, "f2c_StopIgnore");
btnBack.addEventListener("click", this, "Back");
mcScrollBar.addEventListener("scroll", this, "OnScroll");
//Add callbacks for C++
ExternalInterface.addCallback("c2f_StartIgnore", this, c2f_StartIgnore);
ExternalInterface.addCallback("c2f_StopIgnore", this, c2f_StopIgnore);
ExternalInterface.addCallback("c2f_GetIgnoreListResult", this, c2f_GetIgnoreListResult);
super.VOnFinishedLoading();
}
public function OnShow():Void
{
super.OnShow();
if ( !mcProfileImage.mcImageContainer.mcImage )
{
var imageIndex:Number = LobbyInterface.Instance.GetProfileImageIndex();
mcProfileImage.attachMovie( "ProfileImage" + imageIndex, "mcImage", mcProfileImage.getNextHighestDepth() );
}
tfUsername.text = LobbyInterface.Instance.GetUsername();
//ConsoleWindow.Trace("blocked user list length = " + mMovieClipList.length);
if ( mMovieClipList.length > 0 )
{
CleanUpMoveClipList( mMovieClipList );
}
mMovieClipList = new Array();
mCurrentPage = 0;
GoToPage( 1 );
f2c_GetIgnoreList();
mIsWaitingForResponseFromServer = false;
}
public function OnScroll( position:Number ):Void
{
ConsoleWindow.Trace("scrolling pos: " + position);
}
public function Back():Void
{
LobbyInterface.Instance.ShowScreen( ScreenID.PROFILE );
}
public function f2c_StartIgnore():Void
{
if ( !mIsWaitingForResponseFromServer )
{
mIsWaitingForResponseFromServer = true;
ExternalInterface.call("f2c_StartIgnore", ignoreUsernameEditBox.text);
mUsernameOnHold = ignoreUsernameEditBox.text;
}
}
public function c2f_StartIgnore(resultIdentifier:String):Void
{
switch (resultIdentifier)
{
case "Client_StartIgnore_UNKNOWN_TARGET_HANDLE":
//ConsoleWindow.Trace("Client_StartIgnore_UNKNOWN_TARGET_HANDLE");
break;
case "Client_StartIgnore_CANNOT_PERFORM_ON_SELF":
//ConsoleWindow.Trace("Client_StartIgnore_CANNOT_PERFORM_ON_SELF");
break;
case "Client_StartIgnore_ALREADY_IGNORED":
//ConsoleWindow.Trace("Client_StartIgnore_ALREADY_IGNORED");
break;
case "SUCCESS":
ConsoleWindow.Trace("start ignore SUCCESS");
//IgnoreUser( mUsernameOnHold, 1 ); //TODO: uncomment this
break;
}
mIsWaitingForResponseFromServer = false;
//IgnoreUser( mUsernameOnHold, 1 ); //TODO: comment this out
if ( resultIdentifier != "SUCCESS" )
{
LobbyInterface.Instance.CreateMessageBox( resultIdentifier );
}
}
public function StopIgnore( blockedUserEntry:MovieClip ):Void
{
ConsoleWindow.Trace("StopIgnore: " + blockedUserEntry);
f2c_StopIgnore( blockedUserEntry.tfUsername.text );
RemoveEntryFromList( blockedUserEntry, mMovieClipList );
}
public function f2c_StopIgnore( _username:String ):Void
{
if ( !mIsWaitingForResponseFromServer )
{
ExternalInterface.call("f2c_StopIgnore", _username);
}
}
public function c2f_StopIgnore(resultIdentifier:String):Void
{
switch (resultIdentifier)
{
case "Client_StopIgnore_UNKNOWN_TARGET_HANDLE":
//ConsoleWindow.Trace("Client_StopIgnore_UNKNOWN_TARGET_HANDLE");
break;
case "Client_StopIgnore_CANNOT_PERFORM_ON_SELF":
//ConsoleWindow.Trace("Client_StopIgnore_CANNOT_PERFORM_ON_SELF");
break;
case "SUCCESS":
//ConsoleWindow.Trace("stop ignore success");
break;
}
mIsWaitingForResponseFromServer = false;
if ( resultIdentifier != "SUCCESS" )
{
LobbyInterface.Instance.CreateMessageBox( resultIdentifier );
}
}
public function f2c_GetIgnoreList():Void
{
ExternalInterface.call("f2c_GetIgnoreList");
}
public function c2f_GetIgnoreListResult():Void
{
ConsoleWindow.Trace("c2f_GetIgnoreListResult...");
for (var i:Number = 0; i < arguments.length; i++)
{
// Array of handles (string)
ConsoleWindow.Trace(arguments[i]);
}
//TODO: remove this once c++ sends down proper data
for ( var n:Number = 0; n < 25; n++ )
{
/*var userEntry:MovieClip = attachMovie("BlockListEntry", "blockedUser" + mMovieClipList.length, getNextHighestDepth() );
userEntry._visible = false;
userEntry.tfUsername.text = "testUser" + mMovieClipList.length;
mMovieClipList.push( userEntry );
var self:BlockListScreen = this;
userEntry.mcDelete.onPress = function() { self.StopIgnore( this._parent ); }*/
AddBlockListEntry( "testUser" + mMovieClipList.length );
}
OnMoveClipListUpdated();
ShowPage(1);
}
public function IgnoreUser( _username:String, _profileImageIndex:Number ):Void
{
/* var userEntry:MovieClip = attachMovie("BlockListEntry", "blockedUser" + mMovieClipList.length, getNextHighestDepth() );
userEntry._visible = false;
userEntry.tfUsername.text = _username;
mMovieClipList.push( userEntry );
var self:BlockListScreen = this;
userEntry.mcDelete.onPress = function() { self.StopIgnore( this._parent ); }*/
AddBlockListEntry( _username );
TogglePageVisibility(mCurrentPage, true );
OnMoveClipListUpdated();
}
public function AddBlockListEntry( _username:String ):Void
{
var userEntry:MovieClip = attachMovie("BlockListEntry", "blockedUser" + mMovieClipList.length, getNextHighestDepth() );
userEntry._visible = false;
userEntry.tfUsername.text = _username;
mMovieClipList.push( userEntry );
ConsoleWindow.Trace("Ignoring user: " + userEntry);
var self:BlockListScreen = this;
userEntry.mcDelete.onPress = function() { self.StopIgnore( this._parent ); }
}
private function OnShowMovieClipEntry( mcEntry:MovieClip, index:Number ):Void
{
//ConsoleWindow.Trace("BlockList... OnShowMovieClipEntry: " + mcEntry.mcDelete.onPress);
super.OnShowMovieClipEntry( mcEntry, index );
}
private function OnHideMovieClipEntry( mcEntry:MovieClip ):Void
{
//ConsoleWindow.Trace("BlockList... OnHideMovieClipEntry: " + mcEntry.mcDelete.onPress );
mcEntry.mcDelete.onPress = null;
}
}

View File

@ -0,0 +1,192 @@
import flash.external.*;
import gfx.controls.TextInput;
import gfx.controls.Button;
import mx.utils.Delegate;
class Screens.ChangePhoto extends Screen
{
private var btnBack:Button;
private var btnAcceptPhoto:Button;
private var tfUsername:TextField;
private var mcProfileImage:MovieClip;
private var mcImageSelector:MovieClip;
private var mImageList:Array;
private var mCurrentPage:Number;
private var mcPageNavigator:PageNavigator;
private var mSelectedIndex:Number;
public static var cFirstImageX:Number = 0;
public static var cFirstImageY:Number = -120;
public static var cImageDeltaX:Number = 40;
public static var cImageDeltaY:Number = 40;
public static var cImagesPerRow:Number = 5;
public static var cImagesPerPage:Number = 15;
public function ChangePhoto()
{
ConsoleWindow.Trace("Constructing ChangePhoto");
mScreenId = ScreenID.CHANGE_PHOTO;
mScreenTabId = ScreenTab.ID_PROFILE;
mImageList = new Array();
mCurrentPage = 0;
mSelectedIndex = -1;
}
public function VOnFinishedLoading():Void
{
//Add click event for buttons
btnBack.addEventListener("click", this, "Back");
btnAcceptPhoto.addEventListener("click", this, "AcceptPhoto");
super.VOnFinishedLoading();
}
public function OnShow():Void
{
mcImageSelector._visible = false;
tfUsername.text = LobbyInterface.Instance.GetUsername();
if ( !mcProfileImage.mcImageContainer.mcImage )
{
var imageIndex:Number = LobbyInterface.Instance.GetProfileImageIndex();
mcProfileImage.attachMovie( "ProfileImage" + imageIndex, "mcImage", mcProfileImage.getNextHighestDepth() );
}
mSelectedIndex = -1;
mcImageSelector._visible = false;
if ( mImageList.length == 0 )
{
AddImages();
}
else
{
ShowPage( mCurrentPage );
}
}
public function AddImages():Void
{
for ( var i:Number = 1; i <= 35; i++ )
{
var profileImage:MovieClip = attachMovie( "ProfileImage1", "ProfileImage" + i, getNextHighestDepth() );
profileImage._visible = false;
profileImage._width = mcImageSelector._width;
profileImage._height = mcImageSelector._height;
ConsoleWindow.Trace("Adding image " + + profileImage);
profileImage.tfTemp.text = mImageList.length;
mImageList.push( profileImage );
var self:ChangePhoto = this;
profileImage.onPress = function() { self.OnSelectImage( this ); }
}
mcImageSelector.swapDepths( getNextHighestDepth() );
mcPageNavigator.AddCallbacks( Delegate.create( this, NextPage ), Delegate.create( this, PreviousPage ) );
mcPageNavigator.SetTotalPages( Math.ceil( mImageList.length / cImagesPerPage ) );
ShowPage( 1 );
}
public function OnSelectImage( _profileImage:MovieClip ):Void
{
var index:Number = Number( _profileImage._name.substring( 12, _profileImage._name.length ) ) - 1;
ConsoleWindow.Trace("Selected: " + _profileImage + ", index = " + index);
if ( index != mSelectedIndex )
{
mSelectedIndex = index;
mcImageSelector._x = _profileImage._x;
mcImageSelector._y = _profileImage._y;
mcImageSelector._visible = true;
}
}
public function NextPage():Void
{
ShowPage( mCurrentPage + 1);
}
public function PreviousPage():Void
{
ShowPage( mCurrentPage - 1 );
}
public function ShowPage( _page:Number ):Void
{
if ( ( _page - 1 ) * cImagesPerPage <= mImageList.length && _page != mCurrentPage )
{
if ( mCurrentPage > 0 )
{
HidePage( mCurrentPage );
}
ConsoleWindow.Trace("Showing page " + _page);
mCurrentPage = _page;
TogglePageVisibility( mCurrentPage, true );
//if user selected an image from this new page, we show the selector again at that image
if ( mSelectedIndex >= ( _page - 1 ) * cImagesPerPage && mSelectedIndex < _page * cImagesPerPage )
{
mcImageSelector._visible = true;
}
}
}
public function HidePage( _page:Number ):Void
{
if ( ( _page-1 ) * cImagesPerPage <= mImageList.length )
{
mcImageSelector._visible = false;
ConsoleWindow.Trace("Hiding page " + _page);
TogglePageVisibility( _page, false );
}
}
private function TogglePageVisibility( _page:Number, _visibleState:Boolean ):Void
{
var startIndex:Number = _page * cImagesPerPage - ( cImagesPerPage );
var endIndex:Number = startIndex + cImagesPerPage;
for ( var i:Number = 0; i < cImagesPerPage; i++ )
{
var row:Number = Math.floor( i / cImagesPerRow ) + 1;
var col:Number = ( i % cImagesPerRow ) + 1;
var profileImage:MovieClip = mImageList[startIndex+i];
if ( !profileImage )
{
break;
}
profileImage._visible = _visibleState;
if ( _visibleState )
{
profileImage._x = cFirstImageX + (col-1) * (profileImage._width + cImageDeltaX);
profileImage._y = cFirstImageY + (row - 1) * (profileImage._height + cImageDeltaY);
//ConsoleWindow.Trace("Show profile image: " + profileImage + " at " + row + ", " + col);
}
else
{
}
//ConsoleWindow.Trace("x, y = " + profileImage._x + ", " + profileImage._y);
}
}
public function Back():Void
{
//LobbyInterface.Instance.ShowScreen( ScreenID.PROFILE );
LobbyInterface.Instance.ShowLastScreen();
}
public function AcceptPhoto():Void
{
if ( mSelectedIndex >= 0 && mSelectedIndex < mImageList.length )
{
//TODO: tell c++ user changed photo to a new index
}
}
}

View File

@ -0,0 +1,316 @@
import flash.external.*;
import gfx.controls.TextInput;
import gfx.controls.Button;
import gfx.controls.ScrollBar;
import mx.utils.Delegate;
class Screens.ClanBlockListScreen extends ScreenWithPageNavigator
{
private var ignoreUsernameEditBox:TextInput;
private var startIgnoreButton:Button;
private var btnBack:Button;
private var tfClanName:TextField;
private var mIsWaitingForResponseFromServer:Boolean; //true when user hit ignore or stop ignore to wait for server to verify the action
private var mUsernameOnHold:String;
private var mcMail:Mail;
private var mUserToUnblock:MovieClip;
private static var mInstance:ClanBlockListScreen;
public function ClanBlockListScreen()
{
ConsoleWindow.Trace("Constructing ClanBlockListScreen");
mScreenId = ScreenID.CLAN_BLOCK_LIST;
mScreenTabId = ScreenTab.ID_CLANS;
mIsWaitingForResponseFromServer = false;
mEntriesPerPage = 10;
mFirstEntryX = 440;
mFirstEntryY = -245;
mDeltaY = 10;
mInstance = this;
}
public static function get Instance():ClanBlockListScreen
{
return mInstance;
}
public function VOnFinishedLoading():Void
{
//Add click event for buttons
startIgnoreButton.addEventListener("click", this, "ShowKickAndBlockMail");
//stopIgnoreButton.addEventListener("click", this, "f2c_StopIgnore");
btnBack.addEventListener("click", this, "Back");
//Add callbacks for C++
// ExternalInterface.addCallback("c2f_StartIgnore", this, c2f_StartIgnore);
// ExternalInterface.addCallback("c2f_StopIgnore", this, c2f_StopIgnore);
// ExternalInterface.addCallback("c2f_GetIgnoreListResult", this, c2f_GetIgnoreListResult);
ExternalInterface.addCallback("c2f_Clans_KickAndBlacklistUser", this, c2f_Clans_KickAndBlacklistUser);
ExternalInterface.addCallback("c2f_Clans_UnblacklistUser", this, c2f_Clans_UnblacklistUser);
ExternalInterface.addCallback("c2f_Clans_GetBlacklist", this, c2f_Clans_GetBlacklist);
super.VOnFinishedLoading();
}
public function OnShow():Void
{
super.OnShow();
mcMail._visible = false;
//ConsoleWindow.Trace("blocked user list length = " + mMovieClipList.length);
if ( mMovieClipList.length > 0 )
{
CleanUpMoveClipList( mMovieClipList );
}
mMovieClipList = new Array();
mCurrentPage = 0;
GoToPage( 1 );
f2c_GetIgnoreList();
mIsWaitingForResponseFromServer = false;
}
public function SetClanName( name:String ):Void { tfClanName.text = name; }
public function Back():Void
{
LobbyInterface.Instance.ShowLastScreen();
}
public function ShowKickAndBlockMail():Void
{
mcMail.Clear();
mcMail.SetButton( 1, "CANCEL", Delegate.create(this, HideMail) );
mcMail.SetButton( 2, "KICK", Delegate.create(this, f2c_Clans_KickAndBlacklistUser) );
mcMail.SetTitle( "KICK AND BLOCK USER FROM CLAN" );
mcMail.SetToField( ignoreUsernameEditBox.text );
mcMail.SetSubjectField( "Kicked From " + tfClanName.text );
mcMail.SetCheckBox( "BLOCK USER" );
mcMail.swapDepths( getNextHighestDepth() );
mcMail._visible = true;
}
public function f2c_Clans_KickAndBlacklistUser():Void
{
if ( !mIsWaitingForResponseFromServer )
{
mIsWaitingForResponseFromServer = true;
//ExternalInterface.call("f2c_StartIgnore", ignoreUsernameEditBox.text);
mUsernameOnHold = ignoreUsernameEditBox.text;
ExternalInterface.call("f2c_Clans_KickAndBlacklistUser", tfClanName.text, mcMail.GetSubjectField(), mcMail.GetMsgField(), "0",
mcMail.GetToField(),
true,
mcMail.IsCheckBoxOn(),
"Unknown Reason" //The 'reason' field is sent to all clan members and is a short message or identifier. It is also stored in the database along with their username, so that if say a moderator later wanted to know why the guy was kicked, you could tell why. As it is defined by the application, this could be a text string, a phrase, a paragraph, or just some identifier.
);
}
}
public function ShowStopIgnoreMail( blockedUserEntry:MovieClip ):Void
{
if ( !mIsWaitingForResponseFromServer )
{
mIsWaitingForResponseFromServer = true;
mUserToUnblock = blockedUserEntry;
mcMail.Clear();
mcMail.SetButton( 1, "CANCEL", Delegate.create(this, HideMail) );
mcMail.SetButton( 2, "UNBLOCK", Delegate.create(this, StopIgnore) );
mcMail.SetTitle( "UNBLOCK USER FROM CLAN" );
mcMail.SetToField( blockedUserEntry.tfUsername.text );
mcMail.DisableToField();
mcMail.SetSubjectField( "Unblocked From " + tfClanName.text );
mcMail.swapDepths( getNextHighestDepth() );
mcMail._visible = true;
}
}
public function StopIgnore():Void
{
ConsoleWindow.Trace("StopIgnore: " + mUserToUnblock);
if ( mUserToUnblock )
{
//f2c_StopIgnore( blockedUserEntry.tfUsername.text );
ExternalInterface.call("f2c_Clans_UnblacklistUser", tfClanName.text, mcMail.GetSubjectField(), mcMail.GetMsgField(), "0",
mUserToUnblock.tfUsername.text);
RemoveEntryFromList( mUserToUnblock, mMovieClipList );
}
}
public function f2c_StopIgnore( _username:String ):Void
{
if ( !mIsWaitingForResponseFromServer )
{
ExternalInterface.call("f2c_StopIgnore", _username);
}
}
public function f2c_GetIgnoreList():Void
{
//ExternalInterface.call("f2c_GetIgnoreList");
ExternalInterface.call("f2c_Clans_GetBlacklist", tfClanName.text);
}
public function c2f_GetIgnoreListResult():Void
{
ConsoleWindow.Trace("c2f_GetIgnoreListResult...");
for (var i:Number = 0; i < arguments.length; i++)
{
// Array of handles (string)
ConsoleWindow.Trace(arguments[i]);
}
//TODO: remove this once c++ sends down proper data
for ( var n:Number = 0; n < 25; n++ )
{
/*var userEntry:MovieClip = attachMovie("BlockListEntry", "blockedUser" + mMovieClipList.length, getNextHighestDepth() );
userEntry._visible = false;
userEntry.tfUsername.text = "testUser" + mMovieClipList.length;
mMovieClipList.push( userEntry );
var self:BlockListScreen = this;
userEntry.mcDelete.onPress = function() { self.StopIgnore( this._parent ); }*/
AddBlockListEntry( "testUser" + mMovieClipList.length );
}
OnMoveClipListUpdated();
ShowPage(1);
}
public function IgnoreUser( _username:String, _profileImageIndex:Number ):Void
{
/* var userEntry:MovieClip = attachMovie("BlockListEntry", "blockedUser" + mMovieClipList.length, getNextHighestDepth() );
userEntry._visible = false;
userEntry.tfUsername.text = _username;
mMovieClipList.push( userEntry );
var self:BlockListScreen = this;
userEntry.mcDelete.onPress = function() { self.StopIgnore( this._parent ); }*/
AddBlockListEntry( _username );
TogglePageVisibility(mCurrentPage, true );
OnMoveClipListUpdated();
}
public function HideMail():Void
{
mcMail._visible = false;
}
public function AddBlockListEntry( _username:String ):Void
{
var userEntry:MovieClip = attachMovie("BlockListEntry", "blockedUser" + mMovieClipList.length, getNextHighestDepth() );
userEntry._visible = false;
userEntry.tfUsername.text = _username;
mMovieClipList.push( userEntry );
ConsoleWindow.Trace("Ignoring user: " + userEntry);
var self:ClanBlockListScreen = this;
userEntry.mcDelete.onPress = function() { self.ShowStopIgnoreMail( this._parent ); }
}
private function OnShowMovieClipEntry( mcEntry:MovieClip, index:Number ):Void
{
//ConsoleWindow.Trace("BlockList... OnShowMovieClipEntry: " + mcEntry.mcDelete.onPress);
super.OnShowMovieClipEntry( mcEntry, index );
}
private function OnHideMovieClipEntry( mcEntry:MovieClip ):Void
{
//ConsoleWindow.Trace("BlockList... OnHideMovieClipEntry: " + mcEntry.mcDelete.onPress );
mcEntry.mcDelete.onPress = null;
}
public function c2f_Clans_GetBlacklist(resultIdentifier:String):Void
{
ConsoleWindow.Trace("c2f_Clans_GetBlacklist(), arguments = " + arguments);
switch (resultIdentifier)
{
case "Clans_GetBlacklist_UNKNOWN_CLAN":
break;
case "DATABASE_CONSTRAINT_FAILURE":
break;
case "SUCCESS":
ConsoleWindow.Trace("c2f_Clans_GetBlacklist(), success!");
var length:Number = arguments.length;
for ( var i:Number = 1; i < length; i++ )
{
AddBlockListEntry( arguments[i] );
}
OnMoveClipListUpdated();
ShowPage(1);
break;
}
if ( resultIdentifier != "SUCCESS" )
{
LobbyInterface.Instance.CreateMessageBox( resultIdentifier );
}
}
public function c2f_Clans_KickAndBlacklistUser(resultIdentifier:String):Void
{
switch (resultIdentifier)
{
case "Clans_KickAndBlacklistUser_UNKNOWN_CLAN":
break;
case "Clans_KickAndBlacklistUser_NOT_IN_CLAN":
break;
case "Clans_KickAndBlacklistUser_MUST_BE_LEADER_OR_SUBLEADER":
break;
case "Clans_KickAndBlacklistUser_UNKNOWN_TARGET_HANDLE":
break;
case "Clans_KickAndBlacklistUser_CANNOT_PERFORM_ON_SELF":
break;
case "Clans_KickAndBlacklistUser_CANNOT_PERFORM_ON_LEADER":
break;
case "Clans_KickAndBlacklistUser_ALREADY_BLACKLISTED":
break;
case "SUCCESS":
ConsoleWindow.Trace("c2f_Clans_KickAndBlacklistUser(), success!");
HideMail();
break;
}
mIsWaitingForResponseFromServer = false;
if ( resultIdentifier != "SUCCESS" )
{
LobbyInterface.Instance.CreateMessageBox( resultIdentifier );
}
}
public function c2f_Clans_UnblacklistUser(resultIdentifier:String):Void
{
switch (resultIdentifier)
{
case "Clans_UnblacklistUser_UNKNOWN_CLAN":
break;
case "Clans_UnblacklistUser_NOT_IN_CLAN":
break;
case "Clans_UnblacklistUser_MUST_BE_LEADER_OR_SUBLEADER":
break;
case "Clans_UnblacklistUser_UNKNOWN_TARGET_HANDLE":
break;
case "Clans_UnblacklistUser_NOT_BLACKLISTED":
break;
case "SUCCESS":
ConsoleWindow.Trace("c2f_Clans_UnblacklistUser(), success");
HideMail();
break;
}
mIsWaitingForResponseFromServer = false;
if ( resultIdentifier != "SUCCESS" )
{
LobbyInterface.Instance.CreateMessageBox( resultIdentifier );
}
}
}

View File

@ -0,0 +1,376 @@
import flash.external.*;
import gfx.controls.TextInput;
import gfx.controls.Button;
import gfx.controls.CheckBox;
class Screens.ClanEmailScreen extends Screen
{
private var clanHandle_EditBox:TextInput;
private var subject_EditBox:TextInput;
private var body_EditBox:TextInput;
private var emailStatus_EditBox:TextInput;
private var clans_targetHandle_EditBox:TextInput;
private var clans_AcceptJoinRequest_requestingUserHandle_EditBox:TextInput;
private var clans_RejectJoinRequest_requestingUserHandle_EditBox:TextInput;
private var clans_KickAndBlacklistUser_targetHandle_EditBox:TextInput;
private var clans_KickAndBlacklistUser_reason_EditBox:TextInput;
private var clans_Leave_dissolveIfClanLeader_Checkbox:CheckBox;
private var clans_AcceptJoinInvitation_failIfAlreadyInClan_Checkbox:CheckBox;
private var clans_AcceptJoinRequest_failIfAlreadyInClan_Checkbox:CheckBox;
private var clans_KickAndBlacklistUser_blacklist_Checkbox:CheckBox;
private var clans_KickAndBlacklistUser_kick_Checkbox:CheckBox;
private var clans_RejectJoinInvitation_Button:Button;
private var clans_SendJoinRequest_Button:Button;
private var clans_WithdrawJoinRequest_Button:Button;
private var clans_Leave_Button:Button;
private var clans_AcceptJoinInvitation_Button:Button;
private var clans_SendJoinInvitation_Button:Button;
private var clans_WithdrawJoinInvitation_Button:Button;
private var clans_UnblacklistUser_Button:Button;
private var clans_AcceptJoinRequest_Button:Button;
private var clans_RejectJoinRequest_Button:Button;
private var clans_KickAndBlacklistUser_Button:Button;
public function ClanEmailScreen()
{
ConsoleWindow.Trace("Constructing ClanEmailScreen");
mScreenId = ScreenID.CLAN_EMAIL
mScreenTabId = ScreenTab.ID_CLANS;;
}
public function VOnFinishedLoading():Void
{
//Add click event for buttons
// clans_RejectJoinInvitation_Button.addEventListener("click", this, "f2c_Clans_RejectJoinInvitation");
// clans_SendJoinInvitation_Button.addEventListener("click", this, "f2c_Clans_SendJoinInvitation");
clans_WithdrawJoinInvitation_Button.addEventListener("click", this, "f2c_Clans_WithdrawJoinInvitation");
// clans_Leave_Button.addEventListener("click", this, "f2c_Clans_Leave");
// clans_AcceptJoinInvitation_Button.addEventListener("click", this, "f2c_Clans_AcceptJoinInvitation");
// clans_SendJoinRequest_Button.addEventListener("click", this, "f2c_Clans_SendJoinRequest");
// clans_WithdrawJoinRequest_Button.addEventListener("click", this, "f2c_Clans_WithdrawJoinRequest");
// clans_UnblacklistUser_Button.addEventListener("click", this, "f2c_Clans_UnblacklistUser");
// clans_AcceptJoinRequest_Button.addEventListener("click", this, "f2c_Clans_AcceptJoinRequest");
// clans_RejectJoinRequest_Button.addEventListener("click", this, "f2c_Clans_RejectJoinRequest");
// clans_KickAndBlacklistUser_Button.addEventListener("click", this, "f2c_Clans_KickAndBlacklistUser");
//Add callbacks for C++
// ExternalInterface.addCallback("c2f_Clans_Leave", this, c2f_Clans_Leave);
// ExternalInterface.addCallback("c2f_Clans_SendJoinInvitation", this, c2f_Clans_SendJoinInvitation);
ExternalInterface.addCallback("c2f_Clans_WithdrawJoinInvitation", this, c2f_Clans_WithdrawJoinInvitation);
// ExternalInterface.addCallback("c2f_Clans_AcceptJoinInvitation", this, c2f_Clans_AcceptJoinInvitation);
// ExternalInterface.addCallback("c2f_Clans_RejectJoinInvitation", this, c2f_Clans_RejectJoinInvitation);
// ExternalInterface.addCallback("c2f_Clans_SendJoinRequest", this, c2f_Clans_SendJoinRequest);
// ExternalInterface.addCallback("c2f_Clans_WithdrawJoinRequest", this, c2f_Clans_WithdrawJoinRequest);
// ExternalInterface.addCallback("c2f_Clans_AcceptJoinRequest", this, c2f_Clans_AcceptJoinRequest);
// ExternalInterface.addCallback("c2f_Clans_RejectJoinRequest", this, c2f_Clans_RejectJoinRequest);
// ExternalInterface.addCallback("c2f_Clans_KickAndBlacklistUser", this, c2f_Clans_KickAndBlacklistUser);
// ExternalInterface.addCallback("c2f_Clans_UnblacklistUser", this, c2f_Clans_UnblacklistUser);
super.VOnFinishedLoading();
}
/* public function f2c_Clans_Leave():Void
{
ExternalInterface.call("f2c_Clans_Leave", ternalInterface.call("f2c_Clans_Leave", [
clanHandle_EditBox.text, subject_EditBox.text, body_EditBox.text, emailStatus_EditBox.text,
clans_Le);
}*/
/* public function f2c_Clans_SendJoinInvitation():Void
{
ExternalInterface.call("f2c_Clans_SendJoinInvitation", clanHandle_EditBox.text, subject_EditBox.text, body_EditBox.text, emailStatus_EditBox.text,
clans_targetHandle_EditBox.text);
}*/
public function f2c_Clans_WithdrawJoinInvitation():Void
{
ExternalInterface.call("f2c_Clans_WithdrawJoinInvitation", clanHandle_EditBox.text, subject_EditBox.text, body_EditBox.text, emailStatus_EditBox.text,
clans_targetHandle_EditBox.text);
}
/* public function f2c_Clans_AcceptJoinInvitation():Void
{
ExternalInterface.call("f2c_Clans_AcceptJoinInvitation", clanHandle_EditBox.text, subject_EditBox.text, body_EditBox.text, emailStatus_EditBox.text,
clans_AcceptJoinInvitation_failIfAlreadyInClan_Checkbox.selected);
}*/
/*
public function f2c_Clans_RejectJoinInvitation():Void
{
ExternalInterface.call("f2c_Clans_RejectJoinInvitation", clanHandle_EditBox.text, subject_EditBox.text, body_EditBox.text, emailStatus_EditBox.text
);
}*/
/* public function f2c_Clans_SendJoinRequest():Void
{
ExternalInterface.call("f2c_Clans_SendJoinRequest", clanHandle_EditBox.text, subject_EditBox.text, body_EditBox.text, emailStatus_EditBox.text
);
}*/
/* public function f2c_Clans_WithdrawJoinRequest():Void
{
ExternalInterface.call("f2c_Clans_WithdrawJoinRequest", clanHandle_EditBox.text, subject_EditBox.text, body_EditBox.text, emailStatus_EditBox.text
);
}*/
/* public function f2c_Clans_AcceptJoinRequest():Void
{
ExternalInterface.call("f2c_Clans_AcceptJoinRequest", clanHandle_EditBox.text, subject_EditBox.text, body_EditBox.text, emailStatus_EditBox.text,
clans_AcceptJoinRequest_requestingUserHandle_EditBox.text,
clans_AcceptJoinRequest_failIfAlreadyInClan_Checkbox.selected);
}
public function f2c_Clans_RejectJoinRequest():Void
{
ExternalInterface.call("f2c_Clans_RejectJoinRequest", clanHandle_EditBox.text, subject_EditBox.text, body_EditBox.text, emailStatus_EditBox.text,
clans_RejectJoinRequest_requestingUserHandle_EditBox.text);
}*/
/* public function f2c_Clans_KickAndBlacklistUser():Void
{
ExternalInterface.call("f2c_Clans_KickAndBlacklistUser", clanHandle_EditBox.text, subject_EditBox.text, body_EditBox.text, emailStatus_EditBox.text,
clans_KickAndBlacklistUser_targetHandle_EditBox.text,
clans_KickAndBlacklistUser_kick_Checkbox.selected,
clans_KickAndBlacklistUser_blacklist_Checkbox.selected,
clans_KickAndBlacklistUser_reason_EditBox.text
);
}*/
/* public function f2c_Clans_UnblacklistUser():Void
{
ExternalInterface.call("f2c_Clans_UnblacklistUser", clanHandle_EditBox.text, subject_EditBox.text, body_EditBox.text, emailStatus_EditBox.text,
clans_targetHandle_EditBox.text);
}*/
/* public function c2f_Clans_Leave(resultIdentifier:String, wasDissolved:Boolean, newClanLeader:String):Void
{
switch (resultIdentifier)
{
case "Clans_Leave_UNKNOWN_CLAN":
break;
case "Clans_Leave_NOT_IN_CLAN":
break;
case "DATABASE_CONSTRAINT_FAILURE":
break;
case "SUCCESS":
break;
}
}*/
/* public function c2f_Clans_SendJoinInvitation(resultIdentifier:String):Void
{
switch (resultIdentifier)
{
case "DATABASE_CONSTRAINT_FAILURE":
break;
case "SUCCESS":
break;
}
if ( resultIdentifier != "SUCCESS" )
{
LobbyInterface.Instance.CreateMessageBox( resultIdentifier );
}
}
public function c2f_Clans_WithdrawJoinInvitation(resultIdentifier:String):Void
{
switch (resultIdentifier)
{
case "Clans_WithdrawJoinInvitation_UNKNOWN_CLAN":
break;
case "Clans_WithdrawJoinInvitation_UNKNOWN_TARGET_HANDLE":
break;
case "Clans_WithdrawJoinInvitation_CANNOT_PERFORM_ON_SELF":
break;
case "Clans_WithdrawJoinInvitation_NO_SUCH_INVITATION_EXISTS":
break;
case "Clans_WithdrawJoinInvitation_MUST_BE_LEADER_OR_SUBLEADER":
break;
case "SUCCESS":
break;
}
if ( resultIdentifier != "SUCCESS" )
{
LobbyInterface.Instance.CreateMessageBox( resultIdentifier );
}
}*/
/* public function c2f_Clans_AcceptJoinInvitation(resultIdentifier:String):Void
{
switch (resultIdentifier)
{
case "Clans_AcceptJoinInvitation_UNKNOWN_CLAN":
break;
case "Clans_AcceptJoinInvitation_NO_SUCH_INVITATION_EXISTS":
break;
case "Clans_AcceptJoinInvitation_ALREADY_IN_DIFFERENT_CLAN":
break;
case "SUCCESS":
break;
}
if ( resultIdentifier != "SUCCESS" )
{
LobbyInterface.Instance.CreateMessageBox( resultIdentifier );
}
}*/
/* public function c2f_Clans_RejectJoinInvitation(resultIdentifier:String):Void
{
switch (resultIdentifier)
{
case "Clans_RejectJoinInvitation_UNKNOWN_CLAN":
break;
case "Clans_RejectJoinInvitation_NO_SUCH_INVITATION_EXISTS":
break;
case "SUCCESS":
break;
}
if ( resultIdentifier != "SUCCESS" )
{
LobbyInterface.Instance.CreateMessageBox( resultIdentifier );
}
}*/
/* public function c2f_Clans_SendJoinRequest(resultIdentifier:String, clanJoined:Boolean):Void
{
switch (resultIdentifier)
{
case "Clans_SendJoinRequest_UNKNOWN_CLAN":
break;
case "Clans_SendJoinRequest_ALREADY_IN_CLAN":
break;
case "Clans_SendJoinRequest_BANNED":
break;
case "Clans_SendJoinRequest_REQUEST_ALREADY_PENDING":
break;
case "Clans_SendJoinRequest_ALREADY_INVITED":
break;
case "SUCCESS":
break;
}
}*/
/* public function c2f_Clans_WithdrawJoinRequest(resultIdentifier:String):Void
{
switch (resultIdentifier)
{
case "Clans_WithdrawJoinRequest_UNKNOWN_CLAN":
break;
case "Clans_WithdrawJoinRequest_ALREADY_IN_CLAN":
break;
case "Clans_WithdrawJoinRequest_NO_SUCH_INVITATION_EXISTS":
break;
case "DATABASE_CONSTRAINT_FAILURE":
break;
case "SUCCESS":
break;
}
}*/
/* public function c2f_Clans_AcceptJoinRequest(resultIdentifier:String):Void
{
switch (resultIdentifier)
{
case "Clans_AcceptJoinRequest_UNKNOWN_CLAN":
break;
case "Clans_AcceptJoinRequest_NOT_IN_CLAN":
break;
case "Clans_AcceptJoinRequest_MUST_BE_LEADER_OR_SUBLEADER":
break;
case "Clans_AcceptJoinRequest_UNKNOWN_TARGET_HANDLE":
break;
case "Clans_AcceptJoinRequest_CANNOT_PERFORM_ON_SELF":
break;
case "Clans_AcceptJoinRequest_TARGET_ALREADY_IN_CLAN":
break;
case "Clans_AcceptJoinRequest_TARGET_IS_BANNED":
break;
case "Clans_AcceptJoinRequest_REQUEST_NOT_PENDING":
break;
case "Clans_AcceptJoinRequest_TARGET_ALREADY_IN_DIFFERENT_CLAN":
break;
case "SUCCESS":
break;
}
}
public function c2f_Clans_RejectJoinRequest(resultIdentifier:String):Void
{
switch (resultIdentifier)
{
case "Clans_RejectJoinRequest_UNKNOWN_CLAN":
break;
case "Clans_RejectJoinRequest_NOT_IN_CLAN":
break;
case "Clans_RejectJoinRequest_MUST_BE_LEADER_OR_SUBLEADER":
break;
case "Clans_RejectJoinRequest_REQUESTING_USER_HANDLE_UNKNOWN":
break;
case "Clans_RejectJoinRequest_NO_SUCH_INVITATION_EXISTS":
break;
case "SUCCESS":
break;
}
}*/
/* public function c2f_Clans_KickAndBlacklistUser(resultIdentifier:String):Void
{
switch (resultIdentifier)
{
case "Clans_KickAndBlacklistUser_UNKNOWN_CLAN":
break;
case "Clans_KickAndBlacklistUser_NOT_IN_CLAN":
break;
case "Clans_KickAndBlacklistUser_MUST_BE_LEADER_OR_SUBLEADER":
break;
case "Clans_KickAndBlacklistUser_UNKNOWN_TARGET_HANDLE":
break;
case "Clans_KickAndBlacklistUser_CANNOT_PERFORM_ON_SELF":
break;
case "Clans_KickAndBlacklistUser_CANNOT_PERFORM_ON_LEADER":
break;
case "Clans_KickAndBlacklistUser_ALREADY_BLACKLISTED":
break;
case "SUCCESS":
break;
}
if ( resultIdentifier != "SUCCESS" )
{
LobbyInterface.Instance.CreateMessageBox( resultIdentifier );
}
}
public function c2f_Clans_UnblacklistUser(resultIdentifier:String):Void
{
switch (resultIdentifier)
{
case "Clans_UnblacklistUser_UNKNOWN_CLAN":
break;
case "Clans_UnblacklistUser_NOT_IN_CLAN":
break;
case "Clans_UnblacklistUser_MUST_BE_LEADER_OR_SUBLEADER":
break;
case "Clans_UnblacklistUser_UNKNOWN_TARGET_HANDLE":
break;
case "Clans_UnblacklistUser_NOT_BLACKLISTED":
break;
case "SUCCESS":
break;
}
if ( resultIdentifier != "SUCCESS" )
{
LobbyInterface.Instance.CreateMessageBox( resultIdentifier );
}
}*/
}

View File

@ -0,0 +1,593 @@
import flash.external.*;
import gfx.controls.TextInput;
import gfx.controls.Button;
import gfx.controls.CheckBox;
import Screens.ClanBlockListScreen;
import Screens.ClanRootScreen;
import mx.utils.Delegate;
class Screens.ClanGeneralScreen extends ScreenWithPageNavigator
{
private var clanHandle_EditBox:TextInput;
private var clans_Create_description_EditBox:TextInput;
private var clans_Create_emailStatus_EditBox:TextInput;
private var clans_Description_EditBox:TextInput;
private var clans_targetHandle_EditBox:TextInput;
private var clans_SetSubleaderStatus_targetHandle_EditBox:TextInput;
private var clans_SetMemberRank_targetHandle_EditBox:TextInput;
private var clans_SetMemberRank_newRank_EditBox:TextInput;
private var clans_ChangeHandle_newClanHandle_EditBox:TextInput;
private var clans_Create_failIfAlreadyInClan_Checkbox:CheckBox;
private var clans_Create_requiresInvitationsToJoin_Checkbox:CheckBox;
private var clans_SetSubleaderStatus_setToSubleader_Checkbox:CheckBox;
private var clans_Create_Button:Button;
private var clans_SetProperties_Button:Button;
private var clans_SetMyMemberProperties_Button:Button;
private var clans_GrantLeader_Button:Button;
private var clans_SetSubleaderStatus_Button:Button;
private var clans_SetMemberRank_Button:Button;
private var clans_ChangeHandle_Button:Button;
private var btnBack:Button;
private var btnLeaveClan:Button;
private var btnBlockedUsers:Button;
private var btnAcceptInvite:Button;
private var btnRequest:Button;
private var btnInvite:Button;
private var tfUserToAdd:TextInput;
private var tfClanName:TextField;
private var tfClanDescription:TextField;
private var mIsMyClan:Boolean;
private var mIsClanLeader:Boolean;
private var mcMail:Mail;
private static var mInstance:ClanGeneralScreen;
public function ClanGeneralScreen()
{
ConsoleWindow.Trace("Constructing ClanGeneralScreen");
mScreenId = ScreenID.CLAN_GENERAL;
mScreenTabId = ScreenTab.ID_CLANS;
mEntriesPerPage = 9;
mFirstEntryX = 435;
mFirstEntryY = -200;
mDeltaY = 10;
mIsMyClan = false;
mIsClanLeader = false;
mInstance = this;
}
public static function get Instance():ClanGeneralScreen
{
return mInstance;
}
public function VOnFinishedLoading():Void
{
//Add click event for buttons
/*clans_Create_Button.addEventListener("click", this, "f2c_Clans_Create");
clans_SetProperties_Button.addEventListener("click", this, "f2c_Clans_SetProperties");
clans_SetMyMemberProperties_Button.addEventListener("click", this, "f2c_Clans_SetMyMemberProperties");
clans_GrantLeader_Button.addEventListener("click", this, "f2c_Clans_GrantLeader");
clans_SetSubleaderStatus_Button.addEventListener("click", this, "f2c_Clans_SetSubleaderStatus");
clans_SetMemberRank_Button.addEventListener("click", this, "f2c_Clans_SetMemberRank");
clans_ChangeHandle_Button.addEventListener("click", this, "f2c_Clans_ChangeHandle");*/
btnBack.addEventListener("click", this, "Back");
btnBlockedUsers.addEventListener("click", this, "ShowBlockedUsers");
btnLeaveClan.addEventListener("click", this, "ShowLeaveClanMail");
btnRequest.addEventListener("click", this, "SendJoinRequestEmail");
btnInvite.addEventListener("click", this, "ShowSendJoinInvitationMail");
//Add callbacks for C++
ExternalInterface.addCallback("c2f_Clans_GetProperties", this, c2f_Clans_GetProperties);
ExternalInterface.addCallback("c2f_Clans_SetProperties", this, c2f_Clans_SetProperties);
ExternalInterface.addCallback("c2f_Clans_SetMyMemberProperties", this, c2f_Clans_SetMyMemberProperties);
ExternalInterface.addCallback("c2f_Clans_GrantLeader", this, c2f_Clans_GrantLeader);
ExternalInterface.addCallback("c2f_Clans_SetSubleaderStatus", this, c2f_Clans_SetSubleaderStatus);
ExternalInterface.addCallback("c2f_Clans_SetMemberRank", this, c2f_Clans_SetMemberRank);
ExternalInterface.addCallback("c2f_Clans_ChangeHandle", this, c2f_Clans_ChangeHandle);
ExternalInterface.addCallback("c2f_Clans_GetMembers", this, c2f_Clans_GetMembers);
ExternalInterface.addCallback("c2f_Clans_Leave", this, c2f_Clans_Leave);
ExternalInterface.addCallback("c2f_Clans_SendJoinRequest", this, c2f_Clans_SendJoinRequest);
ExternalInterface.addCallback("c2f_Clans_SendJoinInvitation", this, c2f_Clans_SendJoinInvitation);
super.VOnFinishedLoading();
}
public function OnShow():Void
{
super.OnShow();
mcMail._visible = false;
if ( mMovieClipList.length > 0 )
{
CleanUpMoveClipList( mMovieClipList );
}
btnRequest._visible = false;
btnBlockedUsers._visible = false;
btnAcceptInvite._visible = false;
btnLeaveClan._visible = false;
btnInvite._visible = false;
tfUserToAdd._visible = false;
//tfClanName.text = "";
//tfClanDescription.text = "";
mMovieClipList = new Array();
mCurrentPage = 0;
GoToPage( 1 );
if ( tfClanName.text.length > 0 )
{
ExternalInterface.call("f2c_Clans_GetProperties", tfClanName.text);
ExternalInterface.call("f2c_Clans_GetMembers", tfClanName.text);
}
}
public function Back():Void
{
LobbyInterface.Instance.ShowLastScreen();
}
public function SetClanName( name:String ):Void
{
ConsoleWindow.Trace("Setting clan name to " + name);
tfClanName.text = name;
}
private function AddListEntry( username:String, rank:String, _profileImageIndex:Number ):MovieClip
{
var clanEntry:MovieClip = attachMovie("ClanMemberListEntry", "mcClanEntry" + mMovieClipList.length, getNextHighestDepth() );
clanEntry._visible = false;
clanEntry.tfUserName.text = username;
clanEntry.tfRank.text = rank;
mMovieClipList.push( clanEntry );
//ConsoleWindow.Trace("Adding entry: " + clanEntry);
var self:ClanGeneralScreen = this;
//clanEntry.onPress = function() { self.OnSelectClan( this ); }
return clanEntry;
}
public function c2f_Clans_GetProperties(resultIdentifier:String, clanDescription:String):Void
{
switch (resultIdentifier)
{
case "Clans_GetProperties_UNKNOWN_CLAN":
break;
case "DATABASE_CONSTRAINT_FAILURE":
break;
case "SUCCESS":
// clanDescription should be a valid string
tfClanDescription.text = clanDescription;
break;
}
if ( resultIdentifier != "SUCCESS" )
{
LobbyInterface.Instance.CreateMessageBox( resultIdentifier );
}
}
public function c2f_Clans_GetMembers():Void
{
var success:Boolean = false;
var resultIdentifier:String = arguments[0];
switch (resultIdentifier)
{
case "Clans_GetMembers_UNKNOWN_CLAN":
break;
case "DATABASE_CONSTRAINT_FAILURE":
break;
case "SUCCESS":
success = true;
break;
}
ConsoleWindow.Trace("ClanGeneralScreen.c2f_Clans_GetMembers(), resultIdentifier = " + resultIdentifier);
if ( success )
{
mIsMyClan = false;
var username:String = LobbyInterface.Instance.GetUsername();
var clanLeader:String = arguments[1];
mIsClanLeader = false;
if ( clanLeader == username )
{
mIsMyClan = true;
mIsClanLeader = true;
}
AddListEntry( clanLeader, "LEADER", 1 );
var clanMembersOtherThanLeader:Number = arguments.length - 2;
for (var i:Number=0; i < clanMembersOtherThanLeader; i++)
{
var clanMember:String = arguments[2+i];
AddListEntry( clanMember, "MEMBER", 1 );
if ( clanMember == username )
{
mIsMyClan = true;
}
}
if ( mIsMyClan )
{
btnLeaveClan._visible = true;
btnBlockedUsers._visible = true;
btnAcceptInvite._visible = false;
btnRequest._visible = false;
btnInvite._visible = true;
tfUserToAdd._visible = true;
}
else
{
btnLeaveClan._visible = false;
btnBlockedUsers._visible = false;
btnAcceptInvite._visible = false;
btnRequest._visible = true;
}
OnMoveClipListUpdated();
ShowPage(1);
}
else
{
LobbyInterface.Instance.CreateMessageBox( resultIdentifier );
}
}
public function ShowBlockedUsers():Void
{
ClanBlockListScreen.Instance.SetClanName( tfClanName.text );
LobbyInterface.Instance.ShowScreen( ScreenID.CLAN_BLOCK_LIST );
}
public function f2c_Clans_Create():Void
{
}
public function f2c_Clans_SetProperties():Void
{
ExternalInterface.call("f2c_Clans_SetProperties", clanHandle_EditBox.text,clans_Description_EditBox.text);
}
public function f2c_Clans_SetMyMemberProperties():Void
{
ExternalInterface.call("f2c_Clans_SetMyMemberProperties", clanHandle_EditBox.text,clans_Description_EditBox.text);
}
public function f2c_Clans_GrantLeader():Void
{
ExternalInterface.call("f2c_Clans_GrantLeader", clanHandle_EditBox.text,clans_targetHandle_EditBox.text);
}
public function f2c_Clans_SetSubleaderStatus():Void
{
ExternalInterface.call("f2c_Clans_SetSubleaderStatus", clanHandle_EditBox.text,
clans_SetSubleaderStatus_targetHandle_EditBox.text,
clans_SetSubleaderStatus_setToSubleader_Checkbox.selected);
}
public function f2c_Clans_SetMemberRank():Void
{
ExternalInterface.call("f2c_Clans_SetMemberRank", clanHandle_EditBox.text,clans_SetMemberRank_targetHandle_EditBox.text,
clans_SetMemberRank_newRank_EditBox.text);
}
public function f2c_Clans_ChangeHandle():Void
{
ExternalInterface.call("f2c_Clans_ChangeHandle", clanHandle_EditBox.text,clans_ChangeHandle_newClanHandle_EditBox.text);
}
public function c2f_Clans_SetProperties(resultIdentifier:String):Void
{
switch (resultIdentifier)
{
case "Clans_SetProperties_UNKNOWN_CLAN":
break;
case "Clans_SetProperties_MUST_BE_LEADER":
break;
case "DATABASE_CONSTRAINT_FAILURE":
break;
case "SUCCESS":
break;
}
if ( resultIdentifier != "SUCCESS" )
{
LobbyInterface.Instance.CreateMessageBox( resultIdentifier );
}
}
public function c2f_Clans_SetMyMemberProperties(resultIdentifier:String):Void
{
switch (resultIdentifier)
{
case "Clans_SetMyMemberProperties_UNKNOWN_CLAN":
break;
case "Clans_SetMyMemberProperties_NOT_IN_CLAN":
break;
case "DATABASE_CONSTRAINT_FAILURE":
break;
case "SUCCESS":
break;
}
if ( resultIdentifier != "SUCCESS" )
{
LobbyInterface.Instance.CreateMessageBox( resultIdentifier );
}
}
public function c2f_Clans_GrantLeader(resultIdentifier:String):Void
{
switch (resultIdentifier)
{
case "Clans_GrantLeader_UNKNOWN_CLAN":
break;
case "Clans_GrantLeader_MUST_BE_LEADER":
break;
case "Clans_GrantLeader_UNKNOWN_TARGET_HANDLE":
break;
case "Clans_GrantLeader_CANNOT_PERFORM_ON_SELF":
break;
case "Clans_GrantLeader_TARGET_NOT_IN_CLAN":
break;
case "DATABASE_CONSTRAINT_FAILURE":
break;
case "SUCCESS":
break;
}
if ( resultIdentifier != "SUCCESS" )
{
LobbyInterface.Instance.CreateMessageBox( resultIdentifier );
}
}
public function c2f_Clans_SetSubleaderStatus(resultIdentifier:String):Void
{
switch (resultIdentifier)
{
case "Clans_SetSubleaderStatus_UNKNOWN_CLAN":
break;
case "Clans_SetProperties_MUST_BE_LEADER":
break;
case "Clans_SetSubleaderStatus_UNKNOWN_TARGET_HANDLE":
break;
case "Clans_SetSubleaderStatus_CANNOT_PERFORM_ON_SELF":
break;
case "Clans_SetSubleaderStatus_TARGET_NOT_IN_CLAN":
break;
case "DATABASE_CONSTRAINT_FAILURE":
break;
case "SUCCESS":
break;
}
if ( resultIdentifier != "SUCCESS" )
{
LobbyInterface.Instance.CreateMessageBox( resultIdentifier );
}
}
public function c2f_Clans_SetMemberRank(resultIdentifier:String):Void
{
switch (resultIdentifier)
{
case "Clans_SetMemberRank_UNKNOWN_CLAN":
break;
case "Clans_SetMemberRank_MUST_BE_LEADER":
break;
case "Clans_SetMemberRank_UNKNOWN_TARGET_HANDLE":
break;
case "Clans_SetMemberRank_CANNOT_PERFORM_ON_SELF":
break;
case "Clans_SetMemberRank_TARGET_NOT_IN_CLAN":
break;
case "DATABASE_CONSTRAINT_FAILURE":
break;
case "SUCCESS":
break;
}
if ( resultIdentifier != "SUCCESS" )
{
LobbyInterface.Instance.CreateMessageBox( resultIdentifier );
}
}
public function c2f_Clans_ChangeHandle(resultIdentifier:String):Void
{
switch (resultIdentifier)
{
case "Clans_ChangeHandle_UNKNOWN_CLAN":
break;
case "Clans_ChangeHandle_MUST_BE_LEADER":
break;
case "DATABASE_CONSTRAINT_FAILURE":
break;
case "SUCCESS":
break;
}
if ( resultIdentifier != "SUCCESS" )
{
LobbyInterface.Instance.CreateMessageBox( resultIdentifier );
}
}
public function HideMail():Void
{
mcMail._visible = false;
}
public function ShowLeaveClanMail():Void
{
mcMail.Clear();
mcMail.SetButton( 1, "CANCEL", Delegate.create(this, HideMail) );
mcMail.SetButton( 2, "LEAVE", Delegate.create(this, LeaveClan) );
mcMail.SetTitle( "LEAVE CLAN" );
mcMail.SetToField( tfClanName.text );
mcMail.DisableToField();
mcMail.SetCheckBox( "DISBAND CLAN" );
mcMail.swapDepths( getNextHighestDepth() );
mcMail._visible = true;
}
public function LeaveClan():Void
{
//emailStatus_EditBox.text (4th param), Kevin - The email system supports a numerical status for emails that is game-specific.
// For example, you might have 23 represent an email reporting match statistics.
ExternalInterface.call("f2c_Clans_Leave", [
tfClanName.text, mcMail.GetSubjectField(), mcMail.GetMsgField(), "0",
mcMail.IsCheckBoxOn()], _root);
HideMail();
Back();
}
public function c2f_Clans_Leave(resultIdentifier:String, wasDissolved:Boolean, newClanLeader:String):Void
{
switch (resultIdentifier)
{
case "Clans_Leave_UNKNOWN_CLAN":
break;
case "Clans_Leave_NOT_IN_CLAN":
break;
case "DATABASE_CONSTRAINT_FAILURE":
break;
case "SUCCESS":
ConsoleWindow.Trace("c2f_Clans_Leave(), resultIdentifier = " + resultIdentifier );
break;
}
if ( resultIdentifier != "SUCCESS" )
{
LobbyInterface.Instance.CreateMessageBox( resultIdentifier );
}
//ConsoleWindow.Trace("c2f_Clans_Leave(), resultIdentifier = " + resultIdentifier );
}
public function SendJoinRequestEmail():Void
{
mcMail.Clear();
mcMail.SetButton( 1, "CANCEL", Delegate.create(this, HideMail) );
mcMail.SetButton( 2, "SEND REQUEST", Delegate.create(this, SendJoinRequest) );
mcMail.SetTitle( "JOIN CLAN" );
mcMail.SetToField( tfClanName.text );
mcMail.DisableToField();
mcMail.swapDepths( getNextHighestDepth() );
mcMail._visible = true;
}
public function SendJoinRequest():Void
{
ExternalInterface.call("f2c_Clans_SendJoinRequest",
tfClanName.text, mcMail.GetSubjectField(), mcMail.GetMsgField(), "0"
);
}
public function c2f_Clans_SendJoinRequest(resultIdentifier:String, clanJoined:Boolean):Void
{
ConsoleWindow.Trace("c2f_Clans_SendJoinRequest() resultIdentifier = " + resultIdentifier);
switch (resultIdentifier)
{
case "Clans_SendJoinRequest_UNKNOWN_CLAN":
break;
case "Clans_SendJoinRequest_ALREADY_IN_CLAN":
break;
case "Clans_SendJoinRequest_BANNED":
break;
case "Clans_SendJoinRequest_REQUEST_ALREADY_PENDING":
break;
case "Clans_SendJoinRequest_ALREADY_INVITED":
break;
case "SUCCESS":
HideMail();
break;
}
if ( resultIdentifier != "SUCCESS" )
{
LobbyInterface.Instance.CreateMessageBox( resultIdentifier );
}
}
public function ShowSendJoinInvitationMail():Void
{
mcMail.Clear();
mcMail.SetButton( 1, "CANCEL", Delegate.create(this, HideMail) );
mcMail.SetButton( 2, "SEND INVITE", Delegate.create(this, SendJoinInvitation) );
mcMail.SetTitle( "INVITE USER TO CLAN" );
mcMail.SetToField( tfUserToAdd.text );
mcMail.DisableToField();
mcMail.swapDepths( getNextHighestDepth() );
mcMail._visible = true;
}
public function SendJoinInvitation():Void
{
ExternalInterface.call("f2c_Clans_SendJoinInvitation", tfClanName.text, mcMail.GetSubjectField(), mcMail.GetMsgField(), "0",
tfUserToAdd.text);
}
public function c2f_Clans_SendJoinInvitation(resultIdentifier:String):Void
{
switch (resultIdentifier)
{
case "DATABASE_CONSTRAINT_FAILURE":
break;
case "SUCCESS":
ConsoleWindow.Trace("c2f_Clans_SendJoinInvitation(), success");
HideMail();
break;
}
if ( resultIdentifier != "SUCCESS" )
{
LobbyInterface.Instance.CreateMessageBox( resultIdentifier );
}
}
public function c2f_Clans_WithdrawJoinInvitation(resultIdentifier:String):Void
{
switch (resultIdentifier)
{
case "Clans_WithdrawJoinInvitation_UNKNOWN_CLAN":
break;
case "Clans_WithdrawJoinInvitation_UNKNOWN_TARGET_HANDLE":
break;
case "Clans_WithdrawJoinInvitation_CANNOT_PERFORM_ON_SELF":
break;
case "Clans_WithdrawJoinInvitation_NO_SUCH_INVITATION_EXISTS":
break;
case "Clans_WithdrawJoinInvitation_MUST_BE_LEADER_OR_SUBLEADER":
break;
case "SUCCESS":
break;
}
if ( resultIdentifier != "SUCCESS" )
{
LobbyInterface.Instance.CreateMessageBox( resultIdentifier );
}
}
}

View File

@ -0,0 +1,454 @@
import flash.external.*;
import gfx.controls.TextInput;
import gfx.controls.TextArea;
import gfx.controls.Button;
import mx.utils.Delegate;
import gfx.controls.CheckBox;
class Screens.ClanInvitedRequestedScreen extends ScreenWithPageNavigator
{
private var btnBack:Button;
private var tfClanName:TextField;
private var tfClanDescription:TextField;
private var mcMail:Mail;
public var mcSelectedEntry:MovieClip;
public function ClanInvitedRequestedScreen()
{
ConsoleWindow.Trace("Constructing CreateClan");
mScreenId = ScreenID.CLAN_INVITED_REQUESTED;
mScreenTabId = ScreenTab.ID_CLANS;
mEntriesPerPage = 10;
mFirstEntryX = 500;
mFirstEntryY = -200;
mDeltaY = 10;
}
public function VOnFinishedLoading():Void
{
//Add click event for buttons
btnBack.addEventListener("click", this, "Back");
//Add callbacks for C++
ExternalInterface.addCallback("c2f_Clans_DownloadInvitationList", this, c2f_Clans_DownloadInvitationList);
ExternalInterface.addCallback("c2f_Clans_DownloadRequestList", this, c2f_Clans_DownloadRequestList);
ExternalInterface.addCallback("c2f_Clans_AcceptJoinRequest", this, c2f_Clans_AcceptJoinRequest);
ExternalInterface.addCallback("c2f_Clans_RejectJoinRequest", this, c2f_Clans_RejectJoinRequest);
ExternalInterface.addCallback("c2f_Clans_WithdrawJoinRequest", this, c2f_Clans_WithdrawJoinRequest);
ExternalInterface.addCallback("c2f_Clans_AcceptJoinInvitation", this, c2f_Clans_AcceptJoinInvitation);
ExternalInterface.addCallback("c2f_Clans_RejectJoinInvitation", this, c2f_Clans_RejectJoinInvitation);
super.VOnFinishedLoading();
}
public function OnShow():Void
{
super.OnShow();
mcMail._visible = false;
tfClanName.text = "";
tfClanDescription.text = "";
RefreshScreen();
}
public function RefreshScreen():Void
{
if ( mMovieClipList.length > 0 )
{
CleanUpMoveClipList( mMovieClipList );
}
mMovieClipList = new Array();
mCurrentPage = 0;
GoToPage( 1 );
DownloadLists();
}
public function Back():Void
{
LobbyInterface.Instance.ShowScreen( ScreenID.CLAN_ROOT );
}
private function DownloadLists():Void
{
ConsoleWindow.Trace("DownloadLists");
ExternalInterface.call("f2c_Clans_DownloadInvitationList");
ExternalInterface.call("f2c_Clans_DownloadRequestList");
}
public function c2f_Clans_DownloadInvitationList():Void
{
var resultIdentifier:String = arguments[0];
ConsoleWindow.Trace("c2f_Clans_DownloadInvitationList... resultIdentifier: " + resultIdentifier);
switch (resultIdentifier)
{
case "DATABASE_CONSTRAINT_FAILURE":
break;
case "SUCCESS":
break;
}
if ( resultIdentifier != "SUCCESS" )
{
LobbyInterface.Instance.CreateMessageBox( resultIdentifier );
}
var numResults:Number = arguments.length-1;
for (var i:Number=0; i < numResults; i++)
{
var clanHandle:String = arguments[1 + i];
AddListEntryIncomingInvite( clanHandle, 0 );
//AddListEntry( clanHandle, "INVITED", 0, false );
}
ConsoleWindow.Trace("c2f_Clans_DownloadInvitationList(), arguments = " + arguments);
//debug data:
//for (var i:Number=0; i < 15; i++)
{
// AddListEntry( "test clan" + i, "INVITED" );
}
OnMoveClipListUpdated();
ShowPage(1);
}
public function c2f_Clans_DownloadRequestList():Void
{
var resultIdentifier:String = arguments[0];
ConsoleWindow.Trace("c2f_Clans_DownloadRequestList... resultIdentifier: " + resultIdentifier);
switch (resultIdentifier)
{
case "DATABASE_CONSTRAINT_FAILURE":
break;
case "SUCCESS":
break;
}
if ( resultIdentifier != "SUCCESS" )
{
LobbyInterface.Instance.CreateMessageBox( resultIdentifier );
}
var joinRequestsToMyClan:Number = arguments[1];
var joinRequestsFromMe:Number = arguments[2];
for (var i:Number=0; i < joinRequestsToMyClan; i++)
{
var targetClan:String = arguments[3+i*3+0];
var dateSent:String = arguments[3+i*3+1];
var joinRequestSender:String = arguments[3 + i * 3 + 2];
AddListEntryIncomingRequest( targetClan, 0, joinRequestSender );
//AddListEntry( targetClan, "REQUESTED", 0, false, joinRequestSender );
}
for (var i:Number=0; i < joinRequestsFromMe; i++)
{
var targetClan:String = arguments[3+i*3+joinRequestsToMyClan*3+0];
var dateSent:String = arguments[3+i*3+joinRequestsToMyClan*3+1];
var joinRequestSender:String = arguments[3 + i * 3 + joinRequestsToMyClan * 3 + 2];
AddListEntryOutgoingRequest( targetClan, 0, joinRequestSender );
//AddListEntry( targetClan, "REQUESTED", 0, true, joinRequestSender );
}
OnMoveClipListUpdated();
}
private function AddListEntry( clanToAdd:String, invitedOrRequested:String, _profileImageIndex:Number, userName:String ):MovieClip
{
var clanEntry:MovieClip = attachMovie("ClanInviteListEntry", "mcClanEntry" + mMovieClipList.length, getNextHighestDepth() );
clanEntry._visible = false;
clanEntry.tfClanName.text = clanToAdd;
clanEntry.tfInvitation.text = invitedOrRequested;
clanEntry.username = userName;
mMovieClipList.push( clanEntry );
ConsoleWindow.Trace("Adding entry: " + clanEntry);
var self:ClanInvitedRequestedScreen = this;
clanEntry.mcDelete.onPress = function() { self.RemoveEntry( this._parent ); }
return clanEntry;
}
private function AddListEntryIncomingInvite( clan:String, clanProfileImageIndex:Number )
{
var entry:MovieClip = AddListEntry( clan, "INVITE", clanProfileImageIndex, LobbyInterface.Instance.GetUsername() );
var self:ClanInvitedRequestedScreen = this;
entry.tfInvitation.onPress = entry.mcImage.onPress = function() { self.ShowJoinInvitationMail( this._parent ); }
}
private function AddListEntryIncomingRequest( clan:String, clanProfileImageIndex:Number, senderName:String ):Void
{
var entry:MovieClip = AddListEntry( clan, "REQUESTED", clanProfileImageIndex, senderName );
var self:ClanInvitedRequestedScreen = this;
entry.tfInvitation.onPress = entry.mcImage.onPress = function() { self.ShowJoinRequestMail( this._parent ); }
}
private function AddListEntryOutgoingRequest( clan:String, clanProfileImageIndex:Number ):Void
{
var entry:MovieClip = AddListEntry( clan, "REQUESTED", clanProfileImageIndex, LobbyInterface.Instance.GetUsername() );
var self:ClanInvitedRequestedScreen = this;
entry.tfInvitation.onPress = entry.mcImage.onPress = function() { self.ShowWithdrawJoinRequestMail( this._parent ); }
}
private function OnShowMovieClipEntry( mcEntry:MovieClip, index:Number ):Void
{
super.OnShowMovieClipEntry( mcEntry, index );
}
private function OnHideMovieClipEntry( mcEntry:MovieClip ):Void
{
mcEntry.mcDelete.onPress = null;
mcEntry.mcImage.onPress = null;
mcEntry.tfInvitation.onPress = null;
}
/* public function OnSelectClan( clanEntry:MovieClip ):Void
{
//tfClanName.text = clanEntry.tfClanName.text;
//tfClanDescription.text = clanEntry.tfClanName.text + "'s description...";
//ConsoleWindow.Trace("from me? " + clanEntry.fromMe);
//ConsoleWindow.Trace("sender name = " + clanEntry.sender);
mcSelectedEntry = clanEntry;
if ( !clanEntry.fromMe )
{
ShowJoinRequestMail(clanEntry.sender);
}
else
{
ShowWithdrawJoinRequestMail( clanEntry.tfClanName.text );
}
}*/
public function RemoveEntry( clanEntry:MovieClip ):Void
{
//f2c_RemoveFriend( clanEntry.tfUsername.text );
RemoveEntryFromList( clanEntry, mMovieClipList );
}
public function ShowJoinRequestMail( clanEntry:MovieClip ):Void
{
mcSelectedEntry = clanEntry;
mcMail.Clear();
mcMail.SetButton( 1, "ACCEPT", Delegate.create(this, SendAcceptJoinRequest) );
mcMail.SetButton( 2, "REJECT", Delegate.create(this, SendRejectJoinRequest) );
mcMail.SetButton( 3, "CANCEL", Delegate.create(this, HideMail) );
mcMail.SetTitle( clanEntry.username + " WANTS TO JOIN YOUR CLAN" );
mcMail.SetToField( clanEntry.username );
mcMail.DisableToField();
mcMail.SetCheckBox( "FAIL IF ALREADY IN CLAN" );
mcMail.swapDepths( getNextHighestDepth() );
mcMail._visible = true;
}
public function HideMail():Void
{
mcMail._visible = false;
}
public function SendAcceptJoinRequest():Void
{
ConsoleWindow.Trace( "clan name = " + mcSelectedEntry.tfClanName.text + ", subject = " + mcMail.GetSubjectField() + ", msg = " + mcMail.GetMsgField() +
", sender = " +
mcSelectedEntry.username + ", check box = " + mcMail.IsCheckBoxOn() );
ExternalInterface.call("f2c_Clans_AcceptJoinRequest", mcSelectedEntry.tfClanName.text, mcMail.GetSubjectField(), mcMail.GetMsgField(), "0",
mcSelectedEntry.username, mcMail.IsCheckBoxOn());
//HideMail();
}
public function SendRejectJoinRequest():Void
{
//ConsoleWindow.Trace( "clan name = " + mcSelectedEntry.tfClanName.text + ", subject = " + mcMail.GetSubjectField() + ", msg = " + mcMail.GetMsgField() +
// ", sender = " +
// mcSelectedEntry.username + ", check box = " + mcMail.IsCheckBoxOn() );
ExternalInterface.call("f2c_Clans_RejectJoinRequest", mcSelectedEntry.tfClanName.text, mcMail.GetSubjectField(), mcMail.GetMsgField(), "0",
mcSelectedEntry.username);
//HideMail();
}
public function c2f_Clans_AcceptJoinRequest(resultIdentifier:String):Void
{
ConsoleWindow.Trace("c2f_Clans_AcceptJoinRequest(), resultIdentifier = " + resultIdentifier);
switch (resultIdentifier)
{
case "Clans_AcceptJoinRequest_UNKNOWN_CLAN":
break;
case "Clans_AcceptJoinRequest_NOT_IN_CLAN":
break;
case "Clans_AcceptJoinRequest_MUST_BE_LEADER_OR_SUBLEADER":
break;
case "Clans_AcceptJoinRequest_UNKNOWN_TARGET_HANDLE":
break;
case "Clans_AcceptJoinRequest_CANNOT_PERFORM_ON_SELF":
break;
case "Clans_AcceptJoinRequest_TARGET_ALREADY_IN_CLAN":
break;
case "Clans_AcceptJoinRequest_TARGET_IS_BANNED":
break;
case "Clans_AcceptJoinRequest_REQUEST_NOT_PENDING":
break;
case "Clans_AcceptJoinRequest_TARGET_ALREADY_IN_DIFFERENT_CLAN":
break;
case "SUCCESS":
HideMail();
RefreshScreen();
break;
}
if ( resultIdentifier != "SUCCESS" )
{
LobbyInterface.Instance.CreateMessageBox( resultIdentifier );
}
}
public function c2f_Clans_RejectJoinRequest(resultIdentifier:String):Void
{
switch (resultIdentifier)
{
case "Clans_RejectJoinRequest_UNKNOWN_CLAN":
break;
case "Clans_RejectJoinRequest_NOT_IN_CLAN":
break;
case "Clans_RejectJoinRequest_MUST_BE_LEADER_OR_SUBLEADER":
break;
case "Clans_RejectJoinRequest_REQUESTING_USER_HANDLE_UNKNOWN":
break;
case "Clans_RejectJoinRequest_NO_SUCH_INVITATION_EXISTS":
break;
case "SUCCESS":
HideMail();
RefreshScreen();
ConsoleWindow.Trace("c2f_Clans_RejectJoinRequest(), resultIdentifier = " + resultIdentifier);
break;
}
if ( resultIdentifier != "SUCCESS" )
{
LobbyInterface.Instance.CreateMessageBox( resultIdentifier );
}
}
public function ShowWithdrawJoinRequestMail( clanEntry:MovieClip ):Void
{
mcSelectedEntry = clanEntry;
mcMail.Clear();
mcMail.SetButton( 1, "WITHDRAW", Delegate.create(this, WithdrawJoinRequest) );
mcMail.SetButton( 2, "CANCEL", Delegate.create(this, HideMail) );
mcMail.SetTitle( "YOU HAVE A PENDING INVITATION TO JOIN CLAN " + clanEntry.tfClanName.text );
mcMail.SetToField( clanEntry.tfClanName.text );
mcMail.DisableToField();
mcMail.swapDepths( getNextHighestDepth() );
mcMail._visible = true;
}
public function WithdrawJoinRequest():Void
{
ExternalInterface.call("f2c_Clans_WithdrawJoinRequest", mcSelectedEntry.tfClanName.text, mcMail.GetSubjectField(), mcMail.GetMsgField(), "0"
);
}
public function c2f_Clans_WithdrawJoinRequest(resultIdentifier:String):Void
{
switch (resultIdentifier)
{
case "Clans_WithdrawJoinRequest_UNKNOWN_CLAN":
break;
case "Clans_WithdrawJoinRequest_ALREADY_IN_CLAN":
break;
case "Clans_WithdrawJoinRequest_NO_SUCH_INVITATION_EXISTS":
break;
case "DATABASE_CONSTRAINT_FAILURE":
break;
case "SUCCESS":
HideMail();
RefreshScreen();
ConsoleWindow.Trace("c2f_Clans_WithdrawJoinRequest(), resultIdentifier = " + resultIdentifier);
break;
}
if ( resultIdentifier != "SUCCESS" )
{
LobbyInterface.Instance.CreateMessageBox( resultIdentifier );
}
}
public function ShowJoinInvitationMail( clanEntry:MovieClip ):Void
{
mcSelectedEntry = clanEntry;
mcMail.Clear();
mcMail.SetButton( 1, "ACCEPT", Delegate.create(this, AcceptJoinInvitation) );
mcMail.SetButton( 2, "REJECT", Delegate.create(this, RejectJoinInvitation) );
mcMail.SetButton( 3, "CANCEL", Delegate.create(this, HideMail) );
mcMail.SetTitle( "YOU ARE INVITED TO JOIN CLAN " + clanEntry.tfClanName.text );
mcMail.SetToField( clanEntry.tfClanName.text );
mcMail.DisableToField();
mcMail.SetCheckBox( "FAIL IF ALREADY IN CLAN" );
mcMail.swapDepths( getNextHighestDepth() );
mcMail._visible = true;
}
public function AcceptJoinInvitation():Void
{
ConsoleWindow.Trace("trying to accept join invitation... clan name = " + mcMail.GetToField());
ExternalInterface.call("f2c_Clans_AcceptJoinInvitation", mcMail.GetToField(), mcMail.GetSubjectField(), mcMail.GetMsgField(), "0",
mcMail.IsCheckBoxOn());
}
public function c2f_Clans_AcceptJoinInvitation(resultIdentifier:String):Void
{
switch (resultIdentifier)
{
case "Clans_AcceptJoinInvitation_UNKNOWN_CLAN":
break;
case "Clans_AcceptJoinInvitation_NO_SUCH_INVITATION_EXISTS":
break;
case "Clans_AcceptJoinInvitation_ALREADY_IN_DIFFERENT_CLAN":
break;
case "SUCCESS":
HideMail();
RefreshScreen();
break;
}
if ( resultIdentifier != "SUCCESS" )
{
LobbyInterface.Instance.CreateMessageBox( resultIdentifier );
}
}
public function RejectJoinInvitation():Void
{
ConsoleWindow.Trace("RejectJoinInvitation(), clan = " + mcMail.GetToField());
ExternalInterface.call("f2c_Clans_RejectJoinInvitation", mcMail.GetToField, mcMail.GetSubjectField(), mcMail.GetMsgField(), "0"
);
}
public function c2f_Clans_RejectJoinInvitation(resultIdentifier:String):Void
{
switch (resultIdentifier)
{
case "Clans_RejectJoinInvitation_UNKNOWN_CLAN":
break;
case "Clans_RejectJoinInvitation_NO_SUCH_INVITATION_EXISTS":
break;
case "SUCCESS":
HideMail();
RefreshScreen();
break;
}
if ( resultIdentifier != "SUCCESS" )
{
LobbyInterface.Instance.CreateMessageBox( resultIdentifier );
}
}
}

View File

@ -0,0 +1,267 @@
import flash.external.*;
import gfx.controls.TextInput;
import gfx.controls.Button;
class Screens.ClanQueryScreen extends Screen
{
private var clans_GetMemberProperties_clanHandle_EditBox:TextInput;
private var clans_GetMemberProperties_targetHandle_EditBox:TextInput;
private var clanHandle_EditBox:TextInput;
private var clans_GetMemberProperties_Button:Button;
private var clans_GetBlacklist_Button:Button;
private var clans_GetMembers_Button:Button;
private var clans_GetProperties_Button:Button;
private var clans_GetList_Button:Button;
private var clans_DownloadRequestList_Button:Button;
private var clans_DownloadInvitationList_Button:Button;
private var clans_Get_Button:Button;
public function ClanQueryScreen()
{
ConsoleWindow.Trace("Constructing ClanQueryScreen");
mScreenId = ScreenID.CLAN_QUERY;
mScreenTabId = ScreenTab.ID_CLANS;;
}
public function VOnFinishedLoading():Void
{
//Add click event for buttons
// clans_GetProperties_Button.addEventListener("click", this, "f2c_Clans_GetProperties");
clans_GetMemberProperties_Button.addEventListener("click", this, "f2c_Clans_GetMemberProperties");
// clans_Get_Button.addEventListener("click", this, "f2c_Clans_Get");
//clans_DownloadInvitationList_Button.addEventListener("click", this, "f2c_Clans_DownloadInvitationList");
//clans_DownloadRequestList_Button.addEventListener("click", this, "f2c_Clans_DownloadRequestList");
// clans_GetBlacklist_Button.addEventListener("click", this, "f2c_Clans_GetBlacklist");
// clans_GetMembers_Button.addEventListener("click", this, "f2c_Clans_GetMembers");
clans_GetList_Button.addEventListener("click", this, "f2c_Clans_GetList");
//Add callbacks for C++
// ExternalInterface.addCallback("c2f_Clans_GetProperties", this, c2f_Clans_GetProperties);
ExternalInterface.addCallback("c2f_Clans_GetMemberProperties", this, c2f_Clans_GetMemberProperties);
// ExternalInterface.addCallback("c2f_Clans_Get", this, c2f_Clans_Get);
//ExternalInterface.addCallback("c2f_Clans_DownloadInvitationList", this, c2f_Clans_DownloadInvitationList);
//ExternalInterface.addCallback("c2f_Clans_DownloadRequestList", this, c2f_Clans_DownloadRequestList);
// ExternalInterface.addCallback("c2f_Clans_GetBlacklist", this, c2f_Clans_GetBlacklist);
// ExternalInterface.addCallback("c2f_Clans_GetMembers", this, c2f_Clans_GetMembers);
// ExternalInterface.addCallback("c2f_Clans_GetList", this, c2f_Clans_GetList);
super.VOnFinishedLoading();
}
public function f2c_Clans_GetProperties():Void
{
// ExternalInterface.call("f2c_Clans_GetProperties", clanHandle_EditBox.text);
}
public function f2c_Clans_GetMemberProperties():Void
{
ExternalInterface.call("f2c_Clans_GetMemberProperties", clans_GetMemberProperties_clanHandle_EditBox.text,
clans_GetMemberProperties_targetHandle_EditBox.text);
}
public function f2c_Clans_Get():Void
{
// ExternalInterface.call("f2c_Clans_Get");
}
public function f2c_Clans_DownloadInvitationList():Void
{
ExternalInterface.call("f2c_Clans_DownloadInvitationList");
}
public function f2c_Clans_DownloadRequestList():Void
{
ExternalInterface.call("f2c_Clans_DownloadRequestList");
}
/* public function f2c_Clans_GetBlacklist():Void
{
ExternalInterface.call("f2c_Clans_GetBlacklist", clanHandle_EditBox.text);
}
*/
public function f2c_Clans_GetMembers():Void
{
// ExternalInterface.call("f2c_Clans_GetMembers", clanHandle_EditBox.text);
}
public function f2c_Clans_GetList():Void
{
// ExternalInterface.call("f2c_Clans_GetList");
}
/* public function c2f_Clans_GetProperties(resultIdentifier:String, clanDescription:String):Void
{
switch (resultIdentifier)
{
case "Clans_GetProperties_UNKNOWN_CLAN":
break;
case "DATABASE_CONSTRAINT_FAILURE":
break;
case "SUCCESS":
// clanDescription should be a valid string
break;
}
}*/
public function c2f_Clans_GetMemberProperties(resultIdentifier:String, description:String, rank:Number, isSubleader:Boolean,
clanMemberState:String, banReason:String):Void
{
switch (resultIdentifier)
{
case "Clans_GetMemberProperties_TARGET_NOT_IN_CLAN":
break;
case "DATABASE_CONSTRAINT_FAILURE":
break;
case "SUCCESS":
break;
}
if ( resultIdentifier != "SUCCESS" )
{
LobbyInterface.Instance.CreateMessageBox( resultIdentifier );
}
switch (clanMemberState)
{
case "CMD_UNDEFINED":
break;
case "CMD_ACTIVE":
break;
case "CMD_BANNED":
break;
case "CMD_JOIN_INVITED":
break;
case "CMD_JOIN_REQUESTED":
break;
}
}
/*
public function c2f_Clans_Get():Void
{
var resultIdentifier:String = arguments[0];
switch (resultIdentifier)
{
case "DATABASE_CONSTRAINT_FAILURE":
break;
case "SUCCESS":
break;
}
var numClansReturned:Number = arguments[1];
var argumentIndex:Number=2;
for (var i:Number=0; i < numClansReturned; i++)
{
var clanName:String = arguments[argumentIndex++];
var description:String = arguments[argumentIndex++];
var clanLeader:String = arguments[argumentIndex++];
var clanMembersOtherThanLeader:Number = arguments[argumentIndex++];
for (var j:Number=0; j < clanMembersOtherThanLeader; j++)
{
var clanMemberName:String = arguments[argumentIndex++];
}
}
}*/
/*
public function c2f_Clans_DownloadInvitationList():Void
{
var resultIdentifier:String = arguments[0];
switch (resultIdentifier)
{
case "DATABASE_CONSTRAINT_FAILURE":
break;
case "SUCCESS":
break;
}
var numResults:Number = arguments.length-1;
for (var i:Number=0; i < numResults; i++)
{
var clanHandle:String = arguments[1+i];
}
}
public function c2f_Clans_DownloadRequestList():Void
{
var resultIdentifier:String = arguments[0];
switch (resultIdentifier)
{
case "DATABASE_CONSTRAINT_FAILURE":
break;
case "SUCCESS":
break;
}
var joinRequestsToMyClan:Number = arguments[1];
var joinRequestsFromMe:Number = arguments[2];
for (var i:Number=0; i < joinRequestsToMyClan; i++)
{
var targetClan:String = arguments[3+i*3+0];
var dateSent:String = arguments[3+i*3+1];
var joinRequestSender:String = arguments[2+i*3+2];
}
for (var i:Number=0; i < joinRequestsFromMe; i++)
{
var targetClan:String = arguments[3+i*3+joinRequestsToMyClan*3+0];
var dateSent:String = arguments[3+i*3+joinRequestsToMyClan*3+1];
var joinRequestSender:String = arguments[3+i*3+joinRequestsToMyClan*3+2];
}
}*/
/* public function c2f_Clans_GetBlacklist(resultIdentifier:String):Void
{
switch (resultIdentifier)
{
case "Clans_GetBlacklist_UNKNOWN_CLAN":
break;
case "DATABASE_CONSTRAINT_FAILURE":
break;
case "SUCCESS":
break;
}
if ( resultIdentifier != "SUCCESS" )
{
LobbyInterface.Instance.CreateMessageBox( resultIdentifier );
}
}*/
/* public function c2f_Clans_GetMembers():Void
{
var resultIdentifier:String = arguments[0];
switch (resultIdentifier)
{
case "Clans_GetMembers_UNKNOWN_CLAN":
break;
case "DATABASE_CONSTRAINT_FAILURE":
break;
case "SUCCESS":
break;
}
var clanLeader:String = arguments[1];
var clanMembersOtherThanLeader:Number = arguments.length-2;
for (var i:Number=0; i < clanMembersOtherThanLeader; i++)
{
var clanMember:String = arguments[2+i];
}
}*/
/* public function c2f_Clans_GetList():Void
{
var resultIdentifier:String = arguments[0];
switch (resultIdentifier)
{
case "DATABASE_CONSTRAINT_FAILURE":
break;
case "SUCCESS":
break;
}
var numClanNames = arguments.length-1;
for (var i:Number=0; i < numClanNames; i++)
{
var clanName:String = arguments[1+i];
}
} */
}

View File

@ -0,0 +1,202 @@
import flash.external.*;
import gfx.controls.TextInput;
import gfx.controls.Button;
import Screens.ClanGeneralScreen;
class Screens.ClanRootScreen extends ScreenWithPageNavigator
{
private var btnCreateClan:Button;
private var btnPending:Button;
private var btnMyClans:Button;
private var btnSearch:Button;
private var tiSearch:TextInput;
private var mClanNames:Array;
private static var mInstance:ClanRootScreen;
public function ClanRootScreen()
{
ConsoleWindow.Trace("Constructing ClanRootScreen");
mScreenId = ScreenID.CLAN_ROOT;
mScreenTabId = ScreenTab.ID_CLANS;
mEntriesPerPage = 10;
mFirstEntryX = 435;
mFirstEntryY = -280;
mDeltaY = 10;
mInstance = this;
}
public static function get Instance():ClanRootScreen { return mInstance; }
public function VOnFinishedLoading():Void
{
//Add click event for buttons
//btnCreateClan.addEventListener("click", this, "SetStateToClanFunctionsGeneral");
btnCreateClan.addEventListener("click", this, "CreateClan");
btnPending.addEventListener("click", this, "SetStateToClanFunctionsInvolvingEmail");
btnMyClans.addEventListener("click", this, "GoToMyClans");
btnSearch.addEventListener("click", this, "Search");
//Add callbacks for C++
ExternalInterface.addCallback("c2f_Clans_GetList", this, c2f_Clans_GetList);
super.VOnFinishedLoading();
}
public function OnShow():Void
{
super.OnShow();
if ( mMovieClipList.length > 0 )
{
CleanUpMoveClipList( mMovieClipList );
}
mMovieClipList = new Array();
mCurrentPage = 0;
GoToPage( 1 );
ExternalInterface.call("f2c_Clans_GetList");
}
public function CreateClan():Void
{
LobbyInterface.Instance.ShowScreen( ScreenID.CLAN_CREATE );
}
public function GoToMyClans():Void
{
LobbyInterface.Instance.ShowScreen( ScreenID.CLAN_MY_CLANS );
}
public function SetStateToClanFunctionsGeneral():Void
{
//_root.gotoAndStop("ClanFunctionsGeneral");
LobbyInterface.Instance.ShowScreen( ScreenID.CLAN_GENERAL );
}
public function SetStateToClanFunctionsInvolvingEmail():Void
{
//_root.gotoAndStop("ClanFunctionsInvolvingEmail");
//LobbyInterface.Instance.ShowScreen( ScreenID.CLAN_EMAIL );
LobbyInterface.Instance.ShowScreen( ScreenID.CLAN_INVITED_REQUESTED );
}
public function SetStateToClanFunctionsQuery():Void
{
//_root.gotoAndStop("ClanFunctionsQuery");
LobbyInterface.Instance.ShowScreen( ScreenID.CLAN_QUERY );
}
public function Search():Void
{
var targetClan:String = tiSearch.text.toLowerCase();
if ( targetClan.length > 0 )
{
if ( mMovieClipList.length > 0 )
{
CleanUpMoveClipList( mMovieClipList );
}
mMovieClipList = new Array();
mCurrentPage = 0;
GoToPage( 1 );
ConsoleWindow.Trace("Search()... " + targetClan);
var length:Number = mClanNames.length;
for ( var i:Number = 0; i < length; i++ )
{
var clan:String = mClanNames[i].toLowerCase();
//ConsoleWindow.Trace("... looking at " + clan);
if ( clan.length >= targetClan.length )
{
var length2:Number = clan.length;
var lettersFound:Number = 0;
for ( var m:Number = 0; m < length2; m++ )
{
//ConsoleWindow.Trace("... letter " + clan.charAt(m));
//ConsoleWindow.Trace("... comparing " + targetClan.charAt(lettersFound) + " and " + clan.charAt(m));
if ( targetClan.charAt(lettersFound) == clan.charAt(m) )
{
lettersFound++;
//ConsoleWindow.Trace("... found " + lettersFound);
if ( lettersFound == targetClan.length )
{
//ConsoleWindow.Trace("Adding entry! " + clan);
AddListEntry( clan, 1 );
m = length2;
}
}
else
{
if ( lettersFound > 0 )
{
m--;
}
lettersFound = 0;
}
}
}
}
OnMoveClipListUpdated();
ShowPage(1);
}
}
public function c2f_Clans_GetList():Void
{
var resultIdentifier:String = arguments[0];
ConsoleWindow.Trace("c2f_Clans_GetList, resultIdentifier = " + resultIdentifier);
switch (resultIdentifier)
{
case "DATABASE_CONSTRAINT_FAILURE":
break;
case "SUCCESS":
{
mClanNames = new Array();
var numClanNames = arguments.length-1;
for (var i:Number=0; i < numClanNames; i++)
{
var clanName:String = arguments[1+i];
ConsoleWindow.Trace("clanName = " + clanName);
AddListEntry(clanName);
mClanNames.push( clanName );
}
OnMoveClipListUpdated();
ShowPage(1);
break;
}
}
if ( resultIdentifier != "SUCCESS" )
{
LobbyInterface.Instance.CreateMessageBox( resultIdentifier );
}
}
private function AddListEntry( clanToAdd:String, _profileImageIndex:Number ):MovieClip
{
var clanEntry:MovieClip = attachMovie("ClanListEntry", "mcClanEntry" + mMovieClipList.length, getNextHighestDepth() );
clanEntry._visible = false;
clanEntry.tfClanName.text = clanToAdd;
mMovieClipList.push( clanEntry );
ConsoleWindow.Trace("Adding entry: " + clanEntry);
var self:ClanRootScreen = this;
clanEntry.onPress = function() { self.OnSelectClan( this ); }
return clanEntry;
}
public function OnSelectClan( clanEntry:MovieClip ):Void
{
ConsoleWindow.Trace("clanRootScreen.OnSelectClan, clan = " + clanEntry._name);
ClanGeneralScreen.Instance.SetClanName( clanEntry.tfClanName.text );
LobbyInterface.Instance.ShowScreen( ScreenID.CLAN_GENERAL );
}
}

View File

@ -0,0 +1,35 @@
import flash.external.*;
import gfx.controls.TextInput;
import gfx.controls.Button;
class Screens.ConnectingToServerScreen extends Screen
{
private var failureBackButton:Button;
public function ConnectingToServerScreen()
{
ConsoleWindow.Trace("Constructing ConnectingToServerScreen");
mScreenId = ScreenID.CONNECTING_TO_SERVER;
mScreenTabId = ScreenTab.ID_CONNECTION;
}
public function VOnFinishedLoading():Void
{
failureBackButton.visible=false;
//Add click event for buttons
failureBackButton.addEventListener("click", this, "onPressedFailureBack");
super.VOnFinishedLoading();
}
function onPressedFailureBack():Void
{
//_root.gotoAndPlay("Disconnected");
LobbyInterface.Instance.ShowScreen( ScreenID.CONNECTION );
}
}

View File

@ -0,0 +1,94 @@
import flash.external.*;
import gfx.controls.TextInput;
import gfx.controls.Button;
import gfx.controls.ProgressBar;
import mx.transitions.easing.None;
import mx.transitions.Tween;
class Screens.ConnectionScreen extends Screen
{
private var mcConnect:Button;
private var mcCancel:Button;
//private var mcProgress:ProgressBar;
private var mcProgressBar:MovieClip;
private var tfConnectionFailed:TextField;
private var tfAddress:TextField;
private var tfPort:TextField;
public function ConnectionScreen()
{
ConsoleWindow.Trace("Constructing ConnectionScreen");
mScreenId = ScreenID.CONNECTION;
mScreenTabId = ScreenTab.ID_CONNECTION;
tfConnectionFailed._visible = false;
}
public function VOnFinishedLoading():Void
{
mcConnect.addEventListener("click", this, "f2c_Connect");
//Add callbacks for C++
ExternalInterface.addCallback("c2f_NotifyConnectingToServer", this, c2f_NotifyConnectingToServer);
ExternalInterface.addCallback("c2f_NotifyConnectionResultFailure", this, c2f_NotifyConnectionResultFailure);
ExternalInterface.addCallback("c2f_NotifyConnectionResultSuccess", this, c2f_NotifyConnectionResultSuccess);
super.VOnFinishedLoading();
}
public function OnShow():Void
{
//ConsoleWindow.Trace( mcProgressBar.mcBar);
mcProgressBar.mcBar._xscale = 0;
}
public function f2c_Connect():Void
{
new Tween( mcProgressBar.mcBar, "_xscale", None.easeNone, 0, 100, 6, true );
//mcProgress.setProgress( 2, 6 );
ConsoleWindow.Trace("connecting to server");
//ExternalInterface.call("f2c_Connect", "127.0.0.1", "60481");
ExternalInterface.call("f2c_Connect", tfAddress.text, tfPort.text);
if ( LobbyInterface.Instance.IsInFlashMode() )
{
LobbyInterface.Instance.ShowScreen( ScreenID.LOGIN );
}
}
public function c2f_NotifyConnectingToServer():Void
{
//_root.gotoAndPlay("ConnectingToServer");
//LobbyInterface.Instance.ShowScreen( ScreenID.CONNECTING_TO_SERVER );
}
function c2f_NotifyConnectionResultFailure(resultIdentifier:String):Void
{
switch (resultIdentifier)
{
case "CONNECTION_ATTEMPT_FAILED":
break;
case "ALREADY_CONNECTED":
break;
case "NO_FREE_INCOMING_CONNECTIONS":
break;
case "RSA_PUBLIC_KEY_MISMATCH":
break;
case "CONNECTION_BANNED":
break;
case "INVALID_PASSWORD":
break;
}
tfConnectionFailed.text=resultIdentifier;
tfConnectionFailed._visible=true;
}
function c2f_NotifyConnectionResultSuccess():Void
{
ConsoleWindow.Trace("ConnectionScreen... calling login");
LobbyInterface.Instance.ShowScreen( ScreenID.LOGIN );
}
}

View File

@ -0,0 +1,89 @@
import flash.external.*;
import gfx.controls.TextInput;
import gfx.controls.TextArea;
import gfx.controls.Button;
import mx.utils.Delegate;
import gfx.controls.CheckBox;
class Screens.CreateClan extends Screen
{
private var mcProfileImage:MovieClip;
private var tiName:TextInput;
private var taDescription:TextArea;
private var cbInvitationOnly:CheckBox;
private var btnCancel:Button;
private var btnCreate:Button;
private var btnChangeLogo:Button;
public function CreateClan()
{
ConsoleWindow.Trace("Constructing CreateClan");
mScreenId = ScreenID.CLAN_CREATE;
mScreenTabId = ScreenTab.ID_CLANS;
}
public function VOnFinishedLoading():Void
{
//Add click event for buttons
btnCancel.addEventListener("click", this, "Cancel");
btnCreate.addEventListener("click", this, "Create");
btnChangeLogo.addEventListener("click", this, "ChangeLogo");
//Add callbacks for C++
ExternalInterface.addCallback("c2f_Clans_Create", this, c2f_Clans_Create);
super.VOnFinishedLoading();
}
public function OnShow():Void
{
}
public function Cancel():Void
{
LobbyInterface.Instance.ShowScreen( ScreenID.CLAN_ROOT );
}
public function Create():Void
{
ExternalInterface.call("f2c_Clans_Create", tiName.text,
false,
cbInvitationOnly.selected,
taDescription.text);
tiName.text = "";
taDescription.text = "";
cbInvitationOnly.selected = false;
}
public function c2f_Clans_Create(resultIdentifier:String):Void
{
switch (resultIdentifier)
{
case "PROFANITY_FILTER_CHECK_FAILED":
break;
case "Clans_Create_CLAN_HANDLE_IN_USE":
break;
case "DATABASE_CONSTRAINT_FAILURE":
break;
case "Clans_Create_ALREADY_IN_A_CLAN":
break;
case "SUCCESS":
LobbyInterface.Instance.ShowScreen( ScreenID.CLAN_MY_CLANS );
break;
default:
break;
}
if ( resultIdentifier != "SUCCESS" )
{
LobbyInterface.Instance.CreateMessageBox( resultIdentifier );
}
}
public function ChangeLogo():Void
{
LobbyInterface.Instance.ShowScreen( ScreenID.CHANGE_PHOTO );
}
}

View File

@ -0,0 +1,328 @@
import flash.external.*;
import gfx.controls.TextInput;
import gfx.controls.Button;
import gfx.controls.CheckBox;
import mx.utils.Delegate;
class Screens.EmailScreen extends ScreenWithPageNavigator
{
private var emailSendRecipient0EditBox:TextInput;
private var emailSendRecipient1EditBox:TextInput;
private var emailSendRecipient2EditBox:TextInput;
private var emailSendRecipient3EditBox:TextInput;
private var emailSendRecipient4EditBox:TextInput;
private var emailSendRecipient5EditBox:TextInput;
private var emailSendRecipient6EditBox:TextInput;
private var emailSendRecipient7EditBox:TextInput;
private var emailSubjectEditBox:TextInput;
private var emailBodyEditBox:TextInput;
private var emailStatusEditBox:TextInput;
private var deleteEmailIDEditBox:TextInput;
private var updateEmailIDEditBox:TextInput;
private var newStatusFlagEditbox:TextInput;
private var sendEmailButton:Button;
private var getEmailsButton:Button;
private var deleteEmailButton:Button;
private var setEmailStatusButton:Button;
private var updateStatusFlagCheckbox:CheckBox;
private var updateMarkedReadCheckbox:CheckBox;
private var isNowMarkedReadCheckbox:CheckBox;
private var btnCompose:Button;
private var btnDelete:Button;
private var btnMarkUnread:Button;
private var mcMail:Mail;
public function EmailScreen()
{
ConsoleWindow.Trace("Constructing EmailScreen");
mScreenId = ScreenID.EMAIL;
mScreenTabId = ScreenTab.ID_EMAIL;
mEntriesPerPage = 10;
mFirstEntryX = 482;
mFirstEntryY = -265;
mDeltaY = 10;
}
public function VOnFinishedLoading():Void
{
//Add click event for buttons
//sendEmailButton.addEventListener("click", this, "f2c_SendEmail");
//deleteEmailButton.addEventListener("click", this, "f2c_DeleteEmail");
//setEmailStatusButton.addEventListener("click", this, "f2c_UpdateEmail");
//getEmailsButton.addEventListener("click", this, "f2c_GetEmails");
btnCompose.addEventListener("click", this, "ComposeMail");
//btnDelete.addEventListener("click", this, "f2c_DeleteEmail");
//btnMarkUnread.addEventListener("click", this, "f2c_GetEmails");
btnDelete.addEventListener("click", this, "DeleteSelectedEmails");
//Add callbacks for C++
ExternalInterface.addCallback("c2f_SendEmail", this, c2f_SendEmail);
ExternalInterface.addCallback("c2f_DeleteEmail", this, c2f_DeleteEmail);
ExternalInterface.addCallback("c2f_UpdateEmail", this, c2f_UpdateEmail);
ExternalInterface.addCallback("c2f_GetEmails", this, c2f_GetEmails);
mcMail._visible = false;
super.VOnFinishedLoading();
}
public function OnShow():Void
{
super.OnShow();
if ( mMovieClipList.length > 0 )
{
CleanUpMoveClipList( mMovieClipList );
}
mMovieClipList = new Array();
mCurrentPage = 0;
GoToPage( 1 );
f2c_GetEmails();
if ( LobbyInterface.Instance.IsInFlashMode() )
{
c2f_GetEmails();
}
}
function f2c_SendEmail():Void
{
if ( mcMail.GetToField().length > 0 )
{
ExternalInterface.call("f2c_SendEmail",
mcMail.GetToField(),//emailSendRecipient0EditBox.text, emailSendRecipient1EditBox.text, emailSendRecipient2EditBox.text,
"", "", "", "", "", "", "",//emailSendRecipient3EditBox.text, emailSendRecipient4EditBox.text, emailSendRecipient5EditBox.text,
//emailSendRecipient6EditBox.text, emailSendRecipient7EditBox.text,
mcMail.GetSubjectField(), mcMail.GetMsgField(),//emailSubjectEditBox.text, emailBodyEditBox.text,
""//emailStatusEditBox.text
);
HideMail();
}
}
function c2f_SendEmail(resultIdentifier:String):Void
{
switch (resultIdentifier)
{
case "SUCCESS":
ConsoleWindow.Trace("c2f_SendEmail: " + resultIdentifier);
break;
}
if ( resultIdentifier != "SUCCESS" )
{
LobbyInterface.Instance.CreateMessageBox( resultIdentifier );
}
}
function f2c_DeleteEmail( emailID:Number ):Void
{
ConsoleWindow.Trace("f2c_DeleteEmail(), emailID = " + emailID);
if ( emailID != null )
{
ExternalInterface.call("f2c_DeleteEmail", String(emailID));
}
}
function c2f_DeleteEmail(resultIdentifier:String):Void
{
switch (resultIdentifier)
{
case "DATABASE_CONSTRAINT_FAILURE":
break;
case "Emails_Delete_UNKNOWN_EMAIL_ID":
break;
case "Emails_Delete_ALREADY_DELETED":
break;
case "SUCCESS":
ConsoleWindow.Trace("c2f_DeleteEmail()... resultIdentifier = " + resultIdentifier);
break;
}
if ( resultIdentifier != "SUCCESS" )
{
LobbyInterface.Instance.CreateMessageBox( resultIdentifier );
}
}
function f2c_UpdateEmail():Void
{
ExternalInterface.call("f2c_UpdateEmail", updateEmailIDEditBox.text,
updateStatusFlagCheckbox.selected, updateMarkedReadCheckbox.selected,
newStatusFlagEditbox.text, isNowMarkedReadCheckbox.selected
);
}
function c2f_UpdateEmail(resultIdentifier:String):Void
{
switch (resultIdentifier)
{
case "DATABASE_CONSTRAINT_FAILURE":
break;
case "Emails_SetStatus_UNKNOWN_EMAIL_ID":
break;
case "Emails_SetStatus_WAS_DELETED":
break;
case "SUCCESS":
break;
}
if ( resultIdentifier != "SUCCESS" )
{
LobbyInterface.Instance.CreateMessageBox( resultIdentifier );
}
}
function f2c_GetEmails():Void
{
ExternalInterface.call("f2c_GetEmails");
}
public function DeleteEmail( emailEntry:MovieClip ):Void
{
}
public function DeleteSelectedEmails():Void
{
var startIndex:Number = mCurrentPage * mEntriesPerPage - ( mEntriesPerPage );
var endIndex:Number = startIndex + mEntriesPerPage;
var listForRemoval:Array = new Array();;
for ( var i:Number = 0; i < mEntriesPerPage; i++ )
{
var mcEntry:MovieClip = mMovieClipList[startIndex+i];
if ( !mcEntry )
{
break;
}
if ( mcEntry.cbSelected.selected )
{
//RemoveEntryFromList(mcEntry, null, true);
listForRemoval.push(mcEntry);
}
}
var length:Number = listForRemoval.length;
for ( var n:Number = 0; n < length; n++ )
{
ConsoleWindow.Trace("Removing: " + mcEntry);
f2c_DeleteEmail( listForRemoval[n].emailID );
RemoveEntryFromList( listForRemoval[n], null, true );
}
}
function c2f_GetEmails():Void
{
ConsoleWindow.Trace("c2f_GetEmails: " );
var numEmails:Number = arguments.length/9;
for (var i:Number=0; i < numEmails; i++)
{
var sender:String = arguments[i*9+0];
var recipient:String = arguments[i*9+1];
var subject:String = arguments[i*9+2];
var body:String = arguments[i*9+3];
var status:Number = arguments[i*9+4];
var wasSendByMe:Boolean = arguments[i*9+5];
var wasReadByMe:Boolean = arguments[i*9+6];
var emailID:Number = arguments[i*9+7];
var creationDate:String = arguments[i * 9 + 8];
ConsoleWindow.Trace("sender: " + sender + ", recipient: " + recipient + ", subject: " + subject + ", body: " + body + ", status: " + status + ", wasSendByMe: " + wasSendByMe
+ ", wasReadByMe: " + wasReadByMe + ", emailID: " + emailID + ", creationDate: " + creationDate);
AddListEntry( sender, recipient, subject, body, creationDate, "", emailID );
}
//TODO: remove this once c++ sends down proper data
for ( var n:Number = 0; n < 15; n++ )
{
AddListEntry( "from user" + mMovieClipList.length, "??", "Hi!", "lkajs;ldf", "mm/day/year" );
}
OnMoveClipListUpdated();
ShowPage(1);
}
private function AddListEntry( usernameFrom:String, recipient:String, subject:String, body:String, date:String, time:String, emailID:Number ):MovieClip
{
var userEntry:MovieClip = attachMovie("EmailListEntry", "emailEntry" + mMovieClipList.length, getNextHighestDepth() );
userEntry._visible = false;
userEntry.tfUsername.text = usernameFrom;
userEntry.tfSubject.text = subject;
userEntry.tfDate.text = date;
userEntry.emailID = emailID;
userEntry.bodyText = body;
mMovieClipList.push( userEntry );
var self:EmailScreen = this;
userEntry.mcMail.onPress = function() { self.ReadMail( this._parent.tfUsername.text, this._parent.tfSubject.text, this._parent.bodyText, this._parent ); }
return userEntry;
}
private function OnShowMovieClipEntry( mcEntry:MovieClip, index:Number ):Void
{
super.OnShowMovieClipEntry( mcEntry, index );
mcEntry.cbSelected.selected = false;
}
public function ComposeMail():Void
{
mcMail.Clear();
mcMail.SetMode( Mail.cMode1 );
mcMail.SetButton( 1, "CANCEL", Delegate.create(this, HideMail) );
mcMail.SetButton( 2, "SEND", Delegate.create(this, f2c_SendEmail) );
mcMail.HideButton( 3 );
mcMail.SetTitle( "COMPOSE MESSAGE" );
mcMail.SetToDisplayText( "TO:" );
mcMail.SetToField( );
mcMail.swapDepths( getNextHighestDepth() );
mcMail._visible = true;
}
public function ReadMail( username:String, subject:String, body:String, mailEntry:MovieClip ):Void
{
mcMail.Clear();
mcMail.SetMode( Mail.cMode2 );
mcMail.SetButton( 1, "DELETE", Delegate.create(this, DeleteMail) );
mcMail.SetButton( 2, "CLOSE", Delegate.create(this, HideMail) );
mcMail.SetButton( 3, "REPLY", Delegate.create(this, ComposeMail) );
mcMail["mailEntry"] = mailEntry;
mcMail.SetTitle("RECEIVED MESSAGE:" );
mcMail.SetUsername( username );
mcMail.SetSubjectField( subject );
mcMail.SetMsgField( body );
mcMail.swapDepths( getNextHighestDepth() );
mcMail._visible = true;
}
public function HideMail():Void
{
mcMail._visible = false;
}
public function DeleteMail( ):Void
{
mcMail._visible = false;
var mailEntry:MovieClip = mcMail["mailEntry"];
if ( mailEntry )
{
f2c_DeleteEmail( mailEntry.emailID );
RemoveEntryFromList( mailEntry );
}
else
{
ConsoleWindow.Trace("DeleteMail, entry = " + mailEntry);
}
}
}

View File

@ -0,0 +1,89 @@
import flash.external.*;
import gfx.controls.TextInput;
import gfx.controls.Button;
class Screens.EnterCDKeyScreen extends Screen
{
private var enterCdKeyOKButton:Button;
private var cancelButton:Button;
private var cdKeyEditBox:TextInput;
private var tfFailedMsg:TextField;
public function EnterCDKeyScreen()
{
ConsoleWindow.Trace("Constructing EnterCDKeyScreen");
mScreenId = ScreenID.ENTER_CD_KEY;
mScreenTabId = ScreenTab.ID_CD_KEY;
tfFailedMsg._visible = false;
}
public function VOnFinishedLoading():Void
{
//Add click event for buttons
enterCdKeyOKButton.addEventListener("click", this, "f2c_CheckCDKey");
cancelButton.addEventListener("click", this, "Cancel");
//Add callbacks for C++
ExternalInterface.addCallback("c2f_CheckCDKeyResult", this, c2f_CheckCDKeyResult);
super.VOnFinishedLoading();
}
public function f2c_CheckCDKey():Void
{
tfFailedMsg._visible = false;
ConsoleWindow.Trace("cdKeyEditBox.text = " + cdKeyEditBox.text);
ExternalInterface.call("f2c_CheckCDKey", cdKeyEditBox.text);
}
public function Cancel():Void
{
ConsoleWindow.Trace("EnterCDKeyScreen calling login screen");
LobbyInterface.Instance.ShowScreen( ScreenID.LOGIN );
}
public function c2f_CheckCDKeyResult(reasonIdentifier:String, userUsedBy:String, activationDate:String, wasStolen:Boolean, usable:Boolean):Void
{
switch (reasonIdentifier)
{
case "SUCCESS":
if (usable==true)
{
// if usable==true, we're ok
ConsoleWindow.Trace("RegisterAccount?");
//_root.gotoAndPlay("RegisterAccount");
LobbyInterface.Instance.ShowScreen( ScreenID.REGISTER_ACCOUNT_PERSONAL );
}
else if (wasStolen==true)
{
ConsoleWindow.Trace("account stolen?");
// If wasStolen==true, this cd key was stolen. Display appropriate error message and ask user to reenter
}
else
{
ConsoleWindow.Trace("cd key already in used");
// CD key already used. Display appropriate error message and ask user to reenter
}
break;
case "CDKey_GetStatus_TITLE_NOT_IN_USE":
// Internal error, just display bad title
break;
case "CDKey_GetStatus_UNKNOWN_CD_KEY":
tfFailedMsg.text = "Unknown CD KEY";
//tfFailedMsg._visible = true;
// Most common case, CD key was mistyped. Display appropriate error message and ask user to reenter
break;
case "REQUIRED_TEXT_IS_EMPTY":
tfFailedMsg.text = "PLEASE ENTER CD KEY";
//tfFailedMsg._visible = true;
// Field was blank
break;
}
if ( reasonIdentifier != "SUCCESS" )
{
LobbyInterface.Instance.CreateMessageBox( reasonIdentifier );
}
}
}

View File

@ -0,0 +1,320 @@
import flash.external.*;
import gfx.controls.TextInput;
import gfx.controls.Button;
import mx.utils.Delegate;
class Screens.FriendScreen extends ScreenWithPageNavigator
{
private var targetHandleEditBox:TextInput;
private var subjectEditBox:TextInput;
private var bodyEditBox:TextInput;
private var emailStatusEditBox:TextInput;
private var sendInviteButton:Button;
private var acceptInviteButton:Button;
private var rejectInviteButton:Button;
private var removeFriendButton:Button;
private var getInvitesButton:Button;
private var getFriendsButton:Button;
private var btnPossibleFriends:Button;
private var mcProfileImage:MovieClip;
private var tfUsername:TextField;
private var mcMail:Mail;
public function FriendScreen()
{
ConsoleWindow.Trace("Constructing FriendScreen");
mScreenId = ScreenID.FRIENDS;
mScreenTabId = ScreenTab.ID_FRIENDS;
mEntriesPerPage = 10;
mFirstEntryX = 440;
mFirstEntryY = -245;
mDeltaY = 10;
}
public function VOnFinishedLoading():Void
{
//Add click event for buttons
sendInviteButton.addEventListener("click", this, "ShowInvitationMail");
acceptInviteButton.addEventListener("click", this, "f2c_AcceptInvite");
rejectInviteButton.addEventListener("click", this, "f2c_RejectInvite");
removeFriendButton.addEventListener("click", this, "f2c_RemoveFriend");
getInvitesButton.addEventListener("click", this, "f2c_GetFriendInvites");
//getFriendsButton.addEventListener("click", this, "f2c_GetFriends");
btnPossibleFriends.addEventListener("click", this, "ShowPossibleFriends");
//Add callbacks for C++
ExternalInterface.addCallback("c2f_SendInviteResult", this, c2f_SendInviteResult);
ExternalInterface.addCallback("c2f_AcceptInviteResult", this, c2f_AcceptInviteResult);
ExternalInterface.addCallback("c2f_RejectInviteResult", this, c2f_RejectInviteResult);
ExternalInterface.addCallback("c2f_RemoveFriendResult", this, c2f_RemoveFriendResult);
//ExternalInterface.addCallback("c2f_GetFriendInvites", this, c2f_GetFriendInvites);
ExternalInterface.addCallback("c2f_GetFriends", this, c2f_GetFriends);
mcMail._visible = false;
super.VOnFinishedLoading();
}
public function OnShow():Void
{
super.OnShow();
if ( !mcProfileImage.mcImageContainer.mcImage )
{
var imageIndex:Number = LobbyInterface.Instance.GetProfileImageIndex();
mcProfileImage.attachMovie( "ProfileImage" + imageIndex, "mcImage", mcProfileImage.getNextHighestDepth() );
}
tfUsername.text = LobbyInterface.Instance.GetUsername();
if ( mMovieClipList.length > 0 )
{
CleanUpMoveClipList( mMovieClipList );
}
mMovieClipList = new Array();
mCurrentPage = 0;
GoToPage( 1 );
f2c_GetFriends();
//mIsWaitingForResponseFromServer = false;
if ( LobbyInterface.Instance.IsInFlashMode() )
{
c2f_GetFriends();
}
}
public function ShowInvitationMail():Void
{
mcMail.Clear();
mcMail.SetButton( 1, "CANCEL", Delegate.create(this, HideMail) );
mcMail.SetButton( 2, "SEND", Delegate.create(this, f2c_SendInvite) );
mcMail.SetTitle( "ASK " + targetHandleEditBox.text + " TO BE FRIENDS:" );
mcMail.SetToField( targetHandleEditBox.text );
mcMail.DisableToField();
mcMail.swapDepths( getNextHighestDepth() );
mcMail._visible = true;
}
public function ShowFriendMail( friendName:String ):Void
{
mcMail.Clear();
mcMail.SetButton( 1, "CANCEL", Delegate.create(this, HideMail) );
mcMail.SetButton( 2, "SEND", Delegate.create(this, f2c_SendInvite) );
mcMail.SetTitle( "COMPOSE MESSAGE" );
mcMail.SetToField( friendName );
mcMail.DisableToField();
mcMail.swapDepths( getNextHighestDepth() );
mcMail._visible = true;
}
public function HideMail():Void
{
mcMail._visible = false;
}
public function f2c_SendInvite():Void
{
ConsoleWindow.Trace("Attempting to send invitation: name = " + mcMail.GetToField() + ", subject = " + mcMail.GetSubjectField() + ", msg = " + mcMail.GetMsgField());
ExternalInterface.call("f2c_SendInvite", mcMail.GetToField(), mcMail.GetSubjectField(), mcMail.GetMsgField(), "0");
HideMail();
}
public function c2f_SendInviteResult(resultIdentifier:String):Void
{
switch (resultIdentifier)
{
case "Friends_SendInvite_UNKNOWN_TARGET_HANDLE":
break;
case "Friends_SendInvite_CANNOT_PERFORM_ON_SELF":
break;
case "DATABASE_CONSTRAINT_FAILURE":
break;
case "Friends_SendInvite_ALREADY_SENT_INVITE":
break;
case "Friends_SendInvite_ALREADY_FRIENDS":
break;
case "SUCCESS":
ConsoleWindow.Trace("c2f_SendInviteResult: " + resultIdentifier);
break;
}
if ( resultIdentifier != "SUCCESS" )
{
LobbyInterface.Instance.CreateMessageBox( resultIdentifier );
}
}
public function f2c_AcceptInvite():Void
{
ExternalInterface.call("f2c_AcceptInvite", targetHandleEditBox.text, subjectEditBox.text, bodyEditBox.text, emailStatusEditBox.text);
}
public function c2f_AcceptInviteResult(resultIdentifier:String):Void
{
switch (resultIdentifier)
{
case "Friends_AcceptInvite_UNKNOWN_TARGET_HANDLE":
break;
case "Friends_AcceptInvite_CANNOT_PERFORM_ON_SELF":
break;
case "DATABASE_CONSTRAINT_FAILURE":
break;
case "Friends_AcceptInvite_NO_INVITE":
break;
case "Friends_AcceptInvite_NO_INVITE":
break;
case "SUCCESS":
break;
}
if ( resultIdentifier != "SUCCESS" )
{
LobbyInterface.Instance.CreateMessageBox( resultIdentifier );
}
}
public function f2c_RejectInvite():Void
{
ExternalInterface.call("f2c_RejectInvite", targetHandleEditBox.text, subjectEditBox.text, bodyEditBox.text, emailStatusEditBox.text);
}
public function c2f_RejectInviteResult(resultIdentifier:String):Void
{
switch (resultIdentifier)
{
case "Friends_RejectInvite_UNKNOWN_TARGET_HANDLE":
break;
case "Friends_RejectInvite_CANNOT_PERFORM_ON_SELF":
break;
case "DATABASE_CONSTRAINT_FAILURE":
break;
case "Friends_RejectInvite_NO_INVITE":
break;
case "SUCCESS":
break;
}
if ( resultIdentifier != "SUCCESS" )
{
LobbyInterface.Instance.CreateMessageBox( resultIdentifier );
}
}
public function f2c_RemoveFriend( _username:String ):Void
{
ExternalInterface.call("f2c_RemoveFriend", _username, "", "", "");
}
public function c2f_RemoveFriendResult(resultIdentifier:String):Void
{
switch (resultIdentifier)
{
case "Friends_Remove_UNKNOWN_TARGET_HANDLE":
break;
case "Friends_Remove_CANNOT_PERFORM_ON_SELF":
break;
case "DATABASE_CONSTRAINT_FAILURE":
break;
case "Friends_Remove_NOT_FRIENDS":
break;
case "SUCCESS":
ConsoleWindow.Trace("c2f_RemoveFriendResult: " + resultIdentifier);
break;
}
if ( resultIdentifier != "SUCCESS" )
{
LobbyInterface.Instance.CreateMessageBox( resultIdentifier );
}
}
public function f2c_GetFriendInvites():Void
{
ExternalInterface.call("f2c_GetFriendInvites");
}
public function f2c_GetFriends():Void
{
ExternalInterface.call("f2c_GetFriends");
}
public function c2f_GetFriendInvites():Void
{
var invitesSent:Number = arguments[0];
var invitesReceived:Number = arguments[1];
for (var i:Number=0; i<invitesSent; i++) {
var handleOfUserInviteSentTo:String = arguments[2+i];
}
for (var i:Number=0; i<invitesReceived; i++) {
var handleOfUserInviteReceivedFrom:String = arguments[2+i+invitesSent];
}
}
public function c2f_GetFriends():Void
{
ConsoleWindow.Trace("c2f_GetFriends...");
for (var i:Number=0; i<arguments.length; i++)
{
var friendName:String = arguments[i];
ConsoleWindow.Trace(friendName);
AddListEntry( friendName );
}
//TODO: remove this once c++ sends down proper data
for ( var n:Number = 0; n < 7; n++ )
{
AddListEntry( "friend" + mMovieClipList.length );
}
OnMoveClipListUpdated();
ShowPage(1);
}
public function InviteFriend( _username:String, _profileImageIndex:Number ):Void
{
AddListEntry( _username, _profileImageIndex );
RefreshPage();
OnMoveClipListUpdated();
}
public function RemoveFriend( friendEntry:MovieClip ):Void
{
f2c_RemoveFriend( friendEntry.tfUsername.text );
RemoveEntryFromList( friendEntry, mMovieClipList );
}
private function AddListEntry( usernameToAdd:String, _profileImageIndex:Number ):MovieClip
{
var userEntry:MovieClip = attachMovie("MyFriendsListEntry", "mcFriendEntry" + mMovieClipList.length, getNextHighestDepth() );
userEntry._visible = false;
userEntry.tfUsername.text = usernameToAdd;
mMovieClipList.push( userEntry );
var self:FriendScreen = this;
userEntry.mcDelete.onPress = function() { self.RemoveFriend( this._parent ); }
userEntry.mcMail.onPress = function() { self.ShowFriendMail( this._parent.tfUsername.text ); }
return userEntry;
}
public function ShowPossibleFriends():Void
{
LobbyInterface.Instance.ShowScreen( ScreenID.POSSIBLE_FRIENDS );
}
private function OnShowMovieClipEntry( mcEntry:MovieClip, index:Number ):Void
{
super.OnShowMovieClipEntry( mcEntry, index );
mcEntry.tfInvitation._visible = false;
}
}

View File

@ -0,0 +1,76 @@
import flash.external.*;
import gfx.controls.TextInput;
import gfx.controls.Button;
class Screens.LoggedInScreen extends Screen
{
private var logoffButton:Button;
private var updateAccountButton:Button;
private var ignoreFunctions:Button;
private var friendFunctions:Button;
private var emailFunctions:Button;
private var clanFunctions:Button;
public function LoggedInScreen()
{
ConsoleWindow.Trace("Constructing LoggedInScreen");
mScreenId = ScreenID.LOGGED_IN;
mScreenTabId = ScreenTab.ID_LOGIN;
}
public function VOnFinishedLoading():Void
{
//Add click event for buttons
logoffButton.addEventListener("click", this, "f2c_Logoff");
updateAccountButton.addEventListener("click", this, "GotoUpdateAccountState");
ignoreFunctions.addEventListener("click", this, "GotoIgnoreFunctionsState");
friendFunctions.addEventListener("click", this, "GotoFriendFunctionsState");
emailFunctions.addEventListener("click", this, "GotoEmailFunctionsState");
clanFunctions.addEventListener("click", this, "GotoClanFunctionsState");
//Add callbacks for C++
super.VOnFinishedLoading();
}
public function f2c_Logoff():Void
{
ConsoleWindow.Trace("LoggedinScreen calling login");
ExternalInterface.call("f2c_Logoff");
//_root.gotoAndPlay("ConnectedToServer");
LobbyInterface.Instance.SetLoginState( false );
LobbyInterface.Instance.ShowScreen( ScreenID.LOGIN );
}
public function GotoUpdateAccountState():Void
{
//_root.gotoAndPlay("UpdateAccount");
//LobbyInterface.Instance.ShowScreen( ScreenID.LOGIN ); //need to hook up update profile screen
LobbyInterface.Instance.ShowScreen( ScreenID.UPDATE_ACCOUNT );
}
public function GotoIgnoreFunctionsState():Void
{
//_root.gotoAndPlay("IgnoreFunctions");
LobbyInterface.Instance.ShowScreen( ScreenID.BLOCK_LIST );
}
public function GotoFriendFunctionsState():Void
{
//_root.gotoAndPlay("FriendFunctions");
LobbyInterface.Instance.ShowScreen( ScreenID.FRIENDS );
}
public function GotoEmailFunctionsState():Void
{
//_root.gotoAndPlay("EmailFunctions");
LobbyInterface.Instance.ShowScreen( ScreenID.EMAIL );
}
public function GotoClanFunctionsState():Void
{
//_root.gotoAndPlay("ClanFunctions");
LobbyInterface.Instance.ShowScreen( ScreenID.CLAN_ROOT );
}
}

View File

@ -0,0 +1,72 @@
import flash.external.*;
import gfx.controls.TextInput;
import gfx.controls.Button;
class Screens.LoggingInScreen extends Screen
{
private var loginFailureResult:Button;
private var cancelFromLoggingIn:Button;
public function LoggingInScreen()
{
ConsoleWindow.Trace("Constructing LoggingInScreen");
mScreenId = ScreenID.LOGGING_IN;
mScreenTabId = ScreenTab.ID_LOGIN;
}
public function VOnFinishedLoading():Void
{
loginFailureResult.visible = false;
//Add click event for buttons
cancelFromLoggingIn.addEventListener("click", this, "cancelFromLoggingInFunc");
//Add callbacks for C++
ExternalInterface.addCallback("c2f_NotifyLoginResultFailure", this, c2f_NotifyLoginResultFailure);
ExternalInterface.addCallback("c2f_NotifyLoginResultSuccess", this, c2f_NotifyLoginResultSuccess);
super.VOnFinishedLoading();
}
function cancelFromLoggingInFunc():Void
{
ExternalInterface.call("f2c_DisconnectFromServer");
//_root.gotoAndPlay("Disconnected");
LobbyInterface.Instance.ShowScreen( ScreenID.CONNECTION );
}
function c2f_NotifyLoginResultFailure(reasonIdentifier:String, bannedReason:String, whenBanned:String, bannedExpiration:String ):Void
{
switch (reasonIdentifier)
{
case "Client_Login_HANDLE_NOT_IN_USE_OR_BAD_SECRET_KEY":
break;
case "Client_Login_CANCELLED":
break;
case "Client_Login_CABLE_NOT_CONNECTED":
break;
case "Client_Login_NET_NOT_CONNECTED":
break;
case "Client_Login_BANNED":
// banned parameters used here, not otherwise
break;
case "Client_Login_CDKEY_STOLEN":
break;
case "Client_Login_EMAIL_ADDRESS_NOT_VALIDATED":
break;
case "Client_Login_BAD_TITLE_OR_TITLE_SECRET_KEY":
break;
}
loginFailureResult.visible=true;
loginFailureResult.label=reasonIdentifier;
}
function c2f_NotifyLoginResultSuccess( ):Void
{
//_root.gotoAndPlay("LoggedIn");
LobbyInterface.Instance.ShowScreen( ScreenID.LOGGED_IN );
}
}

View File

@ -0,0 +1,235 @@
import flash.external.*;
import gfx.controls.TextInput;
import gfx.controls.Button;
import gfx.controls.CheckBox;
import mx.utils.Delegate;
import Screens.RecoverPasswordScreen;
class Screens.LoginScreen extends Screen
{
private var resetDatabase:Button;
private var recoverPassword:Button;
private var deleteAccountButton:Button;
private var changeHandleButton:Button;
private var registerAccount:Button;
private var login:Button;
private var disconnectFromServer:Button;
private var userNameEdit:TextInput;
private var passwordEdit:TextInput;
private var changeHandleNewHandleEditBox:TextInput;
private var savePassword:CheckBox;
private var saveUsername:CheckBox;
private var mcForgotUsername:MovieClip;
private var mcForgotPassword:MovieClip;
private var tfLoginFailed:TextField;
public function LoginScreen()
{
ConsoleWindow.Trace("Constructing LoginScreen");
mScreenId = ScreenID.LOGIN;
mScreenTabId = ScreenTab.ID_LOGIN;
tfLoginFailed._visible = false;
}
public function VOnFinishedLoading():Void
{
var self:LoginScreen = this;
//Add click event for buttons
resetDatabase.addEventListener("click", this, "f2c_ResetDatabase");
//mcForgotPassword.onPress = function() { self["recoverPasswordFunc"](); }
//recoverPassword.addEventListener("click", this, "recoverPasswordFunc");
deleteAccountButton.addEventListener("click", this, "f2c_DeleteAccount");
changeHandleButton.addEventListener("click", this, "f2c_ChangeHandle");
registerAccount.addEventListener("click", this, "f2c_RegisterAccountStateQuery");
login.addEventListener("click", this, "f2c_LoginToAccount");
disconnectFromServer.addEventListener("click", this, "f2c_DisconnectFromServer");
mcForgotPassword.onPress = Delegate.create( this, ShowForgotPassword );
mcForgotUsername.onPress = Delegate.create( this, ShowForgotUsername );
//Add callbacks for C++
ExternalInterface.addCallback("c2f_SetStateEnterCDKey", this, c2f_SetStateEnterCDKey);
ExternalInterface.addCallback("c2f_SetStateRegisterAccount", this, c2f_SetStateRegisterAccount);
ExternalInterface.addCallback("c2f_DeleteAccountResult", this, c2f_DeleteAccountResult);
ExternalInterface.addCallback("c2f_ChangeHandleResult", this, c2f_ChangeHandleResult);
ExternalInterface.addCallback("c2f_NotifyLoginResultFailure", this, c2f_NotifyLoginResultFailure);
ExternalInterface.addCallback("c2f_NotifyLoginResultSuccess", this, c2f_NotifyLoginResultSuccess);
super.VOnFinishedLoading();
}
public function GetUsername():String
{
return userNameEdit.text;
}
public function f2c_ResetDatabase():Void
{
ExternalInterface.call("f2c_ResetDatabase");
}
public function recoverPasswordFunc():Void
{
//_root.gotoAndPlay("RecoverPassword");
LobbyInterface.Instance.ShowScreen( ScreenID.RECOVER_PASSWORD );
}
public function f2c_DeleteAccount():Void
{
ExternalInterface.call("f2c_DeleteAccount", userNameEdit.text, passwordEdit.text);
}
public function f2c_ChangeHandle():Void
{
ExternalInterface.call("f2c_ChangeHandle", userNameEdit.text, passwordEdit.text, changeHandleNewHandleEditBox.text);
}
public function f2c_RegisterAccountStateQuery():Void
{
ExternalInterface.call("f2c_RegisterAccountStateQuery", userNameEdit.text, passwordEdit.text);
// C++ will call either c2f_SetStateEnterCDKey or c2f_SetStateCreateAccount1
}
public function f2c_LoginToAccount():Void
{
tfLoginFailed._visible=false;
ExternalInterface.call("f2c_LoginToAccount", userNameEdit.text, passwordEdit.text, savePassword.selected);
//_root.gotoAndPlay("LoggingIn");
//LobbyInterface.Instance.ShowScreen( ScreenID.LOGGING_IN );
if ( LobbyInterface.Instance.IsInFlashMode() )
{
c2f_NotifyLoginResultSuccess();
}
}
public function f2c_DisconnectFromServer():Void
{
ExternalInterface.call("f2c_DisconnectFromServer");
}
public function c2f_SetStateEnterCDKey():Void
{
//_root.gotoAndPlay("EnterCDKey");
LobbyInterface.Instance.ShowScreen( ScreenID.ENTER_CD_KEY );
}
public function c2f_SetStateRegisterAccount():Void
{
//_root.gotoAndPlay("RegisterAccount");
LobbyInterface.Instance.ShowScreen( ScreenID.REGISTER_ACCOUNT_PERSONAL );
}
public function c2f_DeleteAccountResult(resultIdentifier:String):Void
{
switch (resultIdentifier)
{
case "UNKNOWN_USER":
// Unknown username
break;
case "SUCCESS":
// OK
break;
case "DATABASE_CONSTRAINT_FAILURE":
// Database error, maybe account was already deleted
break;
case "System_DeleteAccount_INVALID_PASSWORD":
// Bad password to delete this account
break;
}
if ( resultIdentifier != "SUCCESS" )
{
LobbyInterface.Instance.CreateMessageBox( resultIdentifier );
}
}
public function c2f_ChangeHandleResult(resultIdentifier:String, oldHandle:String, newHandle:String):Void
{
switch (resultIdentifier)
{
case "UNKNOWN_USER":
// Unknown username
break;
case "SUCCESS":
{
// OK
userNameEdit.text=newHandle;
break;
}
case "DATABASE_CONSTRAINT_FAILURE":
// Database error, maybe account was already deleted
break;
case "Client_ChangeHandle_NEW_HANDLE_ALREADY_IN_USE":
break;
case "Client_ChangeHandle_INVALID_PASSWORD":
// Bad password to delete this account
break;
}
if ( resultIdentifier != "SUCCESS" )
{
LobbyInterface.Instance.CreateMessageBox( resultIdentifier );
}
}
public function c2f_NotifyLoginResultFailure(reasonIdentifier:String, bannedReason:String, whenBanned:String, bannedExpiration:String ):Void
{
switch (reasonIdentifier)
{
case "Client_Login_HANDLE_NOT_IN_USE_OR_BAD_SECRET_KEY":
tfLoginFailed.text = "Handle not in use or bad secret key.";
break;
case "Client_Login_CANCELLED":
tfLoginFailed.text = "Login cancelled.";
break;
case "Client_Login_CABLE_NOT_CONNECTED":
tfLoginFailed.text = "Cable not connected.";
break;
case "Client_Login_NET_NOT_CONNECTED":
tfLoginFailed.text = "Net not connected.";
break;
case "Client_Login_BANNED":
tfLoginFailed.text = "User banned.";
// banned parameters used here, not otherwise
break;
case "Client_Login_CDKEY_STOLEN":
tfLoginFailed.text = "CDKEY stolen";
break;
case "Client_Login_EMAIL_ADDRESS_NOT_VALIDATED":
tfLoginFailed.text = "Email address not validated.";
break;
case "Client_Login_BAD_TITLE_OR_TITLE_SECRET_KEY":
tfLoginFailed.text = "Bad title or title secret key.";
break;
}
//tfLoginFailed._visible = true;
LobbyInterface.Instance.CreateMessageBox(reasonIdentifier);
}
public function c2f_NotifyLoginResultSuccess( ):Void
{
LobbyInterface.Instance.SetLoginState( true );
LobbyInterface.Instance.ShowScreen( ScreenID.PROFILE );
ConsoleWindow.Trace("AccountInfo.Instance = " + AccountInfo.Instance);
AccountInfo.Instance.GetAccountInfoFromServer();
}
public function ShowForgotUsername():Void
{
ConsoleWindow.Trace("show forgot username");
RecoverPasswordScreen.Instance.SetMode( false );
LobbyInterface.Instance.ShowScreen( ScreenID.RECOVER_PASSWORD );
}
public function ShowForgotPassword():Void
{
ConsoleWindow.Trace("show forgot password");
RecoverPasswordScreen.Instance.SetMode( true );
LobbyInterface.Instance.ShowScreen( ScreenID.RECOVER_PASSWORD );
}
}

View File

@ -0,0 +1,131 @@

import flash.external.*;
import gfx.controls.TextInput;
import gfx.controls.Button;
import Screens.ClanGeneralScreen;
class Screens.MyClansScreen extends ScreenWithPageNavigator
{
private var btnBack:Button;
private var mClanNames:Array;
private static var mInstance:MyClansScreen;
public function MyClansScreen()
{
ConsoleWindow.Trace("Constructing MyClansScreen");
mScreenId = ScreenID.CLAN_MY_CLANS;
mScreenTabId = ScreenTab.ID_CLANS;
mEntriesPerPage = 12;
mFirstEntryX = 435;
mFirstEntryY = -380;
mDeltaY = 10;
mInstance = this;
}
public static function get Instance():MyClansScreen { return mInstance; }
public function VOnFinishedLoading():Void
{
//Add click event for buttons
//btnCreateClan.addEventListener("click", this, "SetStateToClanFunctionsGeneral");
btnBack.addEventListener("click", this, "Back");
//Add callbacks for C++
ExternalInterface.addCallback("c2f_Clans_Get", this, c2f_Clans_Get);
super.VOnFinishedLoading();
}
public function OnShow():Void
{
super.OnShow();
if ( mMovieClipList.length > 0 )
{
CleanUpMoveClipList( mMovieClipList );
}
mMovieClipList = new Array();
mCurrentPage = 0;
GoToPage( 1 );
ExternalInterface.call("f2c_Clans_Get");
}
private function AddListEntry( clanToAdd:String, _profileImageIndex:Number ):MovieClip
{
var clanEntry:MovieClip = attachMovie("ClanListEntry", "mcClanEntry" + mMovieClipList.length, getNextHighestDepth() );
clanEntry._visible = false;
clanEntry.tfClanName.text = clanToAdd;
mMovieClipList.push( clanEntry );
ConsoleWindow.Trace("Adding entry: " + clanEntry);
var self:MyClansScreen = this;
clanEntry.onPress = function() { self.OnSelectClan( this ); }
return clanEntry;
}
public function OnSelectClan( clanEntry:MovieClip ):Void
{
ConsoleWindow.Trace("clanRootScreen.OnSelectClan, clan = " + clanEntry._name);
ClanGeneralScreen.Instance.SetClanName( clanEntry.tfClanName.text );
LobbyInterface.Instance.ShowScreen( ScreenID.CLAN_GENERAL );
}
public function c2f_Clans_Get():Void
{
ConsoleWindow.Trace("c2f_Clans_Get(), resultIdentifier = " + resultIdentifier);
var resultIdentifier:String = arguments[0];
switch (resultIdentifier)
{
case "DATABASE_CONSTRAINT_FAILURE":
break;
case "SUCCESS":
{
mClanNames = new Array();
var numClansReturned:Number = arguments[1] + 1;
ConsoleWindow.Trace("Number of clans = " + numClansReturned);
var argumentIndex:Number=2;
for (var i:Number=0; i < numClansReturned; i++)
{
ConsoleWindow.Trace("clan = " + clanName + ", description = " + description + ", clanLeader = " + clanLeader );
var clanName:String = arguments[argumentIndex++];
var description:String = arguments[argumentIndex++];
var clanLeader:String = arguments[argumentIndex++];
if ( clanName )
{
mClanNames.push( clanName );
var clanMembersOtherThanLeader:Number = arguments[argumentIndex++];
//for (var j:Number=0; j < clanMembersOtherThanLeader; j++)
{
//var clanMemberName:String = arguments[argumentIndex++];
//ConsoleWindow.Trace("other memebers = " + clanMemberName);
}
AddListEntry(clanName);
}
}
OnMoveClipListUpdated();
ShowPage(1);
break;
}
}
if ( resultIdentifier != "SUCCESS" )
{
LobbyInterface.Instance.CreateMessageBox( resultIdentifier );
}
}
public function Back():Void
{
LobbyInterface.Instance.ShowScreen( ScreenID.CLAN_ROOT );
}
}

View File

@ -0,0 +1,284 @@
import flash.external.*;
import gfx.controls.TextInput;
import gfx.controls.Button;
import mx.utils.Delegate;
class Screens.PossibleFriendsScreen extends ScreenWithPageNavigator
{
private var targetHandleEditBox:TextInput;
private var subjectEditBox:TextInput;
private var bodyEditBox:TextInput;
private var emailStatusEditBox:TextInput;
private var sendInviteButton:Button;
private var acceptInviteButton:Button;
private var rejectInviteButton:Button;
private var btnMyFriends:Button;
private var mcProfileImage:MovieClip;
private var tfUsername:TextField;
private var mcMail:Mail;
public function PossibleFriendsScreen()
{
ConsoleWindow.Trace("Constructing FriendScreen");
mScreenId = ScreenID.POSSIBLE_FRIENDS;
mScreenTabId = ScreenTab.ID_FRIENDS;
mEntriesPerPage = 10;
mFirstEntryX = 440;
mFirstEntryY = -245;
mDeltaY = 10;
}
public function VOnFinishedLoading():Void
{
//Add click event for buttons
sendInviteButton.addEventListener("click", this, "ShowInvitationMail_Outgoing");
//acceptInviteButton.addEventListener("click", this, "f2c_AcceptInvite");
//rejectInviteButton.addEventListener("click", this, "f2c_RejectInvite");
btnMyFriends.addEventListener("click", this, "ShowMyFriends");
//Add callbacks for C++
ExternalInterface.addCallback("c2f_SendInviteResult", this, c2f_SendInviteResult);
ExternalInterface.addCallback("c2f_AcceptInviteResult", this, c2f_AcceptInviteResult);
ExternalInterface.addCallback("c2f_RejectInviteResult", this, c2f_RejectInviteResult);
ExternalInterface.addCallback("c2f_GetFriendInvites", this, c2f_GetFriendInvites);
//ExternalInterface.addCallback("c2f_GetFriends", this, c2f_GetFriends);
mcMail._visible = false;
super.VOnFinishedLoading();
}
public function OnShow():Void
{
super.OnShow();
if ( !mcProfileImage.mcImageContainer.mcImage )
{
var imageIndex:Number = LobbyInterface.Instance.GetProfileImageIndex();
mcProfileImage.attachMovie( "ProfileImage" + imageIndex, "mcImage", mcProfileImage.getNextHighestDepth() );
}
tfUsername.text = LobbyInterface.Instance.GetUsername();
if ( mMovieClipList.length > 0 )
{
CleanUpMoveClipList( mMovieClipList );
}
mMovieClipList = new Array();
mCurrentPage = 0;
GoToPage( 1 );
f2c_GetFriendInvites();
//mIsWaitingForResponseFromServer = false;
}
public function ShowInvitationMail_Outgoing():Void
{
mcMail.Clear();
mcMail.SetButton( 1, "CANCEL", Delegate.create(this, HideMail) );
mcMail.SetButton( 2, "SEND", Delegate.create(this, f2c_SendInvite) );
mcMail.SetTitle( "ASK " + targetHandleEditBox.text + " TO BE FRIENDS:" );
mcMail.SetToDisplayText( "TO:" );
mcMail.SetToField( targetHandleEditBox.text );
mcMail.DisableToField();
mcMail.swapDepths( getNextHighestDepth() );
mcMail._visible = true;
}
public function ShowInvitationMail_Incoming( username:String ):Void
{
mcMail.Clear();
mcMail.SetButton( 1, "IGNORE", Delegate.create(this, HideMail) );
mcMail.SetButton( 2, "BE FRIENDS", Delegate.create(this, f2c_AcceptInvite) );
mcMail.SetButton( 3, "DECLINE", Delegate.create(this, f2c_RejectInvite) );
mcMail.SetTitle( username + " WANTS TO BE YOUR FRIEND:" );
mcMail.SetToDisplayText( "FROM:" );
mcMail.SetToField( username );
mcMail.DisableToField();
mcMail.swapDepths( getNextHighestDepth() );
mcMail._visible = true;
}
public function HideMail():Void
{
mcMail._visible = false;
}
public function f2c_SendInvite():Void
{
ConsoleWindow.Trace("Attempting to send invitation: name = " + mcMail.GetToField() + ", subject = " + mcMail.GetSubjectField() + ", msg = " + mcMail.GetMsgField());
ExternalInterface.call("f2c_SendInvite", mcMail.GetToField(), mcMail.GetSubjectField(), mcMail.GetMsgField(), "0");
HideMail();
}
public function c2f_SendInviteResult(resultIdentifier:String):Void
{
switch (resultIdentifier)
{
case "Friends_SendInvite_UNKNOWN_TARGET_HANDLE":
break;
case "Friends_SendInvite_CANNOT_PERFORM_ON_SELF":
break;
case "DATABASE_CONSTRAINT_FAILURE":
break;
case "Friends_SendInvite_ALREADY_SENT_INVITE":
break;
case "Friends_SendInvite_ALREADY_FRIENDS":
break;
case "SUCCESS":
ConsoleWindow.Trace("c2f_SendInviteResult: " + resultIdentifier);
break;
}
if ( resultIdentifier != "SUCCESS" )
{
LobbyInterface.Instance.CreateMessageBox( resultIdentifier );
}
}
public function f2c_AcceptInvite():Void
{
ConsoleWindow.Trace("f2c_AcceptInvite: name = " + mcMail.GetToField() + ", subject = " + mcMail.GetSubjectField() + ", msg = " + mcMail.GetMsgField());
ExternalInterface.call("f2c_AcceptInvite", mcMail.GetToField(), mcMail.GetSubjectField(), mcMail.GetMsgField(), "0");
HideMail();
}
public function c2f_AcceptInviteResult(resultIdentifier:String):Void
{
switch (resultIdentifier)
{
case "Friends_AcceptInvite_UNKNOWN_TARGET_HANDLE":
break;
case "Friends_AcceptInvite_CANNOT_PERFORM_ON_SELF":
break;
case "DATABASE_CONSTRAINT_FAILURE":
break;
case "Friends_AcceptInvite_NO_INVITE":
break;
case "Friends_AcceptInvite_NO_INVITE":
break;
case "SUCCESS":
ConsoleWindow.Trace("c2f_AcceptInviteResult: " + resultIdentifier);
break;
}
if ( resultIdentifier != "SUCCESS" )
{
LobbyInterface.Instance.CreateMessageBox( resultIdentifier );
}
}
public function f2c_RejectInvite():Void
{
ConsoleWindow.Trace("f2c_RejectInvite: name = " + mcMail.GetToField() + ", subject = " + mcMail.GetSubjectField() + ", msg = " + mcMail.GetMsgField());
ExternalInterface.call("f2c_RejectInvite", mcMail.GetToField(), mcMail.GetSubjectField(), mcMail.GetMsgField(), "0");
HideMail();
}
public function c2f_RejectInviteResult(resultIdentifier:String):Void
{
switch (resultIdentifier)
{
case "Friends_RejectInvite_UNKNOWN_TARGET_HANDLE":
break;
case "Friends_RejectInvite_CANNOT_PERFORM_ON_SELF":
break;
case "DATABASE_CONSTRAINT_FAILURE":
break;
case "Friends_RejectInvite_NO_INVITE":
break;
case "SUCCESS":
ConsoleWindow.Trace("c2f_RejectInviteResult = " + c2f_RejectInviteResult);
break;
}
if ( resultIdentifier != "SUCCESS" )
{
LobbyInterface.Instance.CreateMessageBox( resultIdentifier );
}
}
public function f2c_GetFriendInvites():Void
{
ExternalInterface.call("f2c_GetFriendInvites");
}
public function c2f_GetFriendInvites():Void
{
ConsoleWindow.Trace("c2f_GetFriendInvites...");
var invitesSent:Number = arguments[0];
var invitesReceived:Number = arguments[1];
for (var i:Number = 0; i < invitesSent; i++)
{
var handleOfUserInviteSentTo:String = arguments[2+i];
ConsoleWindow.Trace("invite sent to: " + handleOfUserInviteSentTo);
AddListEntry( handleOfUserInviteSentTo, "INVITED" );
}
for (var i:Number = 0; i < invitesReceived; i++)
{
var handleOfUserInviteReceivedFrom:String = arguments[2+i+invitesSent];
ConsoleWindow.Trace("invite received from: " + handleOfUserInviteReceivedFrom);
AddListEntry( handleOfUserInviteReceivedFrom, "REQUESTED" );
}
//TODO: remove this once c++ sends down proper data
for ( var n:Number = 0; n < 5; n++ )
{
AddListEntry( "possible friend" + mMovieClipList.length, "REQUESTED" );
}
OnMoveClipListUpdated();
ShowPage(1);
}
public function InviteFriend( _username:String, _profileImageIndex:Number ):Void
{
AddListEntry( _username );
RefreshPage();
OnMoveClipListUpdated();
}
public function RemovePendingEntry( friendEntry:MovieClip ):Void
{
//TODO: should we notify c++ that en entry is removed here?
RemoveEntryFromList( friendEntry, mMovieClipList );
}
private function AddListEntry( usernameToAdd:String, inviteText:String ):MovieClip
{
var userEntry:MovieClip = attachMovie("MyFriendsListEntry", "mcFriendEntry" + mMovieClipList.length, getNextHighestDepth() );
userEntry._visible = false;
userEntry.tfUsername.text = usernameToAdd;
userEntry.tfInvitation.text = inviteText;
mMovieClipList.push( userEntry );
var self:PossibleFriendsScreen = this;
userEntry.mcDelete.onPress = function() { self.RemovePendingEntry( this._parent ); }
if ( inviteText == "REQUESTED" )
{
userEntry.mcMail.onPress = function() { self.ShowInvitationMail_Incoming( this._parent.tfUsername.text ); }
}
return userEntry;
}
private function ShowMyFriends():Void
{
LobbyInterface.Instance.ShowScreen( ScreenID.FRIENDS );
}
private function OnShowMovieClipEntry( mcEntry:MovieClip, index:Number ):Void
{
super.OnShowMovieClipEntry( mcEntry, index );
//mcEntry.tfInvitation._visible = false;
}
}

View File

@ -0,0 +1,149 @@
import gfx.controls.TextArea;
import gfx.controls.Button;
import Screens.RegisterAccountScreen3;
import flash.external.*;
class Screens.ProfileScreen extends Screen
{
private var mcEditProfile:Button;
private var mcSaveProfile:Button;
private var mcChange:Button;
private var mcEditBlockList:Button;
private var mcEditInfo:Button;
private var tfUsername:TextField;
private var mcProfileImage:MovieClip;
private var taAboutMe:TextArea;
private var taActivities:TextArea;
private var taInterests:TextArea;
private var taFavoriteGames:TextArea;
private var taFavoriteMovies:TextArea;
private var taFavoriteBooks:TextArea;
private var taFavoriteQuotes:TextArea;
private var mEditMode:Boolean;
private static var mInstance:ProfileScreen;
public function ProfileScreen()
{
ConsoleWindow.Trace("Constructing ProfileScreen");
mScreenId = ScreenID.PROFILE;
mScreenTabId = ScreenTab.ID_PROFILE;
mInstance = this;
}
public static function get Instance():ProfileScreen { return mInstance; }
public function VOnFinishedLoading():Void
{
//Add click event for buttons
mcEditBlockList.addEventListener("click", this, "OnClickEditBlockList");
mcSaveProfile.addEventListener("click", this, "OnClickSaveProfile");
mcEditProfile.addEventListener("click", this, "OnClickEditProfile");
mcChange.addEventListener("click", this, "OnClickedChange");
mcEditInfo.addEventListener("click", this, "OnClickEditInfo");
//Add callbacks for C++
super.VOnFinishedLoading();
}
public function OnShow():Void
{
if ( !mcProfileImage.mcImageContainer.mcImage )
{
var imageIndex:Number = LobbyInterface.Instance.GetProfileImageIndex();
mcProfileImage.attachMovie( "ProfileImage" + imageIndex, "mcImage", mcProfileImage.getNextHighestDepth() );
}
tfUsername.text = LobbyInterface.Instance.GetUsername();
EnableTextInput( false );
}
public function EnableTextInput( state:Boolean ):Void
{
mcEditProfile._visible = !state;
mcSaveProfile._visible = state;
mEditMode = state;
taAboutMe.disabled = !state;
taActivities.disabled = !state;
taInterests.disabled = !state;
taFavoriteBooks.disabled = !state;
taFavoriteGames.disabled = !state;
taFavoriteMovies.disabled = !state;
taFavoriteQuotes.disabled = !state;
}
public function OnReceivedPlayerInfo():Void
{
taAboutMe.text = AccountInfo.Instance.GetAboutMe();
taActivities.text = AccountInfo.Instance.GetActivities();
taInterests.text = AccountInfo.Instance.GetInterests();
taFavoriteGames.text = AccountInfo.Instance.GetFavoriteGames();
taFavoriteMovies.text = AccountInfo.Instance.GetFavoriteBooks();
taFavoriteBooks.text = AccountInfo.Instance.GetFavoriteMovies();
taFavoriteQuotes.text = AccountInfo.Instance.GetFavoriteQuotes();
}
public function GetAboutMe():String { return taAboutMe.text; }
public function GetActivities():String { return taActivities.text; }
public function GetInterests():String { return taInterests.text; }
public function GetFavoriteGames():String { return taFavoriteGames.text; }
public function GetFavoriteBooks():String { return taFavoriteMovies.text; }
public function GetFavoriteMovies():String { return taFavoriteBooks.text; }
public function GetFavoriteQuotes():String { return taFavoriteQuotes.text; }
public function OnClickSaveProfile():Void
{
EnableTextInput(false);
f2c_UpdateAccount();
}
public function OnClickEditProfile():Void
{
EnableTextInput( true );
}
public function OnClickedChange():Void
{
LobbyInterface.Instance.ShowScreen( ScreenID.CHANGE_PHOTO );
}
public function OnClickEditBlockList():Void
{
LobbyInterface.Instance.ShowScreen( ScreenID.BLOCK_LIST );
}
public function OnClickEditInfo():Void
{
LobbyInterface.Instance.ShowScreen( ScreenID.REGISTER_ACCOUNT_PERSONAL );
}
public function f2c_UpdateAccount():Void
{
// Do not change the order the parameters are passed in as
ExternalInterface.call("f2c_UpdateAccount",
[
AccountInfo.Instance.GetFirstName(), AccountInfo.Instance.GetMiddleName(), AccountInfo.Instance.GetLastName(),
AccountInfo.Instance.GetRace(), AccountInfo.Instance.GetIsMale(), AccountInfo.Instance.GetHomeAddress1(),
AccountInfo.Instance.GetHomeAddress2(), AccountInfo.Instance.GetHomeCity(), AccountInfo.Instance.GetHomeState(),
AccountInfo.Instance.GetHomeCountry(),
AccountInfo.Instance.GetHomeZipCode(),
AccountInfo.Instance.GetBillingAddress1(),
AccountInfo.Instance.GetBillingAddress2(), AccountInfo.Instance.GetBillingCity(), AccountInfo.Instance.GetBillingState(),
AccountInfo.Instance.GetBillingCountry(),
AccountInfo.Instance.GetBillingZipCode(), AccountInfo.Instance.GetEmailAddress(),
AccountInfo.Instance.GetPassword(), AccountInfo.Instance.GetPasswordRecoveryQuestion(), AccountInfo.Instance.GetPasswordRecoveryAnswer(),
"", "",
String( AccountInfo.Instance.GetAgeInDays() ),
GetAboutMe(),
GetActivities(),
GetInterests(),
GetFavoriteGames(),
GetFavoriteMovies(),
GetFavoriteBooks(),
GetFavoriteQuotes()
]);
}
}

View File

@ -0,0 +1,137 @@
import flash.external.*;
import gfx.controls.TextInput;
import gfx.controls.Button;
class Screens.RecoverPasswordScreen extends Screen
{
private var userNameEdit:TextInput;
private var recoverPasswordByUsername:Button;
private var goBackToConnectedToServer:Button;
private var bForgotPassword:Boolean;
private var btnBack:Button;
private var btnSendEmail:Button;
private var btnSendUsername:Button;
private var btnSendAnswer:Button;
private static var mInstance:RecoverPasswordScreen;
public function RecoverPasswordScreen()
{
ConsoleWindow.Trace("Constructing RecoverPasswordScreen");
mScreenId = ScreenID.RECOVER_PASSWORD;
mScreenTabId = ScreenTab.ID_LOGIN;
mInstance = this;
}
public static function get Instance():RecoverPasswordScreen
{
return mInstance;
}
public function VOnFinishedLoading():Void
{
//Add click event for buttons
goBackToConnectedToServer.addEventListener("click", this, "goBackToConnectedToServerFunc");
btnBack.addEventListener("click", this, "Back");
btnSendUsername.addEventListener("click", this, "f2c_RecoverPasswordByUsername");
btnSendAnswer.addEventListener("click", this, "f2c_GetPasswordByPasswordRecoveryAnswer");
//Add callbacks for C++
ExternalInterface.addCallback("c2f_RecoverPasswordByUsername", this, c2f_RecoverPasswordByUsername);
ExternalInterface.addCallback("c2f_GetPasswordByPasswordRecoveryAnswer", this, c2f_GetPasswordByPasswordRecoveryAnswer);
super.VOnFinishedLoading();
}
public function SetMode( forgotPassword:Boolean ):Void
{
ConsoleWindow.Trace("SetMode..." + forgotPassword);
bForgotPassword = forgotPassword;
}
public function OnShow():Void
{
if ( bForgotPassword )
{
btnSendEmail._visible = false;
btnSendUsername._visible = true;
btnSendAnswer._visible = false;
gotoAndStop("Password1");
}
else
{
btnSendEmail._visible = true;
btnSendUsername._visible = false;
btnSendAnswer._visible = false;
gotoAndStop("Username");
}
}
//gets user recovery question
private var mTempUsername:String;
public function f2c_RecoverPasswordByUsername():Void
{
mTempUsername = this["tiUserName"].text;
//ConsoleWindow.Trace("f2c_RecoverPasswordByUsername.... username = " + );
ExternalInterface.call("f2c_RecoverPasswordByUsername", mTempUsername);
}
//try to get password by answering the secret question
public function f2c_GetPasswordByPasswordRecoveryAnswer():Void
{
ConsoleWindow.Trace("calling f2c_GetPasswordByPasswordRecoveryAnswer.. answer = " + this["tiAnswer"].text);
ExternalInterface.call("f2c_GetPasswordByPasswordRecoveryAnswer", mTempUsername, this["tiAnswer"].text);
}
public function goBackToConnectedToServerFunc():Void
{
//_root.gotoAndPlay("ConnectedToServer");
LobbyInterface.Instance.ShowScreen( ScreenID.LOGIN );
}
public function c2f_RecoverPasswordByUsername(resultIdentifier:String, username:String, email:String, secretQuestion:String ):Void
{
ConsoleWindow.Trace("c2f_RecoverPasswordByUsername..." + arguments);
switch (resultIdentifier)
{
case "SUCCESS":
gotoAndStop("Password2");
btnSendEmail._visible = false;
btnSendUsername._visible = false;
btnSendAnswer._visible = true;
this["tfSecretQuestion"].text = secretQuestion;
break;
}
if ( resultIdentifier != "SUCCESS" )
{
LobbyInterface.Instance.CreateMessageBox( resultIdentifier );
}
}
public function c2f_GetPasswordByPasswordRecoveryAnswer(resultIdentifier:String, username:String, secretAnswer:String, password:String ):Void
{
ConsoleWindow.Trace("c2f_GetPasswordByPasswordRecoveryAnswer..." + arguments);
switch (resultIdentifier)
{
case "SUCCESS":
break;
}
if ( resultIdentifier != "SUCCESS" )
{
LobbyInterface.Instance.CreateMessageBox( resultIdentifier );
}
}
public function Back():Void
{
LobbyInterface.Instance.ShowScreen( ScreenID.LOGIN );
}
}

View File

@ -0,0 +1,291 @@
import flash.display.BitmapData;
import flash.external.*;
import gfx.controls.TextInput;
import gfx.controls.Button;
import gfx.controls.CheckBox;
import gfx.data.dataProvider;
import gfx.controls.DropdownMenu;
//Personal Infomation
class Screens.RegisterAccountScreen extends Screen
{
private var firstName:TextInput;
private var middleName:TextInput;
private var lastName:TextInput;
private var homeAddress1:TextInput;
private var homeAddress2:TextInput;
private var homeCity:TextInput;
private var homeState:DropdownMenu;
private var homeZipCode:TextInput;
private var emailAddress:TextInput;
private var birthMonth:DropdownMenu;
private var birthDay:DropdownMenu;
private var birthYear:DropdownMenu;
private var race:DropdownMenu;
private var homeCountry:DropdownMenu;
private var sex_male:CheckBox;
private var sex_female:CheckBox;
public static var Months:Array = [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 ];
public static var MonthDays:Array = [ 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 ]; //each element is number of days for that month
/*private var countryList:Array = ["Afghanistan", "Albania", "Algeria", "American Samoa", "Andorra", "Angola", "Anguilla", "Antarctica", "Antigua and Barbuda",
"Argentina", "Armenia", "Aruba", "Australia", "Austria", "Azerbaijan", "Azores", "Bahamas", "Bahrain", "Bangladesh", "Barbados", "Belarus",
"Belgium", "Belize", "Benin", "Bermuda", "Bhutan", "Bolivia", "Bosnia And Herzegowina", "Bosnia-Herzegovina", "Botswana", "Bouvet Island", "Brazil",
"British Indian Ocean Territory", "British Virgin Islands", "Brunei Darussalam", "Bulgaria", "Burkina Faso", "Burundi", "Cambodia", "Cameroon",
"Canada", "Cape Verde", "Cayman Islands", "Central African Republic", "Chad", "Chile", "China", "Christmas Island", "Cocos (Keeling) Islands",
"Colombia", "Comoros", "Congo", "Congo, The Democratic Republic O", "Cook Islands", "Corsica", "Costa Rica", "Cote d` Ivoire (Ivory Coast)", "Croatia",
"Cuba", "Cyprus", "Czech Republic", "Denmark", "Djibouti", "Dominica", "Dominican Republic", "East Timor", "Ecuador", "Egypt", "El Salvador",
"Equatorial Guinea", "Eritrea", "Estonia", "Ethiopia", "Falkland Islands (Malvinas)", "Faroe Islands", "Fiji", "Finland", "France (Includes Monaco)",
"France, Metropolitan", "French Guiana", "French Polynesia", "French Polynesia (Tahiti)", "French Southern Territories", "Gabon", "Gambia", "Georgia",
"Germany", "Ghana", "Gibraltar", "Greece", "Greenland", "Grenada", "Guadeloupe", "Guam", "Guatemala", "Guinea", "Guinea-Bissau", "Guyana", "Haiti",
"Heard And Mc Donald Islands", "Holy See (Vatican City State)", "Honduras", "Hong Kong", "Hungary", "Iceland", "India", "Indonesia", "Iran", "Iraq",
"Ireland", "Ireland (Eire)", "Israel", "Italy", "Jamaica", "Japan", "Jordan", "Kazakhstan", "Kenya", "Kiribati", "Korea, Democratic People''s Repub",
"Kuwait", "Kyrgyzstan", "Laos", "Latvia", "Lebanon", "Lesotho", "Liberia", "Libya", "Liechtenstein", "Lithuania", "Luxembourg", "Macao", "Macedonia",
"Madagascar", "Madeira Islands", "Malawi", "Malaysia", "Maldives", "Mali", "Malta", "Marshall Islands", "Martinique", "Mauritania", "Mauritius", "Mayotte",
"Mexico", "Micronesia, Federated States Of", "Moldova, Republic Of", "Monaco", "Mongolia", "Montserrat", "Morocco", "Mozambique", "Myanmar (Burma)",
"Namibia", "Nauru", "Nepal", "Netherlands", "Netherlands Antilles", "New Caledonia", "New Zealand", "Nicaragua", "Niger", "Nigeria", "Niue",
"Norfolk Island", "Northern Mariana Islands", "Norway", "Oman", "Pakistan", "Palau", "Palestinian Territory, Occupied", "Panama", "Papua New Guinea",
"Paraguay", "Peru", "Philippines", "Pitcairn", "Poland", "Portugal", "Puerto Rico", "Qatar", "Reunion", "Romania", "Russian Federation", "Rwanda",
"Saint Kitts And Nevis", "San Marino", "Sao Tome and Principe", "Saudi Arabia", "Senegal", "Serbia-Montenegro", "Seychelles", "Sierra Leone", "Singapore",
"Slovak Republic", "Slovenia", "Solomon Islands", "Somalia", "South Africa", "South Georgia And The South Sand", "South Korea", "Spain", "Sri Lanka",
"St. Christopher and Nevis", "St. Helena", "St. Lucia", "St. Pierre and Miquelon", "St. Vincent and the Grenadines", "Sudan", "Suriname",
"Svalbard And Jan Mayen Islands", "Swaziland", "Sweden", "Switzerland", "Syrian Arab Republic", "Taiwan", "Tajikistan", "Tanzania", "Thailand",
"Togo", "Tokelau", "Tonga", "Trinidad and Tobago", "Tristan da Cunha", "Tunisia", "Turkey", "Turkmenistan", "Turks and Caicos Islands", "Tuvalu",
"Uganda", "Ukraine", "Unid Arab Emirates", "United Kingdom", "United States", "United States Minor Outlying Isl", "Uruguay", "Uzbekistan",
"Vanuatu", "Vatican City", "Venezuela", "Vietnam", "Virgin Islands (U.S.)", "Wallis and Furuna Islands", "Western Sahara",
"Western Samoa", "Yemen", "Yugoslavia", "Zaire", "Zambia", "Zimbabwe", "Great Britain"];*/
public static var stateList:Array = ["Alabama", "Alaska", "Arizona", "Arkansas", "California", "Colorado", "Connecticut", "Delaware", "Florida",
"Georgia", "Hawaii", "Idaho", "Illinois", "Indiana", "Iowa", "Kansas", "Kentucky", "Louisiana", "Maine", "Maryland",
"Massachusetts", "Michigan", "Minnesota", "Missouri", "Montana", "Nebraska", "Nevada", "New Hampshire",
"New Jersey", "New Mexico", "New York", "North Carolina", "North Dakota", "Ohio", "Oklahoma", "Oregon",
"Pennsylvania", "Rhode Island", "South Carolina", "South Dakota", "Tennessee", "Texas", "Utah", "Vermont",
"Virginia", "Washington", "West Virginia", "Wisconsin", "Wyoming" ]
private var cancelButton:Button;
private var nextButton:Button;
public function RegisterAccountScreen()
{
ConsoleWindow.Trace("Constructing RegisterAccountScreen");
mScreenId = ScreenID.REGISTER_ACCOUNT_PERSONAL;
mScreenTabId = ScreenTab.ID_REGISTRATION;
}
public function VOnFinishedLoading():Void
{
birthMonth.dataProvider = Months;
//homeCountry.dataProvider = countryList;
homeState.dataProvider = stateList;
race.dataProvider = ["CAUSCASIAN", "AFRCAN AMERICAN", "NATIVE AMERICAN", "HISPANIC", "ASIAN", "PACIFIC ISLANDS", "UNSPECIFIED"];
var year:Array = new Array();
for ( var i = 2009; i > 1930; i-- )
{
year.push( i );
}
birthYear.dataProvider = year;
OnMonthChange();
//Add click event for buttons
cancelButton.addEventListener("click", this, "Cancel");
nextButton.addEventListener("click", this, "Next");
birthMonth.addEventListener("change", this, "OnMonthChange");
sex_male.addEventListener("select", this, "OnSelectMale");
sex_female.addEventListener("select", this, "OnSelectFemale");
super.VOnFinishedLoading();
}
public function OnShow():Void
{
if ( LobbyInterface.Instance.IsLoggedIn() )
{
gotoAndStop("Update");
PopulateFromAccountInfo();
}
else
{
gotoAndStop("New");
}
//homeState.dataProvider = ["causcasian", "afrcan american", "native american", "hispanic", "asian", "pacific islands", "unspecified"];//; stateList;
}
public function Next():Void
{
ConsoleWindow.Trace(" month = " + GetSelectedMonth() + ", day = " + GetSelectedDate() + ", year = " + GetSelectedYear() );
ConsoleWindow.Trace("Age in days = " + GetAgeInDays());
if ( LobbyInterface.Instance.IsLoggedIn() )
{
SaveToAccountInfo();
}
LobbyInterface.Instance.ShowScreen( ScreenID.REGISTER_ACCOUNT_BILLING );
}
public function Cancel():Void
{
if ( LobbyInterface.Instance.IsLoggedIn() )
{
LobbyInterface.Instance.ShowScreen( ScreenID.PROFILE );
//user cancel editing profile info, let's reset it by re-getting it from server
AccountInfo.Instance.GetAccountInfoFromServer();
}
else
{
LobbyInterface.Instance.ShowScreen( ScreenID.LOGIN );
}
}
public function OnMonthChange(event:Object):Void
{
RepopulateBirthDayList( birthMonth.selectedIndex + 1 );
}
public function RepopulateBirthDayList( month:Number ):Void
{
var length = MonthDays[month - 1];
var days:Array = new Array();
for ( var i = 1; i <= length; i++ )
{
days.push( string(i) );
}
birthDay.dataProvider = days;
}
public function OnSelectMale():Void
{
sex_female.selected = !sex_male.selected;
}
public function OnSelectFemale():Void
{
sex_male.selected = !sex_female.selected;
}
public function GetStateList():Array
{
return stateList;
}
public function GetStreetAddress():String
{
return homeAddress1.text;
}
public function GetStreetAddress2():String
{
return homeAddress2.text;
}
public function GetCity():String
{
return homeCity.text;
}
public function GetState():Number
{
return homeState.selectedIndex;
}
public function GetZipCode():String
{
return homeZipCode.text;
}
public function GetFirstName():String
{
return firstName.text;
}
public function GetMiddleInitial():String
{
return middleName.text;
}
public function GetLastName():String
{
return lastName.text;
}
public function GetSelectedRace():String
{
return race.dataProvider[race.selectedIndex];
}
public function GetIsMale():Boolean
{
return sex_male.selected;
}
public function GetSelectedState():String
{
return homeState.dataProvider[homeState.selectedIndex];
}
public function GetEmail():String
{
return emailAddress.text;
}
public function GetSelectedMonth():Number
{
return birthMonth.dataProvider[birthMonth.selectedIndex];
}
public function GetSelectedDate():Number
{
return birthDay.dataProvider[birthDay.selectedIndex];
}
public function GetSelectedYear():Number
{
return birthYear.dataProvider[birthYear.selectedIndex];
}
public function GetAgeInDays():Number
{
return AccountInfo.ConvertBirthdateToDays( GetSelectedMonth(), GetSelectedDate(), GetSelectedYear() );
}
private function PopulateFromAccountInfo():Void
{
firstName.text = AccountInfo.Instance.GetFirstName();
middleName.text = AccountInfo.Instance.GetMiddleName();
lastName.text = AccountInfo.Instance.GetLastName();
//birthMonth.selectedIndex = AccountInfo.Instance.get
emailAddress.text = AccountInfo.Instance.GetEmailAddress();
sex_male.selected = AccountInfo.Instance.GetIsMale();
sex_female.selected = !sex_male.selected;
homeAddress1.text = AccountInfo.Instance.GetHomeAddress1();
homeAddress2.text = AccountInfo.Instance.GetHomeAddress2();
homeCity.text = AccountInfo.Instance.GetHomeCity();
homeState.selectedIndex = GetIndexFromElement( AccountInfo.Instance.GetHomeState(), stateList );
homeZipCode.text = AccountInfo.Instance.GetHomeZipCode();
race.selectedIndex = GetIndexFromElement( AccountInfo.Instance.GetRace(), race.dataProvider );
birthYear.selectedIndex = GetIndexFromElement( String(AccountInfo.Instance.GetBirthYear()), birthYear.dataProvider );
birthMonth.selectedIndex = GetIndexFromElement( AccountInfo.Instance.GetBirthMonth(), birthMonth.dataProvider );
birthDay.selectedIndex = GetIndexFromElement( AccountInfo.Instance.GetBirthDate(), birthDay.dataProvider );
//AccountInfo.ConvertAgeDaysToBirthdate( 45 );
}
//temporary save, data will get wiped if user exits edit account
private function SaveToAccountInfo():Void
{
AccountInfo.Instance.SetFirstName( firstName.text );
AccountInfo.Instance.SetMiddleName( middleName.text );
AccountInfo.Instance.SetLastName( lastName.text );
AccountInfo.Instance.SetEmailAddress( emailAddress.text );
AccountInfo.Instance.SetIsMale( sex_male.selected );
AccountInfo.Instance.SetHomeAddress1( homeAddress1.text );
AccountInfo.Instance.SetHomeAddress2( homeAddress2.text );
AccountInfo.Instance.SetHomeCity( homeCity.text );
AccountInfo.Instance.SetHomeState( GetSelectedState() );
AccountInfo.Instance.SetHomeZipCode( homeZipCode.text );
AccountInfo.Instance.SetRace( GetSelectedRace() );
AccountInfo.Instance.SetAgeInDays( AccountInfo.ConvertBirthdateToDays( GetSelectedMonth(), GetSelectedDate(), GetSelectedYear() ) );
}
}

View File

@ -0,0 +1,131 @@
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.RegisterAccountScreen;
//Billiing Infomation
class Screens.RegisterAccountScreen2 extends Screen
{
private var billingAddress1:TextInput;
private var billingAddress2:TextInput;
private var billingCity:TextInput;
private var billingState:DropdownMenu;
private var billingZipCode:TextInput;
private var cbSameAsHomeAddress:CheckBox;
private var billingCountry:DropdownMenu;
private var cancelButton:Button;
private var nextButton:Button;
public function RegisterAccountScreen2()
{
ConsoleWindow.Trace("Constructing RegisterAccountScreen2");
mScreenId = ScreenID.REGISTER_ACCOUNT_BILLING;
mScreenTabId = ScreenTab.ID_REGISTRATION;
}
public function VOnFinishedLoading():Void
{
//Add click event for buttons
cancelButton.addEventListener("click", this, "Back");
nextButton.addEventListener("click", this, "Next");
cbSameAsHomeAddress.addEventListener("select", this, "OnToggleHomeAddress");
super.VOnFinishedLoading();
}
public function OnShow():Void
{
billingState.dataProvider = LobbyInterface.Instance.GetScreen( ScreenID.REGISTER_ACCOUNT_PERSONAL )["GetStateList"]();
cbSameAsHomeAddress.selected = false;
if ( LobbyInterface.Instance.IsLoggedIn() )
{
gotoAndStop("Update");
PopulateFromAccountInfo();
}
else
{
gotoAndStop("New");
}
}
public function Next():Void
{
if ( LobbyInterface.Instance.IsLoggedIn() )
{
SaveToAccountInfo();
}
LobbyInterface.Instance.ShowScreen( ScreenID.REGISTER_ACCOUNT_LOGIN );
}
public function Back():Void
{
if ( LobbyInterface.Instance.IsLoggedIn() )
{
SaveToAccountInfo();
}
LobbyInterface.Instance.ShowScreen( ScreenID.REGISTER_ACCOUNT_PERSONAL );
}
public function OnToggleHomeAddress():Void
{
if ( cbSameAsHomeAddress.selected )
{
var registrationScreen = LobbyInterface.Instance.GetScreen( ScreenID.REGISTER_ACCOUNT_PERSONAL );
billingAddress1.text = registrationScreen.GetStreetAddress();
billingAddress2.text = registrationScreen.GetStreetAddress2();
billingCity.text = registrationScreen.GetCity();
billingState.selectedIndex = registrationScreen.GetState();
billingZipCode.text = registrationScreen.GetZipCode();
}
}
public function GetStreetAddress1():String
{
return billingAddress1.text;
}
public function GetStreetAddress2():String
{
return billingAddress2.text;
}
public function GetCity():String
{
return billingCity.text;
}
public function GetSelectedState():String
{
return LobbyInterface.Instance.GetScreen( ScreenID.REGISTER_ACCOUNT_PERSONAL )["GetStateList"]()[billingState.selectedIndex];
}
public function GetZipCode():String
{
return billingZipCode.text;
}
private function PopulateFromAccountInfo():Void
{
billingAddress1.text = AccountInfo.Instance.GetBillingAddress1();
billingAddress2.text = AccountInfo.Instance.GetBillingAddress2();
billingCity.text = AccountInfo.Instance.GetBillingCity();
billingState.selectedIndex = GetIndexFromElement( AccountInfo.Instance.GetBillingState(), RegisterAccountScreen.stateList );
billingZipCode.text = AccountInfo.Instance.GetBillingZipCode();
}
//temporary save, data will get wiped if user exits edit account
private function SaveToAccountInfo():Void
{
AccountInfo.Instance.SetBillingAddress1( billingAddress1.text );
AccountInfo.Instance.SetBillingAddress2( billingAddress2.text );
AccountInfo.Instance.SetBillingCity( billingCity.text );
AccountInfo.Instance.SetBillingState( GetSelectedState() );
AccountInfo.Instance.SetBillingZipCode( billingZipCode.text );
}
}

View File

@ -0,0 +1,374 @@
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
{
}
}

View File

@ -0,0 +1,146 @@
import flash.external.*;
import gfx.controls.TextInput;
import gfx.controls.Button;
import gfx.controls.CheckBox;
import gfx.data.dataProvider;
import gfx.controls.DropdownMenu;
// Please wait
// get account details: Client_GetAccountDetails
// fill in fields
// Enable update account button
// on press, save details
class Screens.UpdateAccountScreen extends Screen
{
private var firstName:TextInput;
private var middleName:TextInput;
private var lastName:TextInput;
private var homeAddress1:TextInput;
private var homeAddress2:TextInput;
private var homeCity:TextInput;
private var homeState:TextInput;
private var homeZipCode:TextInput;
private var billingAddress1:TextInput;
private var billingAddress2:TextInput;
private var billingCity:TextInput;
private var billingState:TextInput;
private var billingZipCode:TextInput;
private var emailAddress:TextInput;
private var password:TextInput;
private var passwordRecoveryQuestion:TextInput;
private var passwordRecoveryAnswer:TextInput;
private var caption1:TextInput;
private var caption2:TextInput;
private var ageInDays:TextInput;
private var handle:TextInput;
private var race:TextInput;
private var homeCountry:TextInput;
private var billingCountry:TextInput;
private var sex_male:CheckBox;
private var updateAccountButton:Button;
public function UpdateAccountScreen()
{
ConsoleWindow.Trace("Constructing UpdateAccountScreen");
mScreenId = ScreenID.UPDATE_ACCOUNT;
mScreenTabId = ScreenTab.ID_PROFILE;
}
public function VOnFinishedLoading():Void
{
//updateAccountButton.visible=false;
//Add click event for buttons
updateAccountButton.addEventListener("click", this, "f2c_UpdateAccount");
//Add callbacks for C++
ExternalInterface.addCallback("c2f_UpdateAccountResult", this, c2f_UpdateAccountResult);
// Do not change the order the parameters are passed in as
//ExternalInterface.call("f2c_GetAccountDetails");
//ExternalInterface.addCallback("c2f_GetAccountDetailsResult", this, c2f_GetAccountDetailsResult);
super.VOnFinishedLoading();
}
/*
function c2f_GetAccountDetailsResult( resultIdentifier:String, firstNameParam:String, middleNameParam:String, lastNameParam:String, raceParam:String,
sex_maleParam:Boolean, homeAddress1Param:String, homeAddress2Param:String, homeCityParam:String, homeStateParam:String,
homeCountryParam:String, homeZipCodeParam:String, billingAddress1Param:String, billingAddress2Param:String,
billingCityParam:String, billingStateParam:String, billingCountryParam:String, billingZipCodeParam:String,
emailAddressParam:String, passwordParam:String, passwordRecoveryQuestionParam:String, passwordRecoveryAnswerParam:String,
caption1Param:String, caption2Param:String, ageInDaysParam:Number ):Void
{
ConsoleWindow.Trace( "UpdateAccountScreen.ServerSetAccountInfo()... " + resultIdentifier );
switch (resultIdentifier)
{
case "SUCCESS":
{
firstName.text = firstNameParam;
middleName.text = middleNameParam;
lastName.text = lastNameParam;
race.text = raceParam;
sex_male.selected = sex_maleParam;
homeAddress1.text = homeAddress1Param;
homeAddress2.text = homeAddress2Param;
homeCity.text = homeCityParam;
homeState.text = homeStateParam;
homeCountry.text = homeCountryParam;
homeZipCode.text = homeZipCodeParam;
billingAddress1.text = billingAddress1Param;
billingAddress2.text = billingAddress2Param;
billingCity.text = billingCityParam;
billingState.text = billingStateParam;
billingCountry.text = billingCountryParam;
billingZipCode.text = billingZipCodeParam;
emailAddress.text = emailAddressParam;
password.text = passwordParam;
passwordRecoveryQuestion.text = passwordRecoveryQuestionParam;
passwordRecoveryAnswer.text = passwordRecoveryAnswerParam;
caption1.text = caption1Param;
caption2.text = caption2Param;
ageInDays.text = String(ageInDaysParam);
updateAccountButton.visible=true;
break;
}
case "DATABASE_CONSTRAINT_FAILURE":
ConsoleWindow.Trace( "Can't find the logged in user in the database for some reason" );
break;
}
}*/
function f2c_UpdateAccount():Void
{
// Do not change the order the parameters are passed in as
ExternalInterface.call("f2c_UpdateAccount",
[ firstName.text, middleName.text, lastName.text, race.text, sex_male.selected, homeAddress1.text, homeAddress2.text, homeCity.text, homeState.text,
homeCountry.text, homeZipCode.text, billingAddress1.text, billingAddress2.text, billingCity.text, billingState.text, billingCountry.text, billingZipCode.text,
emailAddress.text, password.text, passwordRecoveryQuestion.text, passwordRecoveryAnswer.text, caption1.text, caption2.text, ageInDays.text
]);
// This may take a while, show a waiting screen until we get c2f_UpdateAccountResult
//ExternalInterface.call("f2c_GetAccountDetails");
}
function c2f_UpdateAccountResult(resultIdentifier:String)
{
switch (resultIdentifier)
{
case "DATABASE_CONSTRAINT_FAILURE":
// Can't find the logged in user in the database for some reason
break;
case "SUCCESS":
//_root.gotoAndPlay("LoggedIn");
LobbyInterface.Instance.ShowScreen( ScreenID.LOGGED_IN );
// Done
}
if ( resultIdentifier != "SUCCESS" )
{
LobbyInterface.Instance.CreateMessageBox( resultIdentifier );
}
}
}

Some files were not shown because too many files have changed in this diff Show More