public void SetUp()
 {
     player1 = new Player("Player 1");
     player2 = new Player("Player 2");
     game = Game.CreateNewGame(10, 10, player1, player2);
     log = new JsonMessageLog();
 }
Beispiel #2
0
 public Slot AddNewPieceAtRandomEmptySlot(Player owner)
 {
     var slot = GetRandomEmptySlot();
     if (slot != null)
         AddNewPieceToSlot(slot, owner);
     return slot;
 }
Beispiel #3
0
        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);
        }
Beispiel #5
0
        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);
        }
Beispiel #6
0
        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);
        }
Beispiel #7
0
 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);
        }
Beispiel #9
0
        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);
        }
Beispiel #10
0
        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);
 }
Beispiel #12
0
 internal GameConnection(GameWebSocketService client, Player player, HostedGame hostedGame)
 {
     this.Client = client;
     this.Player = player;
     this.hostedGame = hostedGame;
 }
Beispiel #13
0
        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);
            }
        }
Beispiel #14
0
 public void RemovePlayer(Player player, IMessageLog log)
 {
     Board.RemovePlayerAndPieces(player);
     log.RemovePlayer(player);
     Players.Remove(player);
 }
Beispiel #15
0
 public void AddNewPieceToSlot(Slot slot, Player owner)
 {
     var newPiece = new Piece { Owner = owner };
     slot.Piece = newPiece;
 }
Beispiel #16
0
        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;
                }
            }
        }