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); } } }); }
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"); } }
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"); } }
//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); } } }); }