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

316 lines
10 KiB
ActionScript

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