Пример #1
0
        private void HandleMatchGameMsg(InsightMessage _insightMsg)
        {
            var message = (MatchGameMsg)_insightMsg.message;

            Debug.Log("[ServerMatchMaker] - Received requesting match game");

            server.InternalSend(new JoinGameMsg {
                uniqueId     = message.uniqueId,
                gameUniqueId = GetFastestGame()
            }, _callbackMsg => {
                if (_insightMsg.callbackId != 0)
                {
                    var responseToSend = new InsightNetworkMessage(_callbackMsg)
                    {
                        callbackId = _insightMsg.callbackId
                    };

                    if (_insightMsg is InsightNetworkMessage netMsg)
                    {
                        server.NetworkReply(netMsg.connectionId, responseToSend);
                    }
                    else
                    {
                        server.InternalReply(responseToSend);
                    }
                }
            });
        }
Пример #2
0
        private void SendToSpawner(int _connectionId, RequestSpawnStartMsg _message, CallbackHandler _callback = null)
        {
            var message = new RequestSpawnStartToSpawnerMsg(_message);

            if (_connectionId == 0)
            {
                server.InternalSend(message, _callback);
            }
            else
            {
                server.NetworkSend(_connectionId, message, _callback);
            }
        }
Пример #3
0
        private void Send(InsightMessageBase _message, CallbackHandler _callback = null)
        {
            if (client)
            {
                client.NetworkSend(_message, _callback);
                return;
            }

            if (server)
            {
                server.InternalSend(_message, _callback);
                return;
            }
            Debug.LogError("[ProcessSpawner] - Not initialized");
        }
Пример #4
0
        private void HandleCreateGameMsg(InsightMessage _insightMsg)
        {
            var message = (CreateGameMsg)_insightMsg.message;

            Debug.Log("[GameMasterManager] - Received player requesting game creation");

            var requestSpawnStartMsg = new RequestSpawnStartToMasterMsg {
                gameName   = message.gameName,
                minPlayers = message.minPlayers,
                maxPlayers = message.maxPlayers
            };

            server.InternalSend(requestSpawnStartMsg, _callbackMsg => {
                Debug.Log($"[GameMasterManager] - Received games create : {_callbackMsg.status}");

                Assert.AreNotEqual(CallbackStatus.Default, _callbackMsg.status);
                switch (_callbackMsg.status)
                {
                case CallbackStatus.Success: {
                    var responseReceived = (RequestSpawnStartMsg)_callbackMsg.message;

                    var playerConnId = 0;
                    if (_insightMsg is InsightNetworkMessage netMsg)
                    {
                        playerConnId = netMsg.connectionId;
                    }

                    gameLaunchers.Add(responseReceived.gameUniqueId, new GameLauncher {
                            playerConnId   = playerConnId,
                            playerUniqueId = message.uniqueId,
                            message        = new InsightNetworkMessage(new ChangeServerMsg {
                                uniqueId       = responseReceived.gameUniqueId,
                                networkAddress = responseReceived.networkAddress,
                                networkPort    = responseReceived.networkPort
                            })
                            {
                                callbackId = _insightMsg.callbackId,
                                status     = CallbackStatus.Success
                            }
                        });

                    break;
                }

                case CallbackStatus.Error: {
                    var responseToSend = new InsightNetworkMessage(new ChangeServerMsg())
                    {
                        callbackId = _insightMsg.callbackId,
                        status     = CallbackStatus.Error
                    };

                    if (_insightMsg is InsightNetworkMessage netMsg)
                    {
                        server.NetworkReply(netMsg.connectionId, responseToSend);
                    }
                    else
                    {
                        server.InternalReply(responseToSend);
                    }

                    break;
                }

                case CallbackStatus.Timeout:
                    break;

                default:
                    throw new ArgumentOutOfRangeException();
                }
            });
        }