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

593 lines
17 KiB
ActionScript

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 );
}
}
}