ACR_ServerCommunicator.ACR_ServerCommunicator.ScriptMain C# (CSharp) Method

ScriptMain() public method

public ScriptMain ( [ ScriptParameters, [ DefaultReturnCode ) : Int32
ScriptParameters [
DefaultReturnCode [
return System.Int32
        public Int32 ScriptMain([In] object[] ScriptParameters, [In] Int32 DefaultReturnCode)
        {
            Int32 ReturnCode;
            int RequestType = (int)ScriptParameters[0];

            //
            // If we haven't yet done one time initialization, do so now.
            //

            if (!ScriptInitialized)
            {
                InitializeServerCommunicator();
                ScriptInitialized = true;
            }

            //
            // Now dispatch the command request.
            //

            switch ((REQUEST_TYPE)RequestType)
            {

                case REQUEST_TYPE.INITIALIZE:
                    {
                        ReturnCode = 0;
                    }
                    break;

                case REQUEST_TYPE.SIGNAL_IPC_EVENT:
                    {
                        int SourcePlayerId = (int)ScriptParameters[1];
                        int SourceServerId = (int)ScriptParameters[2];
                        int DestinationPlayerId = (int)ScriptParameters[3];
                        int DestinationServerId = (int)ScriptParameters[4];
                        int EventType = (int)ScriptParameters[5];
                        string EventText = (string)ScriptParameters[6];

                        SignalIPCEvent(SourcePlayerId, SourceServerId, DestinationPlayerId, DestinationServerId, EventType, EventText);

                        ReturnCode = 0;
                    }
                    break;

                case REQUEST_TYPE.RESOLVE_CHARACTER_NAME_TO_PLAYER_ID:
                    {
                        string CharacterName = (string)ScriptParameters[6];

                        ReturnCode = ResolveCharacterNameToPlayerId(CharacterName);
                    }
                    break;

                case REQUEST_TYPE.RESOLVE_PLAYER_NAME:
                    {
                        string PlayerName = (string)ScriptParameters[6];

                        ReturnCode = ResolvePlayerName(PlayerName);
                    }
                    break;

                case REQUEST_TYPE.RESOLVE_PLAYER_ID_TO_SERVER_ID:
                    {
                        int PlayerId = (int)ScriptParameters[1];

                        ReturnCode = ResolvePlayerIdToServerId(PlayerId);
                    }
                    break;

                case REQUEST_TYPE.LIST_ONLINE_USERS:
                    {
                        uint PlayerObject = OBJECT_SELF;

                        ListOnlineUsers(PlayerObject);

                        ReturnCode = 0;
                    }
                    break;

                case REQUEST_TYPE.HANDLE_CHAT_EVENT:
                    {
                        int ChatMode = (int)ScriptParameters[1];
                        string ChatText = (string)ScriptParameters[6];
                        uint SenderObjectId = OBJECT_SELF;

                        ReturnCode = HandleChatEvent(ChatMode, ChatText, SenderObjectId);
                    }
                    break;

                case REQUEST_TYPE.HANDLE_CLIENT_ENTER:
                    {
                        uint SenderObjectId = OBJECT_SELF;

                        HandleClientEnter(SenderObjectId);

                        ReturnCode = 0;
                    }
                    break;

                case REQUEST_TYPE.IS_SERVER_ONLINE:
                    {
                        int ServerId = (int)ScriptParameters[1];

                        ReturnCode = IsServerOnline(ServerId) ? TRUE : FALSE;
                    }
                    break;

                case REQUEST_TYPE.ACTIVATE_SERVER_TO_SERVER_PORTAL:
                    {
                        int ServerId = (int)ScriptParameters[1];
                        int PortalId = (int)ScriptParameters[2];
                        uint PlayerObjectId = OBJECT_SELF;

                        ActivateServerToServerPortal(ServerId, PortalId, PlayerObjectId);

                        ReturnCode = 0;
                    }
                    break;

                case REQUEST_TYPE.HANDLE_CLIENT_LEAVE:
                    {
                        uint SenderObjectId = OBJECT_SELF;

                        HandleClientLeave(SenderObjectId);

                        ReturnCode = 0;
                    }
                    break;

                case REQUEST_TYPE.POPULATE_CHAT_SELECT:
                    {
                        uint PlayerObject = OBJECT_SELF;

                        ACR_PopulateChatSelect(PlayerObject);

                        ReturnCode = 0;
                    }
                    break;

                case REQUEST_TYPE.HANDLE_LATENCY_CHECK_RESPONSE:
                    {
                        uint PlayerObject = OBJECT_SELF;

                        HandleLatencyCheckResponse(PlayerObject);

                        ReturnCode = 0;
                    }
                    break;

                case REQUEST_TYPE.GET_PLAYER_LATENCY:
                    {
                        uint PlayerObject = OBJECT_SELF;

                        ReturnCode = GetPlayerLatency(PlayerObject);
                    }
                    break;

                case REQUEST_TYPE.DISABLE_CHARACTER_SAVE:
                    {
                        uint PlayerObject = OBJECT_SELF;

                        ReturnCode = DisableCharacterSave(PlayerObject) ? TRUE : FALSE;
                    }
                    break;

                case REQUEST_TYPE.ENABLE_CHARACTER_SAVE:
                    {
                        uint PlayerObject = OBJECT_SELF;

                        ReturnCode = EnableCharacterSave(PlayerObject) ? TRUE : FALSE;
                    }
                    break;

                case REQUEST_TYPE.PAUSE_HEARTBEAT:
                    {
                        //
                        // Default processing in DispatchPeriodicEvents runs
                        // below.
                        //

                        ReturnCode = 0;
                    }
                    break;

                case REQUEST_TYPE.HANDLE_QUARANTINE_PLAYER:
                    {
                        uint PlayerObject = OBJECT_SELF;

                        ReturnCode = HandleQuarantinePlayer(PlayerObject) ? TRUE : FALSE;
                    }
                    break;

                case REQUEST_TYPE.HANDLE_GUI_RESYNC:
                    {
                        int SourceServerId = (int)ScriptParameters[1];
                        string ResyncCommand = (string)ScriptParameters[6];

                        ReturnCode = GUIResynchronizer.HandleGUIResync(SourceServerId, ResyncCommand, this);
                    }
                    break;

                case REQUEST_TYPE.IS_SERVER_PUBLIC:
                    {
                        int ServerId = (int)ScriptParameters[1];

                        ReturnCode = IsServerPublic(ServerId) ? TRUE : FALSE;
                    }
                    break;

                case REQUEST_TYPE.HANDLE_SERVER_PING_RESPONSE:
                    {
                        int SourceServerId = (int)ScriptParameters[1];
                        string Argument = (string)ScriptParameters[6];

                        ReturnCode = ServerLatencyMeasurer.HandleServerPingResponse(SourceServerId, Argument, this);
                    }
                    break;

                default:
                    throw new ApplicationException("Invalid IPC script command " + RequestType.ToString());

            }

            //
            // Now that we are done, check if we've got any entries in the
            // local command queue to drain from the IPC worker thread, e.g. a
            // tell to deliver.
            //

            DispatchPeriodicEvents();

            return ReturnCode;
        }
ACR_ServerCommunicator