public void AllDataWithoutPlayerNameAndUnits_SerializedDeserialized_Success() { var target = ServerClientConnectedTransferMessage.Create() .SetData(34, null, 43, 12); var parser = TransferMessageParserUtils.FindWriter(target); Assert.IsTrue(parser.IsWritable(target)); var data = parser.Write(target); Console.WriteLine(data); var obj = (ServerClientConnectedTransferMessage)parser.Read(data); Assert.AreEqual(target.CurrentCount, obj.CurrentCount); Assert.AreEqual(target.PlayerId, obj.PlayerId); Assert.AreEqual(target.PlayerName, obj.PlayerName); Assert.AreEqual(target.WaitingCount, obj.WaitingCount); }
public void AllDataWithPlayerName_SerializedDeserialized_Success() { var target = ServerClientConnectedTransferMessage.Create() .SetData(34, "Player1", 43, 12) .AddUnit(16, UnitUtils.UnitType.Warrior); var parser = TransferMessageParserUtils.FindWriter(target); Assert.IsTrue(parser.IsWritable(target)); var data = parser.Write(target); Console.WriteLine(data); var obj = (ServerClientConnectedTransferMessage)parser.Read(data); Assert.AreEqual(target.CurrentCount, obj.CurrentCount); Assert.AreEqual(target.PlayerId, obj.PlayerId); Assert.AreEqual(target.PlayerName, obj.PlayerName); Assert.AreEqual(target.WaitingCount, obj.WaitingCount); Assert.AreEqual(target.Units.Count, obj.Units.Count); Assert.AreEqual(target.Units[0].UnitId, obj.Units[0].UnitId); Assert.AreEqual(target.Units[0].UnitType, obj.Units[0].UnitType); }
protected override void Handle(ServerComponent server, int connectionKey, ClientConnectTransferMessage message) { var gameState = server.Entity.GetComponent <GameStateComponent>(); var newPlayer = new Player { PlayerId = connectionKey + 100500, PlayerName = message.PlayerName, Units = new List <Unit>() }; var unitsCount = Math.Min(message.UnitsData.Count, gameState.MaxUnitsCount); for (var i = 0; i < unitsCount; i++) { var newUnit = UnitUtils.BuildUnit(message.UnitsData[i].UnitType); newUnit.UnitId = i + 200; var skillsCount = Math.Min(message.UnitsData[i].Skills.Count, gameState.MaxSkillsCount); for (var j = 0; j < skillsCount; j++) { UnitUtils.ApplySkill(newPlayer, newUnit, message.UnitsData[i].Skills[j]); } newPlayer.Units.Add(newUnit); } for (var i = unitsCount; i < gameState.MaxUnitsCount; i++) { var newUnit = UnitUtils.GetRandomUnit(); newUnit.UnitId = i + 200; newPlayer.Units.Add(newUnit); } server.Response[connectionKey].Enqueue(ServerYouConnectedTransferMessage.Create() .SetPlayerId(newPlayer.PlayerId) .PopulateUnits(newPlayer.Units)); foreach (var player in gameState.Players) { server.Response[connectionKey].Enqueue(ServerClientConnectedTransferMessage.Create() .SetData(player.Value.PlayerId, player.Value.PlayerName, gameState.MaxPlayersCount, gameState.Players.Count) .PopulateUnits(player.Value.Units)); } gameState.Players[connectionKey] = newPlayer; foreach (var player in gameState.Players) { server.Response[player.Key].Enqueue(ServerClientConnectedTransferMessage.Create() .SetData(newPlayer.PlayerId, message.PlayerName, gameState.MaxPlayersCount, gameState.Players.Count) .PopulateUnits(newPlayer.Units)); } if (gameState.Players.Count == gameState.MaxPlayersCount) { ServerLogic.StartNewGame(gameState); foreach (var player in gameState.Players) { var responses = server.Response[player.Key]; responses.Enqueue(ServerGameStartedTransferMessage.Create().SetSize(gameState.Map.GetLength(0), gameState.Map.GetLength(1))); responses.Enqueue(ServerLogic.BuildCurrentStateForPlayer(gameState, player.Value)); responses.Enqueue(ServerYourTurnTransferMessage.Create()); } } }