Пример #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 HandleLoginMsg(InsightMessage _insightMsg)
        {
            if (_insightMsg is InsightNetworkMessage netMsg)
            {
                var message = (LoginMsg)_insightMsg.message;

                Debug.Log($"[ServerAuthentication] - Received login : {message.accountName} / {message.accountPassword}");

                if (Authenticated(message))                   //Login Sucessful
                {
                    var uniqueId = Guid.NewGuid().ToString();

                    registeredUsers.Add(new UserContainer {
                        connectionId = netMsg.connectionId,
                        uniqueId     = uniqueId,
                        username     = message.accountName
                    });

                    var responseToSend = new InsightNetworkMessage(new LoginMsg {
                        uniqueId = uniqueId
                    })
                    {
                        callbackId = _insightMsg.callbackId,
                        status     = CallbackStatus.Success
                    };
                    server.NetworkReply(netMsg.connectionId, responseToSend);
                }
                else                   //Login Failed
                {
                    var responseToSend = new InsightNetworkMessage(new LoginMsg())
                    {
                        callbackId = _insightMsg.callbackId,
                        status     = CallbackStatus.Error
                    };
                    server.NetworkReply(netMsg.connectionId, responseToSend);
                }
            }
            else
            {
                Debug.LogError("[ServerAuthentication] - Rejected (internal) login");
            }
        }
Пример #3
0
        private void HandleRegisterPlayerMsg(InsightMessage _insightMsg)
        {
            if (_insightMsg is InsightNetworkMessage netMsg)
            {
                // var message = (RegisterPlayerMsg) insightMsg.message;

                Debug.Log("[GameMasterManager] - Received player registration");

                var playerUniqueId = Guid.NewGuid().ToString();

                registeredPlayers.Add(new PlayerContainer {
                    connectionId = netMsg.connectionId,
                    uniqueId     = playerUniqueId
                });

                var responseToSend = new InsightNetworkMessage(
                    new RegisterPlayerMsg {
                    uniqueId = playerUniqueId
                })
                {
                    callbackId = _insightMsg.callbackId,
                    status     = CallbackStatus.Success
                };
                server.NetworkReply(netMsg.connectionId, responseToSend);
            }
            else
            {
                Debug.LogError("[GameMasterManager] - Rejected (Internal) player registration");
            }
        }
Пример #4
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);
                    }
                }
            });
        }