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

View File

@ -0,0 +1,84 @@
import flash.external.*;
loginButton.addEventListener("click", this, "Login");
function Login()
{
ExternalInterface.call("f2c_Login", usernameTextInput.text, passwordTextInput.text);
}
registerAccountButton.addEventListener("click", this, "registerAccount");
function registerAccount()
{
ExternalInterface.call("f2c_RegisterAccount", usernameTextInput.text, passwordTextInput.text);
}
ExternalInterface.addCallback("c2f_Client_Login", this, c2f_Client_Login);
function c2f_Client_Login(resultCode:String):Void
{
if (resultCode=="L2RC_SUCCESS")
{
// Save this account
ExternalInterface.call("f2c_SaveProperty", "DefaultUsername", usernameTextInput.text);
ExternalInterface.call("f2c_SaveProperty", "DefaultPassword", passwordTextInput.text);
// Goto logged in screen
gotoAndStop("Lobby");
}
else
{
// L2RC_Client_Login_HANDLE_NOT_IN_USE_OR_BAD_SECRET_KEY
// L2RC_Client_Login_EMAIL_ADDRESS_NOT_VALIDATED
// L2RC_Client_Login_CDKEY_STOLEN
// L2RC_Client_Login_BANNED
trace(resultCode);
}
}
ExternalInterface.addCallback("c2f_Client_RegisterAccount", this, c2f_Client_RegisterAccount);
function c2f_Client_RegisterAccount(resultCode:String):Void
{
if (resultCode=="L2RC_SUCCESS")
{
// Try to login with this account now
ExternalInterface.call("f2c_Login", usernameTextInput.text, passwordTextInput.text);
}
else
{
// L2RC_PROFANITY_FILTER_CHECK_FAILED
// L2RC_Client_RegisterAccount_HANDLE_ALREADY_IN_USE
// L2RC_Client_RegisterAccount_REQUIRES_CD_KEY
// L2RC_Client_RegisterAccount_CD_KEY_NOT_USABLE
// L2RC_Client_RegisterAccount_CD_KEY_NOT_USABLE
// L2RC_Client_RegisterAccount_CD_KEY_STOLEN
// L2RC_Client_RegisterAccount_CD_KEY_ALREADY_USED
trace(resultCode);
}
}
ExternalInterface.addCallback("c2f_LoadProperty_DefaultUsername", this, c2f_LoadProperty_DefaultUsername);
ExternalInterface.addCallback("c2f_LoadProperty_DefaultPassword", this, c2f_LoadProperty_DefaultPassword);
// Ask for last used account
function FillInUsernameAndPassword()
{
ExternalInterface.call("f2c_LoadProperty", "DefaultUsername", "c2f_LoadProperty_DefaultUsername");
ExternalInterface.call("f2c_LoadProperty", "DefaultPassword", "c2f_LoadProperty_DefaultPassword");
}
function c2f_LoadProperty_DefaultUsername(property:String):Void
{
usernameTextInput.text=property;
}
function c2f_LoadProperty_DefaultPassword(property:String):Void
{
passwordTextInput.text=property;
}
FillInUsernameAndPassword();
stop();

View File

@ -0,0 +1,36 @@
import flash.external.*;
connectToServerButton.addEventListener("click", this, "connectToServer");
ExternalInterface.addCallback("c2f_connectToServer_callback", this, c2f_connectToServer_callback);
function connectToServer()
{
ExternalInterface.call("f2c_ConnectToServer", ipAddressTextInput.text, portTextInput.text, "c2f_connectToServer_callback");
}
function c2f_connectToServer_callback(callSucceeded : Boolean)
{
if (callSucceeded==false)
gotoAndStop("Main");
}
ExternalInterface.addCallback("c2f_NotifyConnectionAttemptToServerSuccess", this, c2f_NotifyConnectionAttemptToServerSuccess);
function c2f_NotifyConnectionAttemptToServerSuccess():Void
{
gotoAndStop("Accounts_RakNet");
}
ExternalInterface.addCallback("c2f_NotifyConnectionAttemptToServerFailure", this, c2f_NotifyConnectionAttemptToServerFailure);
function c2f_NotifyConnectionAttemptToServerFailure(resultCode:String, systemAddress:String):Void
{
// Result codes are:
// CONNECTION_ATTEMPT_FAILED
// ALREADY_CONNECTED
// NO_FREE_INCOMING_CONNECTIONS
// RSA_PUBLIC_KEY_MISMATCH
// CONNECTION_BANNED
// INVALID_PASSWORD
trace(resultCode);
gotoAndStop("Main");
}
stop();

View File

@ -0,0 +1,64 @@
import flash.external.*;
ExternalInterface.addCallback("c2f_QueryPlatform_CreateRoom_Callback", this, c2f_QueryPlatform_CreateRoom_Callback);
ExternalInterface.call("f2c_QueryPlatform","c2f_QueryPlatform_CreateRoom_Callback");
function c2f_QueryPlatform_CreateRoom_Callback(platform:String):Void
{
if (platform=="RakNet")
{
}
else
{
lanGameCheckbox.visible=false;
roomMembersCanInviteCheckbox.visible=false;
}
}
cancelButton.addEventListener("click", this, "Cancel");
function Cancel()
{
gotoAndStop("Lobby");
}
okButton.addEventListener("click", this, "CreateRoom");
function CreateRoom()
{
ExternalInterface.call("f2c_CreateRoom",
[roomNameTextInput.text,
mapNameTextInput.text,
Number(publicSlotsTextInput.text),
Number(reservedSlotsTextInput.text),
hiddenFromSearchesCheckbox.selected,
roomMembersCanInviteCheckbox.selected,
lanGameCheckbox.selected
]);
}
// Duplicated
ExternalInterface.addCallback("c2f_CreateRoom", this, c2f_CreateRoom);
function c2f_CreateRoom(resultCode:String, isLanGame:Boolean):Void
{
if (resultCode=="REC_SUCCESS")
{
if (isLanGame)
{
gotoAndStop("InGame");
}
else
{
gotoAndStop("InRoom");
}
}
else
{
trace("c2f_CreateRoom failure. Result= " + resultCode);
/*
REC_CREATE_ROOM_UNKNOWN_TITLE,
REC_CREATE_ROOM_CURRENTLY_IN_QUICK_JOIN,
REC_CREATE_ROOM_CURRENTLY_IN_A_ROOM,
*/
}
}

View File

@ -0,0 +1,8 @@
import flash.external.*;
ExternalInterface.addCallback("c2f_NotifyServerConnectionLost", this, c2f_NotifyServerConnectionLost);
function c2f_NotifyServerConnectionLost(reason:String):Void
{
trace("Server connection lost. Reason=" + reason);
gotoAndStop("Main");
}

View File

@ -0,0 +1,589 @@
import flash.external.*;
function f2c_LeaveRoom()
{
ExternalInterface.call("f2c_LeaveRoom");
}
ExternalInterface.addCallback("c2f_LeaveRoom", this, c2f_LeaveRoom);
function c2f_LeaveRoom(resultCode:String):Void
{
if (resultCode=="REC_SUCCESS")
{
}
else
{
trace("c2f_LeaveRoom failure. Result= " + resultCode);
/*
REC_LEAVE_ROOM_UNKNOWN_ROOM_ID,
REC_LEAVE_ROOM_CURRENTLY_IN_QUICK_JOIN,
REC_LEAVE_ROOM_NOT_IN_ROOM,
*/
}
gotoAndStop("CreateRoom");
}
inviteFriendButton.addEventListener("click", this, "f2c_SendInvite");
function f2c_SendInvite()
{
ExternalInterface.call("f2c_SendInvite", playerNameTextInput.text,false);
}
ExternalInterface.addCallback("c2f_SendInvite", this, c2f_SendInvite);
function c2f_SendInvite(resultCode:String, inviteeName:String, inviteToSpectatorSlot:Boolean ):Void
{
if (resultCode=="REC_SUCCESS")
{
}
else
{
trace("c2f_SendInvite failure. Result= " + resultCode);
/*
REC_SEND_INVITE_UNKNOWN_ROOM_ID,
REC_SEND_INVITE_INVITEE_ALREADY_INVITED,
REC_SEND_INVITE_CANNOT_PERFORM_ON_SELF,
REC_SEND_INVITE_INVITOR_ONLY_MODERATOR_CAN_INVITE, // INVITE_MODE_MODERATOR_ONLY
REC_SEND_INVITE_INVITOR_LACK_INVITE_PERMISSIONS, // Any other INVITE_MODE
REC_SEND_INVITE_INVITOR_NOT_IN_ROOM,
REC_SEND_INVITE_NO_SLOTS,
REC_SEND_INVITE_INVITEE_ALREADY_IN_THIS_ROOM,
REC_SEND_INVITE_INVITEE_BANNED,
REC_SEND_INVITE_RECIPIENT_NOT_ONLINE,
REC_SEND_INVITE_ROOM_LOCKED,
*/
}
}
startSpectatingButton.addEventListener("click", this, "f2c_StartSpectating");
function f2c_StartSpectating()
{
ExternalInterface.call("f2c_StartSpectating");
}
ExternalInterface.addCallback("c2f_StartSpectating", this, c2f_StartSpectating);
function c2f_StartSpectating(resultCode:String):Void
{
if (resultCode=="REC_SUCCESS")
{
}
else
{
trace("c2f_StartSpectating failure. Result= " + resultCode);
/*
REC_START_SPECTATING_UNKNOWN_ROOM_ID,
REC_START_SPECTATING_ALREADY_SPECTATING,
REC_START_SPECTATING_NO_SPECTATOR_SLOTS_AVAILABLE,
REC_START_SPECTATING_NOT_IN_ROOM,
REC_START_SPECTATING_REASSIGN_MODERATOR_BEFORE_SPECTATE,
REC_START_SPECTATING_ROOM_LOCKED,
*/
}
}
stopSpectatingButton.addEventListener("click", this, "f2c_StopSpectating");
function f2c_StopSpectating()
{
ExternalInterface.call("f2c_StopSpectating");
}
ExternalInterface.addCallback("c2f_StopSpectating", this, c2f_StopSpectating);
function c2f_StopSpectating(resultCode:String):Void
{
if (resultCode=="REC_SUCCESS")
{
}
else
{
trace("c2f_StopSpectating failure. Result= " + resultCode);
/*
REC_STOP_SPECTATING_UNKNOWN_ROOM_ID,
REC_STOP_SPECTATING_NOT_IN_ROOM,
REC_STOP_SPECTATING_NOT_CURRENTLY_SPECTATING,
REC_STOP_SPECTATING_NO_SLOTS,
REC_STOP_SPECTATING_ROOM_LOCKED,
*/
}
}
makeModeratorButton.addEventListener("click", this, "f2c_GrantModerator");
function f2c_GrantModerator()
{
ExternalInterface.call("f2c_GrantModerator", playerNameTextInput.text);
}
ExternalInterface.addCallback("c2f_GrantModerator", this, c2f_GrantModerator);
function c2f_GrantModerator(resultCode:String, newModerator:String):Void
{
if (resultCode=="REC_SUCCESS")
{
}
else
{
trace("c2f_GrantModerator failure. Result= " + resultCode);
/*
REC_GRANT_MODERATOR_UNKNOWN_ROOM_ID,
REC_GRANT_MODERATOR_NEW_MODERATOR_NOT_ONLINE,
REC_GRANT_MODERATOR_NOT_IN_ROOM,
REC_GRANT_MODERATOR_NEW_MODERATOR_NOT_IN_ROOM,
REC_GRANT_MODERATOR_CANNOT_PERFORM_ON_SELF,
REC_GRANT_MODERATOR_MUST_BE_MODERATOR_TO_GRANT_MODERATOR,
REC_GRANT_MODERATOR_NEW_MODERATOR_NOT_IN_PLAYABLE_SLOT,
*/
}
}
readyButton.addEventListener("click", this, "f2c_SetReadyStatus_true");
unreadyButton.addEventListener("click", this, "f2c_SetReadyStatus_false");
function f2c_SetReadyStatus_true()
{
ExternalInterface.call("f2c_SetReadyStatus", true);
}
function f2c_SetReadyStatus_false()
{
ExternalInterface.call("f2c_SetReadyStatus", false);
}
ExternalInterface.addCallback("c2f_SetReadyStatus", this, c2f_SetReadyStatus);
function c2f_SetReadyStatus():Void
{
var resultCode:String = arguments[0];
if (resultCode=="REC_SUCCESS")
{
var isReady:Boolean = arguments[1];
var readyUsersListSize:Number = arguments[2];
var argumentIndex=3;
for (var i:Number = 0; i < roomMemberListSize; i++)
{
var userName:String = arguments[argumentIndex++];
}
var unreadyUsersListSize:Number = arguments[argumentIndex++];
for (var i:Number = 0; i < roomMemberListSize; i++)
{
var userName:String = arguments[argumentIndex++];
}
}
else
{
trace("c2f_SetReadyStatus failure. Result= " + resultCode);
/*
REC_SET_READY_STATUS_UNKNOWN_ROOM_ID,
REC_SET_READY_STATUS_NOT_IN_ROOM,
REC_SET_READY_STATUS_NOT_IN_PLAYABLE_SLOT,
REC_SET_READY_STATUS_AUTO_LOCK_ALL_PLAYERS_READY,
*/
}
}
function f2c_GetReadyStatus()
{
ExternalInterface.call("f2c_GetReadyStatus");
}
ExternalInterface.addCallback("c2f_GetReadyStatus", this, c2f_GetReadyStatus);
function c2f_GetReadyStatus(resultCode:String):Void
{
if (resultCode=="REC_SUCCESS")
{
var readyUsersListSize:Number = arguments[1];
var argumentIndex=2;
for (var i:Number = 0; i < roomMemberListSize; i++)
{
var userName:String = arguments[argumentIndex++];
}
var unreadyUsersListSize:Number = arguments[argumentIndex++];
for (var i:Number = 0; i < roomMemberListSize; i++)
{
var userName:String = arguments[argumentIndex++];
}
}
else
{
trace("c2f_GetReadyStatus failure. Result= " + resultCode);
/*
REC_GET_READY_STATUS_NOT_IN_ROOM,
REC_GET_READY_STATUS_UNKNOWN_ROOM_ID,
*/
}
}
lockRoomButton.addEventListener("click", this, "f2c_SetRoomLockState_Locked");
unlockRoomButton.addEventListener("click", this, "f2c_SetRoomLockState_Unlocked");
function f2c_SetRoomLockState_Locked()
{
// NOT_LOCKED
// PLAYERS_LOCKED
// ALL_LOCKED
ExternalInterface.call("f2c_SetRoomLockState", "ALL_LOCKED");
}
function f2c_SetRoomLockState_Unlocked()
{
// NOT_LOCKED
// PLAYERS_LOCKED
// ALL_LOCKED
ExternalInterface.call("f2c_SetRoomLockState", "NOT_LOCKED");
}
ExternalInterface.addCallback("c2f_SetRoomLockState", this, c2f_SetRoomLockState);
function c2f_SetRoomLockState(resultCode:String, roomLockState:String):Void
{
if (resultCode=="REC_SUCCESS")
{
if ( roomLockState=="NOT_LOCKED")
{
teamsAreLockedLabel.text="Not Locked";
}
else
{
teamsAreLockedLabel.text="Locked";
}
}
else
{
trace("c2f_SetRoomLockState failure. Result= " + resultCode);
/*
REC_SET_ROOM_LOCK_STATE_UNKNOWN_ROOM_ID,
REC_SET_ROOM_LOCK_STATE_NOT_IN_ROOM,
REC_SET_ROOM_LOCK_STATE_MUST_BE_MODERATOR,
REC_SET_ROOM_LOCK_STATE_BAD_ENUMERATION_VALUE,
*/
}
}
function f2c_GetRoomLockState()
{
ExternalInterface.call("f2c_GetRoomLockState");
}
ExternalInterface.addCallback("c2f_GetRoomLockState", this, c2f_GetRoomLockState);
function c2f_GetRoomLockState(resultCode:String, roomLockState:String):Void
{
if (resultCode=="REC_SUCCESS")
{
// NOT_LOCKED
// PLAYERS_LOCKED
// ALL_LOCKED
if ( roomLockState=="NOT_LOCKED")
{
teamsAreLockedLabel.text="Not Locked";
}
else
{
teamsAreLockedLabel.text="Locked";
}
}
else
{
trace("c2f_GetRoomLockState failure. Result= " + resultCode);
/*
REC_GET_ROOM_LOCK_STATE_UNKNOWN_ROOM_ID,
REC_GET_ROOM_LOCK_STATE_NOT_IN_ROOM,
*/
}
}
function f2c_AreAllMembersReady()
{
ExternalInterface.call("f2c_AreAllMembersReady");
}
ExternalInterface.addCallback("c2f_AreAllMembersReady", this, c2f_AreAllMembersReady);
function c2f_AreAllMembersReady(resultCode:String, allReady:Boolean):Void
{
if (resultCode=="REC_SUCCESS")
{
}
else
{
trace("c2f_AreAllMembersReady failure. Result= " + resultCode);
/*
REC_ARE_ALL_MEMBERS_READY_UNKNOWN_ROOM_ID,
REC_ARE_ALL_MEMBERS_READY_NOT_IN_ROOM,
*/
}
}
kickSelectedPlayerButton.addEventListener("click", this, "f2c_KickMember");
function f2c_KickMember()
{
var memberName:String = roomMembersScrollingList.dataProvider[roomMembersScrollingList.selectedIndex];
ExternalInterface.call("f2c_KickMember", memberName,"Reason goes here");
}
ExternalInterface.addCallback("c2f_KickMember", this, c2f_KickMember);
function c2f_KickMember(resultCode:String, kickedMember:String, reason:String):Void
{
if (resultCode=="REC_SUCCESS")
{
}
else
{
trace("c2f_KickMember failure. Result= " + resultCode);
/*
REC_KICK_MEMBER_UNKNOWN_ROOM_ID,
REC_KICK_MEMBER_NOT_IN_ROOM,
REC_KICK_MEMBER_TARGET_NOT_ONLINE,
REC_KICK_MEMBER_TARGET_NOT_IN_YOUR_ROOM,
REC_KICK_MEMBER_MUST_BE_MODERATOR,
REC_KICK_MEMBER_CANNOT_PERFORM_ON_SELF,
*/
}
}
sendChatMessageButton.addEventListener("click", this, "f2c_Room_Chat_Func");
function f2c_Room_Chat_Func()
{
ExternalInterface.call("f2c_Room_Chat_Func", chatTextInput.text);
}
ExternalInterface.addCallback("c2f_Chat_Callback", this, c2f_Chat_Callback);
function c2f_Chat_Callback(resultCode:String, chatRecipient:String, chatTextInput:String):Void
{
if (resultCode=="REC_SUCCESS")
{
trace(chatRecipient + " >> " + chatTextInput + "\n");
chatTextArea.text+=chatRecipient + " >> " + chatTextInput + "\n";
}
else
{
trace("c2f_Chat_Callback failure. Result= " + resultCode + " when sent to " + chatRecipient);
/*
REC_CHAT_USER_NOT_IN_ROOM,
REC_CHAT_RECIPIENT_NOT_ONLINE,
REC_CHAT_RECIPIENT_NOT_IN_ANY_ROOM,
REC_CHAT_RECIPIENT_NOT_IN_YOUR_ROOM,
*/
}
}
ExternalInterface.addCallback("c2f_Chat_Notification", this, c2f_Chat_Notification);
function c2f_Chat_Notification(sender:String, chatRecipient:String, chatTextInput:String, profanityFilteredTextInput:String ):Void
{
chatTextArea.text+=sender + " << " + chatTextInput + "\n";
}
startGameButton.addEventListener("click", this, "f2c_StartGame");
function f2c_StartGame()
{
ExternalInterface.call("f2c_StartGame");
}
ExternalInterface.addCallback("c2f_StartGame", this, c2f_StartGame);
function c2f_StartGame( resultCode:String ):Void
{
// Result of asking C++ to start the game
if (resultCode=="START_GAME_SUCCESS")
{
}
else
{
trace("c2f_StartGame failure. Result= " + resultCode);
/*
User defined codes here
*/
}
}
ExternalInterface.addCallback("c2f_StartGame_Notification", this, c2f_StartGame_Notification);
function c2f_StartGame_Notification( ):Void
{
// Tell actionscript that C++ start the game
}
ExternalInterface.addCallback("c2f_RoomMemberStartedSpectating_Callback", this, c2f_RoomMemberStartedSpectating_Callback)
function c2f_RoomMemberStartedSpectating_Callback( userName:String ):Void
{
}
ExternalInterface.addCallback("c2f_RoomMemberStoppedSpectating_Callback", this, c2f_RoomMemberStoppedSpectating_Callback)
function c2f_RoomMemberStoppedSpectating_Callback( userName:String ):Void
{
}
ExternalInterface.addCallback("c2f_ModeratorChanged_Callback", this, c2f_ModeratorChanged_Callback)
function c2f_ModeratorChanged_Callback( newModerator:String, oldModerator:String ):Void
{
}
ExternalInterface.addCallback("c2f_RoomMemberReadyStatusSet_Callback", this, c2f_RoomMemberReadyStatusSet_Callback)
function c2f_RoomMemberReadyStatusSet_Callback( ):Void
{
var isReady:Boolean = arguments[0];
var roomMemberName:String = arguments[1];
var num:Number = arguments[2];
var argumentIndex=3;
// users in the ready state
for (var i:Number = 0; i < num; i++)
{
var roomMemberName = arguments[argumentIndex++];
}
num = arguments[argumentIndex++];
// Users in the unready state
for (var i:Number = 0; i < num; i++)
{
var roomMemberName = arguments[argumentIndex++];
}
}
ExternalInterface.addCallback("c2f_RoomLockStateSet_Callback", this, c2f_RoomLockStateSet_Callback)
function c2f_RoomLockStateSet_Callback( roomLockState:String ):Void
{
// NOT_LOCKED
// PLAYERS_LOCKED
// ALL_LOCKED
if ( roomLockState=="NOT_LOCKED")
{
teamsAreLockedLabel.text="Not Locked";
}
else
{
teamsAreLockedLabel.text="Locked";
}
}
function RemoveFromRoomMembersList(roomMember:String)
{
for (var i:Number = 0; i < roomMembersScrollingList.dataProvider.length; i++)
{
var memberName:String = roomMembersScrollingList.dataProvider[i];
if (memberName==roomMember)
{
roomMembersScrollingList.splice(i,1);
break;
}
}
}
function AddToRoomMembersList(roomMember:String)
{
for (var i:Number = 0; i < roomMembersScrollingList.dataProvider.length; i++)
{
var memberName:String = roomMembersScrollingList.dataProvider[i];
if (memberName==roomMember)
{
return;
}
}
roomMembersScrollingList.dataProvider.push(roomMember);
roomMembersScrollingList.dataProvider.invalidate();
}
ExternalInterface.addCallback("c2f_RoomMemberKicked_Callback", this, c2f_RoomMemberKicked_Callback)
function c2f_RoomMemberKicked_Callback( roomMember:String, moderator:String, reason:String ):Void
{
RemoveFromRoomMembersList(roomMember);
}
ExternalInterface.addCallback("c2f_RoomMemberLeftRoom_Callback", this, c2f_RoomMemberLeftRoom_Callback)
function c2f_RoomMemberLeftRoom_Callback( roomMember:String ):Void
{
RemoveFromRoomMembersList(roomMember);
}
ExternalInterface.addCallback("c2f_RoomMemberJoinedRoom_Callback", this,c2f_RoomMemberJoinedRoom_Callback)
function c2f_RoomMemberJoinedRoom_Callback( acceptedInvitorName:String, acceptedInvitorAddress:String, joiningMemberName:String, joiningMemberAddress:String ):Void
{
AddToRoomMembersList(joiningMemberName);
}
ExternalInterface.addCallback("c2f_RoomDestroyedOnModeratorLeft_Callback", this, c2f_RoomDestroyedOnModeratorLeft_Callback)
function c2f_RoomDestroyedOnModeratorLeft_Callback( oldModerator:String ):Void
{
trace("The room was destroyed.");
gotoAndStop("CreateRoom");
}
function f2c_GetRoomProperties()
{
ExternalInterface.call("f2c_GetRoomProperties");
}
ExternalInterface.addCallback("c2f_GetRoomProperties", this, c2f_GetRoomProperties)
function c2f_GetRoomProperties( ):Void
{
var resultCode:String = arguments[0];
if (resultCode=="REC_SUCCESS")
{
roomMembersScrollingList.dataProvider=[];
var roomName:String = arguments[1];
var roomMemberListSize:Number = arguments[2];
var argumentIndex=3;
for (var i:Number = 0; i < roomMemberListSize; i++)
{
var roomMemberName:String = arguments[argumentIndex++];
// RMM_MODERATOR
// RMM_PUBLIC
// RMM_RESERVED
// RMM_SPECTATOR_PUBLIC
// RMM_SPECTATOR_RESERVED
// RMM_ANY_PLAYABLE
// RMM_ANY_SPECTATOR
var roomMemberMode:String = arguments[argumentIndex++];
var roomMemberIsReady:Boolean = arguments[argumentIndex++];
var roomMemberAddress:String = arguments[argumentIndex++];
var roomMemberGuid:String = arguments[argumentIndex++];
roomMembersScrollingList.dataProvider.push(roomMemberName);
}
roomMembersScrollingList.dataProvider.invalidate();
var banListSize:Number = arguments[argumentIndex++];
for (var i:Number = 0; i < banListSize; i++)
{
var roomMemberName:String = arguments[argumentIndex++];
var reason:String = arguments[argumentIndex++];
}
// NOT_LOCKED
// PLAYERS_LOCKED
// ALL_LOCKED
var roomLockState:String = arguments[argumentIndex++];
var roomId:Number = arguments[argumentIndex++];
var automaticallyLockRoomWhenAllUsersAreReady:Boolean = arguments[argumentIndex++];
var roomIsHiddenFromSearches:Boolean = arguments[argumentIndex++];
// For both inviteToRoomPermission and inviteToSpectatorSlotPermission
// INVITE_MODE_ANYONE_CAN_INVITE,
// INVITE_MODE_MODERATOR_CAN_INVITE,
// INVITE_MODE_PUBLIC_SLOTS_CAN_INVITE,
// INVITE_MODE_RESERVED_SLOTS_CAN_INVITE,
// INVITE_MODE_SPECTATOR_SLOTS_CAN_INVITE,
// INVITE_MODE_MODERATOR_OR_PUBLIC_SLOTS_CAN_INVITE,
// INVITE_MODE_MODERATOR_OR_PUBLIC_OR_RESERVED_SLOTS_CAN_INVITE,
var inviteToRoomPermission:String = arguments[argumentIndex++];
var inviteToSpectatorSlotPermission:String = arguments[argumentIndex++];
roomNameLabel.text=roomName;
if ( roomLockState=="NOT_LOCKED")
{
teamsAreLockedLabel.text="Not Locked";
}
else
{
teamsAreLockedLabel.text="Locked";
}
}
else
{
trace("c2f_GetRoomProperties failure. Result= " + resultCode);
/*
REC_GET_ROOM_PROPERTIES_EMPTY_ROOM_NAME_AND_NOT_IN_A_ROOM,
REC_GET_ROOM_PROPERTIES_UNKNOWN_ROOM_NAME,
*/
}
}
f2c_GetRoomProperties();

View File

@ -0,0 +1,8 @@
import flash.external.*;
returnToTitleButton.addEventListener("click", this, "ReturnToTitle");
function ReturnToTitle()
{
// Disconnect from the server
ExternalInterface.call("f2c_Logoff");
}

View File

@ -0,0 +1,346 @@
import flash.external.*;
updateButton.addEventListener("click", this, "UpdateRoomsList");
function UpdateRoomsList()
{
var isNetUpdate:Boolean = netRadioButton.selected;
lobbyRoomsScrollingList.dataProvider=[];
ExternalInterface.call("f2c_UpdateRoomsList", isNetUpdate);
// If the platform requires friends in the scaleform UI, this will update it.
ExternalInterface.call("f2c_QueryPlatform","c2f_QueryPlatform_Lobby_Callback");
}
netRadioButton.addEventListener("click", this, "UpdateRoomsList");
lanRadioButton.addEventListener("click", this, "UpdateRoomsList");
joinRoomButton.addEventListener("click", this, "JoinRoom");
function JoinRoom()
{
// 0th element is the unique room id, used as a search flag for when joining a room
// How do I tell if lobbyRoomsScrollingList has a selection active?
ExternalInterface.call("f2c_JoinByFilter",
Boolean(lobbyRoomsScrollingList.dataProvider[lobbyRoomsScrollingList.selectedIndex][0]), // isFromNetwork
Number(lobbyRoomsScrollingList.dataProvider[lobbyRoomsScrollingList.selectedIndex][1]), // guid
String(lobbyRoomsScrollingList.dataProvider[lobbyRoomsScrollingList.selectedIndex][2]) // IP address
);
}
ExternalInterface.addCallback("c2f_JoinByFilter", this, c2f_JoinByFilter);
function c2f_JoinByFilter( resultCode:String ):Void
{
if (resultCode=="REC_SUCCESS")
gotoAndStop("inRoom");
else
{
trace("c2f_JoinByFilter failure. Result= " + resultCode);
/*
REC_JOIN_BY_FILTER_UNKNOWN_TITLE,
REC_JOIN_BY_FILTER_NO_ROOMS,
REC_JOIN_BY_FILTER_CURRENTLY_IN_A_ROOM,
REC_JOIN_BY_FILTER_CURRENTLY_IN_QUICK_JOIN,
REC_JOIN_BY_FILTER_CANNOT_JOIN_AS_MODERATOR,
REC_JOIN_BY_FILTER_ROOM_LOCKED,
REC_JOIN_BY_FILTER_BANNED,
REC_JOIN_BY_FILTER_NO_SLOTS,
*/
}
}
createRoomButton.addEventListener("click", this, "CreateRoom");
function CreateRoom()
{
gotoAndStop("CreateRoom");
}
manageFriendsButton.addEventListener("click", this, "ManageFriends");
function ManageFriends()
{
gotoAndStop("ManageFriends_PC");
}
logoffButton.addEventListener("click", this, "Logoff");
function Logoff()
{
ExternalInterface.call("f2c_Logoff");
}
chatTextInput.addEventListener("textChange", this, "UpdateSendButton");
chatRecipient.addEventListener("textChange", this, "UpdateSendButton");
function UpdateSendButton()
{
if (chatTextInput.text.length>0 && chatRecipient.text.length>0)
sendChatButton.enabled=true;
else
sendChatButton.enabled=false;
}
sendChatButton.addEventListener("click", this, "Chat_Func");
function Chat_Func()
{
if (chatTextInput.text.length>0 && chatRecipient.text.length>0)
{
ExternalInterface.call("f2c_Directed_Chat_Func", chatRecipient.text, chatTextInput.text);
}
}
ExternalInterface.addCallback("c2f_Chat_Callback", this, c2f_Chat_Callback);
function c2f_Chat_Callback(resultCode:String, chatRecipient:String, chatTextInput:String):Void
{
if (resultCode=="REC_SUCCESS")
{
chatTextArea.text+=chatRecipient + " >> " + chatTextInput + "\n";
}
else
{
trace("c2f_Chat_Callback failure. Result= " + resultCode + " when sent to " + chatRecipient);
/*
REC_CHAT_USER_NOT_IN_ROOM,
REC_CHAT_RECIPIENT_NOT_ONLINE,
REC_CHAT_RECIPIENT_NOT_IN_ANY_ROOM,
REC_CHAT_RECIPIENT_NOT_IN_YOUR_ROOM,
*/
}
}
ExternalInterface.addCallback("c2f_Chat_Notification", this, c2f_Chat_Notification);
function c2f_Chat_Notification(sender:String, chatRecipient:String, chatTextInput:String, profanityFilteredTextInput:String ):Void
{
chatTextArea.text+=sender + " << " + chatTextInput + "\n";
}
ExternalInterface.addCallback("c2f_Client_Logoff", this, c2f_Client_Logoff);
function c2f_Client_Logoff(resultCode:String):Void
{
gotoAndStop("Main");
}
function UpdateFriendsList()
{
lobbyFriendsScrollingList.dataProvider=[];
ExternalInterface.call("f2c_UpdateFriendsList");
}
function c2f_QueryPlatform_Lobby_Callback(platform:String):Void
{
if (platform=="RakNet")
{
UpdateFriendsList();
}
else
{
// This stuff is handled thought internal menus on the XBOX 360 and PS3
friendsStatusLabel.visible=false;
lobbyFriendsScrollingList.visible=false;
lobbyFriendsScrollBar.visible=false;
manageFriendsButton.visible=false;
chatTextArea.visible=false;
sendChatButton.visible=false;
chatLabel1.visible=false;
chatLabel2.visible=false;
chatRecipient.visible=false;
chatTextInput.visible=false;
chatScrollBar.visible=false;
// Only NET on the XBOX 360 and PS3
netRadioButton.visible=false;
lanRadioButton.visible=false;
}
}
ExternalInterface.addCallback("c2f_AddSingleRoom", this, c2f_AddSingleRoom);
function c2f_AddSingleRoom():Void
{
var roomIsFromServer = arguments[0];
var roomId:Number = arguments[1];
var ipAddrAndPort:String = arguments[2];
var roomName:String = arguments[3];
var numRoomMembers:Number = arguments[4];
var maxRoomMembers:Number = arguments[5];
var mapName:String = arguments[6];
lobbyRoomsScrollingList.dataProvider.push([roomIsFromServer,roomId,ipAddrAndPort,roomName,numRoomMembers,maxRoomMembers,mapName]);
lobbyRoomsScrollingList.dataProvider.invalidate();
}
ExternalInterface.addCallback("c2f_SearchByFilter_Callback", this, c2f_SearchByFilter_Callback);
function c2f_SearchByFilter_Callback():Void
{
// push statements below do not work unless I clear the list first. I don't know why though.
lobbyRoomsScrollingList.dataProvider=[];
var resultCode:String = arguments[0];
if (resultCode=="REC_SUCCESS")
{
var num:Number = arguments[1];
var startingIdx:Number=2;
for (var i:Number = 0; i < num; i++)
{
var roomIsFromServer = arguments[startingIdx+i*7+0];
var roomId:Number = arguments[startingIdx+i*7+1];
var ipAddrAndPort:String = arguments[startingIdx+i*7+2];
var roomName:String = arguments[startingIdx+i*7+3];
var numRoomMembers:Number = arguments[startingIdx+i*7+4];
var maxRoomMembers:Number = arguments[startingIdx+i*7+5];
var mapName:String = arguments[startingIdx+i*7+6];
lobbyRoomsScrollingList.dataProvider.push([roomIsFromServer,roomId,ipAddrAndPort,roomName,numRoomMembers,maxRoomMembers,mapName]);
lobbyRoomsScrollingList.dataProvider.invalidate();
}
}
else
{
// Unknown title (Programmer error).
trace(resultCode);
// REC_SEARCH_BY_FILTER_UNKNOWN_TITLE,
}
}
ExternalInterface.addCallback("c2f_Friends_GetInvites", this, c2f_Friends_GetInvites);
function c2f_Friends_GetInvites():Void
{
var resultCode:String = arguments[0];
if (resultCode=="L2RC_SUCCESS")
{
var num:Number = arguments[1];
var startingIdx:Number=2;
// Invites received
for (var i:Number = 0; i < num; i++)
{
// params are same as c2f_Friends_GetFriends
var handle:String = arguments[startingIdx+i*5+0];
var isOnline:Boolean = arguments[startingIdx+i*5+1];
var isVisible:Boolean = arguments[startingIdx+i*5+2];
var loggedInTitle:String = arguments[startingIdx+i*5+3];
var status:String = arguments[startingIdx+i*5+4];
lobbyFriendsScrollingList.dataProvider.push(["Got invitation", handle,isOnline,isVisible,loggedInTitle,status]);
}
// Invites sent
startingIdx+=num*5;
num=arguments[startingIdx++];
for (var i:Number = 0; i < num; i++)
{
// params are same as c2f_Friends_GetFriends
var handle:String = arguments[startingIdx+i*5+0];
var isOnline:Boolean = arguments[startingIdx+i*5+1];
var isVisible:Boolean = arguments[startingIdx+i*5+2];
var loggedInTitle:String = arguments[startingIdx+i*5+3];
var status:String = arguments[startingIdx+i*5+4];
lobbyFriendsScrollingList.dataProvider.push(["Sent invitation", handle,isOnline,isVisible,loggedInTitle,status]);
}
lobbyFriendsScrollingList.dataProvider.invalidate();
}
else
{
// For RakNet, cannot fail
trace(resultCode);
}
}
ExternalInterface.addCallback("c2f_Friends_GetFriends", this, c2f_Friends_GetFriends);
function c2f_Friends_GetFriends():Void
{
var resultCode:String = arguments[0];
if (resultCode=="L2RC_SUCCESS")
{
var num:Number = arguments[1];
var startingIdx:Number=2;
for (var i:Number = 0; i < num; i++)
{
// params are same as c2f_Friends_GetInvites
var handle:String = arguments[startingIdx+i*5+0];
var isOnline:Boolean = arguments[startingIdx+i*5+1];
var isVisible:Boolean = arguments[startingIdx+i*5+2];
var loggedInTitle:String = arguments[startingIdx+i*5+3];
var status:String = arguments[startingIdx+i*5+4];
lobbyFriendsScrollingList.dataProvider.push(["Is a friend", handle,isOnline,isVisible,loggedInTitle,status]);
lobbyFriendsScrollingList.dataProvider.invalidate();
}
}
else
{
// For RakNet, cannot fail
trace(resultCode);
}
}
ExternalInterface.addCallback("c2f_Notification_Friends_PresenceUpdate", this, c2f_Notification_Friends_PresenceUpdate);
function c2f_Notification_Friends_PresenceUpdate(otherHandle:String, onlineStatusSetToVisible:Boolean, loggedInTitle:String, status:String):Void
{
trace("c2f_Notification_Friends_PresenceUpdate, " + otherHandle + ", " + onlineStatusSetToVisible + ", " + loggedInTitle + ", " + status);
// Update the friends list if the platform requires it
ExternalInterface.call("f2c_QueryPlatform","c2f_QueryPlatform_Lobby_Callback");
}
// LAN connection attempt failed
ExternalInterface.addCallback("c2f_NotifyFailedConnectionAttempt", this, c2f_NotifyFailedConnectionAttempt);
function c2f_NotifyFailedConnectionAttempt(resultCode:String, systemAddress:String):Void
{
// Result codes are:
// CONNECTION_ATTEMPT_FAILED
// ALREADY_CONNECTED
// NO_FREE_INCOMING_CONNECTIONS
// RSA_PUBLIC_KEY_MISMATCH
// CONNECTION_BANNED
// INVALID_PASSWORD
trace(resultCode);
gotoAndStop("Main");
}
ExternalInterface.addCallback("c2f_NotifyNewConnection", this, c2f_NotifyNewConnection);
function c2f_NotifyNewConnection(systemAddress:String, rakNetGuid:String, isIncoming:Boolean):Void
{
trace("c2f_NotifyNewConnection, " + systemAddress + ", " + rakNetGuid + ", " + isIncoming);
// Connecting at this stage must be through the LAN
gotoAndStop("InGame");
}
ExternalInterface.addCallback("c2f_Notification_Friends_StatusChange", this, c2f_Notification_Friends_StatusChange);
function c2f_Notification_Friends_StatusChange(operation:String, otherHandle:String, onlineStatusSetToVisible:Boolean, loggedInTitle:String, status:String):Void
{
// operation can be:
// FRIEND_LOGGED_IN,
// FRIEND_LOGGED_OFF,
// FRIEND_ACCOUNT_WAS_DELETED,
// YOU_WERE_REMOVED_AS_A_FRIEND,
// GOT_INVITATION_TO_BE_FRIENDS,
// THEY_ACCEPTED_OUR_INVITATION_TO_BE_FRIENDS,
// THEY_REJECTED_OUR_INVITATION_TO_BE_FRIENDS,
trace("c2f_Notification_Friends_StatusChange, " + operation + ", " + otherHandle + ", " + onlineStatusSetToVisible + ", " + loggedInTitle + ", " + status);
// If the platform requires friends in the scaleform UI, this will update it.
ExternalInterface.call("f2c_QueryPlatform","c2f_QueryPlatform_Lobby_Callback");
}
ExternalInterface.addCallback("c2f_RoomInvitationSent_Callback", this, c2f_RoomInvitationSent_Callback)
function c2f_RoomInvitationSent_Callback( invitorName:String, inviteToSpectatorSlot:Boolean ):Void
{
trace("You got a room invitation from " + invitorName);
}
ExternalInterface.addCallback("c2f_RoomInvitationWithdrawn_Callback", this, c2f_RoomInvitationWithdrawn_Callback)
function c2f_RoomInvitationWithdrawn_Callback( invitorName:String, invitorAddress:String ):Void
{
trace("Your room invitation was withdrawn from " + invitorName);
}
sendChatButton.enabled=false;
netRadioButton.selected=true;
UpdateRoomsList();
stop();

View File

@ -0,0 +1,20 @@
import flash.external.*;
startButton.addEventListener("click", this, "Start");
ExternalInterface.addCallback("c2f_QueryPlatform_Main_Callback", this, c2f_QueryPlatform_Main_Callback);
function Start()
{
ExternalInterface.call("f2c_QueryPlatform","c2f_QueryPlatform_Main_Callback");
}
function c2f_QueryPlatform_Main_Callback(platform:String):Void
{
if (platform=="RakNet")
{
gotoAndStop("connectToServer_RakNet");
}
}
stop();

View File

@ -0,0 +1,108 @@
import flash.external.*;
sendInviteButton.addEventListener("click", this, "Friends_SendInvite");
function Friends_SendInvite()
{
ExternalInterface.call("f2c_Friends_SendInvite", usernameTextInput.text);
}
ExternalInterface.addCallback("c2f_Friends_SendInvite", this, c2f_Friends_SendInvite);
function c2f_Friends_SendInvite(resultCode:String, userHandle:String):Void
{
if (resultCode=="L2RC_SUCCESS")
{
trace("c2f_Friends_SendInvite success, " + userHandle);
}
else
{
// L2RC_Friends_SendInvite_UNKNOWN_TARGET_HANDLE
// L2RC_Friends_SendInvite_CANNOT_PERFORM_ON_SELF
// L2RC_DATABASE_CONSTRAINT_FAILURE
// L2RC_Friends_SendInvite_ALREADY_SENT_INVITE
// L2RC_Friends_SendInvite_ALREADY_FRIENDS
trace(resultCode);
}
}
removeButton.addEventListener("click", this, "Friends_Remove");
function Friends_Remove()
{
ExternalInterface.call("f2c_Friends_Remove", usernameTextInput.text);
}
ExternalInterface.addCallback("c2f_Friends_Remove", this, c2f_Friends_Remove);
function c2f_Friends_Remove(resultCode:String, targetHandle:String):Void
{
if (resultCode=="L2RC_SUCCESS")
{
trace("c2f_Friends_Remove success, " + targetHandle);
}
else
{
// L2RC_Friends_Remove_UNKNOWN_TARGET_HANDLE
// L2RC_Friends_Remove_CANNOT_PERFORM_ON_SELF
// L2RC_DATABASE_CONSTRAINT_FAILURE
// L2RC_Friends_Remove_NOT_FRIENDS
trace(resultCode);
}
}
acceptInviteButton.addEventListener("click", this, "Friends_AcceptInvite");
function Friends_AcceptInvite( )
{
ExternalInterface.call("f2c_Friends_AcceptInvite", usernameTextInput.text);
}
ExternalInterface.addCallback("c2f_Friends_AcceptInvite", this, c2f_Friends_AcceptInvite);
function c2f_Friends_AcceptInvite(resultCode:String, userHandle:String, onlineStatusSetToVisible:Boolean, loggedInTitle:String, status:String):Void
{
if (resultCode=="L2RC_SUCCESS")
{
trace("c2f_Friends_AcceptInvite success, " + userHandle + ", " + onlineStatusSetToVisible + ", " + loggedInTitle + ", " + status);
}
else
{
// L2RC_Friends_AcceptInvite_UNKNOWN_TARGET_HANDLE
// L2RC_Friends_AcceptInvite_CANNOT_PERFORM_ON_SELF
// L2RC_DATABASE_CONSTRAINT_FAILURE
// L2RC_Friends_AcceptInvite_NO_INVITE
trace(resultCode);
}
}
rejectInviteButton.addEventListener("click", this, "Friends_RejectInvite");
function Friends_RejectInvite()
{
ExternalInterface.call("f2c_Friends_RejectInvite", usernameTextInput.text);
}
ExternalInterface.addCallback("c2f_Friends_RejectInvite", this, c2f_Friends_RejectInvite);
function c2f_Friends_RejectInvite(resultCode:String, targetHandle:String):Void
{
if (resultCode=="L2RC_SUCCESS")
{
trace("c2f_Friends_RejectInvite success, " + targetHandle);
}
else
{
// L2RC_Friends_RejectInvite_UNKNOWN_TARGET_HANDLE
// L2RC_Friends_RejectInvite_CANNOT_PERFORM_ON_SELF
// L2RC_DATABASE_CONSTRAINT_FAILURE
// L2RC_Friends_RejectInvite_NO_INVITE
trace(resultCode);
}
}
backButton.addEventListener("click", this, "BackToLobby");
function BackToLobby()
{
gotoAndStop("Lobby");
}
stop();