public void HandleSetName(AdressedMessage adressedMessage) { if (game.started) { SendRequestDenied(adressedMessage); return; } SetNameMessage setNameMessage = (SetNameMessage)adressedMessage.message; lobby.players[adressedMessage.connectionID].name = setNameMessage.Name; int connectionID = adressedMessage.connectionID; NewPlayerMessage newPlayerMessage = new NewPlayerMessage { PlayerID = connectionID, PlayerColor = ColorExtentions.ToUInt(lobby.players[adressedMessage.connectionID].color), PlayerName = lobby.players[adressedMessage.connectionID].name }; //send new player to lobby foreach (KeyValuePair <int, Player> player in lobby.players) { if (player.Key == connectionID) { continue; } serverBehaviour.QeueMessage(new AdressedMessage(newPlayerMessage, player.Key)); } }
public void SendRequestDenied(AdressedMessage adressedMessage) { serverBehaviour.QeueMessage(new AdressedMessage(new RequestDeniedMessage() { MessageID = adressedMessage.message.ID }, adressedMessage.connectionID)); }
public void HandleLeaveDungeonRequest(AdressedMessage adressedMessage) { if (!ValidateMessage(adressedMessage.connectionID)) { SendRequestDenied(adressedMessage); return; } if (!game.LeaveDungeon(adressedMessage.connectionID)) { SendRequestDenied(adressedMessage); } }
public void HandleClaimTreasureRequest(AdressedMessage adressedMessage) { if (!ValidateMessage(adressedMessage.connectionID)) { SendRequestDenied(adressedMessage); return; } if (!game.ClaimTreasure(adressedMessage.connectionID)) { SendRequestDenied(adressedMessage); } }
public void HandleAttackRequest(AdressedMessage adressedMessage) { if (!ValidateMessage(adressedMessage.connectionID)) { SendRequestDenied(adressedMessage); return; } if (!game.Attack(adressedMessage.connectionID)) { SendRequestDenied(adressedMessage); } }
private void ProcessMessagesQueue() { while (receivedMessagesQueue.Count > 0) { AdressedMessage receivedMessage = receivedMessagesQueue.Dequeue(); ServerCallbacks[(int)receivedMessage.message.Type].Invoke(receivedMessage); } while (sendMessagesQueue.Count > 0) { AdressedMessage sendMessage = sendMessagesQueue.Dequeue(); SendMessage(sendMessage); } }
private void SendMessage(AdressedMessage adressedMessage) { var writer = networkDriver.BeginSend(connections[adressedMessage.connectionID]); adressedMessage.message.SerializeObject(ref writer); networkDriver.EndSend(writer); if (!lastSendTimes.ContainsKey(adressedMessage.connectionID)) { lastSendTimes.Add(adressedMessage.connectionID, Time.time); } else { lastSendTimes[adressedMessage.connectionID] = Time.time; } Debug.Log("Host Sending Message: " + adressedMessage.message.Type + ", to " + adressedMessage.connectionID); }
public void HandleMoveRequest(AdressedMessage adressedMessage) { if (!ValidateMessage(adressedMessage.connectionID)) { SendRequestDenied(adressedMessage); return; } RoomInfoMessage leftRoom = game.GetRoomInfo(adressedMessage.connectionID); if (game.MovePlayer(adressedMessage.connectionID, ((MoveRequestMessage)adressedMessage.message).direction)) { //player left messages foreach (int playerID in leftRoom.OtherPlayerIDs) { serverBehaviour.QeueMessage(new AdressedMessage(new PlayerLeaveRoomMessage() { PlayerID = adressedMessage.connectionID }, playerID)); } //player entered messages RoomInfoMessage enteredRoom = game.GetRoomInfo(adressedMessage.connectionID); foreach (int playerID in enteredRoom.OtherPlayerIDs) { serverBehaviour.QeueMessage(new AdressedMessage(new PlayerEnterRoomMessage() { PlayerID = adressedMessage.connectionID }, playerID)); } //roominfo message serverBehaviour.QeueMessage(new AdressedMessage(enteredRoom, adressedMessage.connectionID)); } else { SendRequestDenied(adressedMessage); } }
public void QeueMessage(AdressedMessage sendMessage) { sendMessagesQueue.Enqueue(sendMessage); }