public void SetUp() { player1 = new Player("Player 1"); player2 = new Player("Player 2"); game = Game.CreateNewGame(10, 10, player1, player2); log = new JsonMessageLog(); }
public Slot AddNewPieceAtRandomEmptySlot(Player owner) { var slot = GetRandomEmptySlot(); if (slot != null) AddNewPieceToSlot(slot, owner); return slot; }
public void PlayerNameUniquenessIsEnforced() { var paul = new Player("Paul"); var anotherPaul = new Player("Paul"); var game = Game.CreateNewGame(5, 5, paul, anotherPaul); Assert.AreEqual("Paul1", anotherPaul.Name); }
public void PlayerStartingPositionsAreLogged() { var player1 = new Player("Player 1"); var player2 = new Player("Player 2"); var game = Game.CreateNewGame(10, 10, player1, player2); var log = new JsonMessageLog(); var command = new StartGameCommand(); command.Execute(game, log); log.AssertMessageTypes(GameMessageType.NewGame, GameMessageType.PlayerAdded, GameMessageType.PlayerAdded); }
public void AddPlayer(Player player) { JsonObject obj = BuildGameMessageJson(GameMessageType.PlayerAdded, msg => { msg.name = player.Name; msg.color = string.Format("rgb({0},{1},{2})", (int)player.Color.R, (int)player.Color.G, (int)player.Color.B); msg.x = player.Position.X; msg.y = player.Position.Y; }); Messages.Add(obj); }
public void AddPlayer(Player player) { if (Players.Count >= Math.Min(Board.StartingPositions.Count, PlayerColors.Count)) throw new InvalidOperationException("Too many players."); if (player.Game != null) throw new InvalidOperationException(string.Format("Player '{0}' is already associated with a game", player.Name)); while (Players.Any(p => p.Name == player.Name)) player.Name = player.Name + "1"; player.Game = this; player.Color = PlayerColors[Players.Count]; Players.Add(player); }
private GameCommand ParseCommand(Player origin, string value) { dynamic jsonValue = JsonValue.Parse(value); string commandType = (string)jsonValue.Type; switch (commandType) { case "PlayerMoveCommand": return new PlayerMoveCommand { Direction = (Direction)Enum.Parse(typeof(Direction), (string)jsonValue.Direction), Player = origin }; default: throw new ArgumentException("Unknown command '{0}'", commandType); } }
public void TwoPlayersStartInOppositeCorners() { var player1 = new Player("Player 1"); var player2 = new Player("Player 2"); var game = Game.CreateNewGame(10, 10, player1, player2); var log = new JsonMessageLog(); var command = new StartGameCommand(); command.Execute(game, log); var pos1 = player1.Position; var pos2 = player2.Position; Assert.AreEqual(0, pos1.X); Assert.AreEqual(0, pos1.Y); Assert.AreEqual(9, pos2.X); Assert.AreEqual(9, pos2.Y); }
public void MovePlayer(Player player, Slot slot) { JsonObject obj = BuildGameMessageJson(GameMessageType.PlayerMoved, msg => { msg.player = player.Name; msg.x = slot.X; msg.y = slot.Y; }); Messages.Add(obj); }
public void RemovePlayer(Player player) { JsonObject obj = BuildGameMessageJson(GameMessageType.PlayerRemoved, msg => { msg.name = player.Name; }); Messages.Add(obj); }
public void SetUp() { player1 = new Player("Player 1"); player2 = new Player("Player 2"); game = Game.CreateNewGame(10, 10, player1, player2); }
internal GameConnection(GameWebSocketService client, Player player, HostedGame hostedGame) { this.Client = client; this.Player = player; this.hostedGame = hostedGame; }
public GameConnection TryAddPlayer(GameWebSocketService client, string name) { lock (gameLock) { if (Started) return null; clients.Add(client); var player = new Player(name); game.AddPlayer(player); if (clients.Count == config.NumberOfPlayers) StartGame(); return new GameConnection(client, player, this); } }
public void RemovePlayer(Player player, IMessageLog log) { Board.RemovePlayerAndPieces(player); log.RemovePlayer(player); Players.Remove(player); }
public void AddNewPieceToSlot(Slot slot, Player owner) { var newPiece = new Piece { Owner = owner }; slot.Piece = newPiece; }
public void RemovePlayerAndPieces(Player player) { foreach (var slot in Slots) { if (slot.Piece != null && slot.Piece.Owner == player) { slot.Piece = null; } if (slot.Player == player) { slot.Player = null; } } }