Exemple #1
0
        private void HandleGameListMsg(InsightMessage _insightMsg)
        {
            // var message = (GameListMsg) insightMsg.message;

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

            var gamesListMsg = new GameListMsg();

            gamesListMsg.Load(registeredGameServers);

            var responseToSend = new InsightNetworkMessage(gamesListMsg)
            {
                callbackId = _insightMsg.callbackId,
                status     = CallbackStatus.Success
            };

            if (_insightMsg is InsightNetworkMessage netMsg)
            {
                server.NetworkReply(netMsg.connectionId, responseToSend);
            }
            else
            {
                server.InternalReply(responseToSend);
            }
        }
Exemple #2
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);
                    }
                }
            });
        }
Exemple #3
0
        //Instead of handling the msg here we will forward it to an available spawner.
        private void HandleSpawnRequestMsg(InsightMessage _insightMsg)
        {
            if (registeredSpawners.Count == 0)
            {
                Debug.LogError("[MasterSpawner] - No spawner regsitered to handle spawn request");
                return;
            }

            var message = (RequestSpawnStartToMasterMsg)_insightMsg.message;

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

            //Get all spawners that have atleast 1 slot free
            var freeSlotSpawners = registeredSpawners.FindAll(_e => _e.currentThreads < _e.maxThreads);

            //sort by least busy spawner first
            freeSlotSpawners = freeSlotSpawners.OrderBy(_e => _e.currentThreads).ToList();
            SendToSpawner(freeSlotSpawners[0].connectionId, message, _callbackMsg => {
                Debug.Log($"[MasterSpawner] - Game creation on child spawner : {_callbackMsg.status}");

                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);
                    }
                }
            });
        }
Exemple #4
0
        private void Reply(InsightMessage _insightMsg)
        {
            if (client)
            {
                client.NetworkReply((InsightNetworkMessage)_insightMsg);
                return;
            }

            if (server)
            {
                server.InternalReply(_insightMsg);
                return;
            }
            Debug.LogError("[ProcessSpawner] - Not initialized");
        }