Files
SLikeNet/Samples/RoomsBrowserGFx3/Resources/InRoom.as
2025-11-24 14:19:51 +05:30

590 lines
16 KiB
ActionScript

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