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

225 lines
7.0 KiB
ActionScript

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