示例#1
0
        static string GetPlayerDirections(PlayerDirection direction)
        {
            var result = "";

            if (direction.HasFlag(PlayerDirection.ToTheLeft))
            {
                result += "<-";
            }
            if (direction.HasFlag(PlayerDirection.Myself))
            {
                result += "^";
            }
            if (direction.HasFlag(PlayerDirection.ToTheRight))
            {
                result += "->";
            }
            return(result);
        }
示例#2
0
        private int GetCoinsForStructureType(IGamePlayer player, IGamePlayer rightNeighbor, IGamePlayer leftNeighbor, StructureType type, PlayerDirection direction)
        {
            var coins = 0;

            if (direction.HasFlag(PlayerDirection.Myself))
            {
                coins += CountCards(player, type);
            }
            if (direction.HasFlag(PlayerDirection.ToTheLeft))
            {
                coins += CountCards(leftNeighbor, type);
            }
            if (direction.HasFlag(PlayerDirection.ToTheRight))
            {
                coins += CountCards(rightNeighbor, type);
            }
            return(coins);
        }
示例#3
0
        public static int GetVictoryPointsByConflictDefeat(IPlayer player, int quantity, StructureType structureType, PlayerDirection direction = PlayerDirection.Myself, IPlayer rightPlayer = null, IPlayer leftPlayer = null)
        {
            var total = 0;

            if (direction.HasFlag(PlayerDirection.Myself))
            {
                total += player.ConflictTokens.Count(t => t == ConflictToken.Defeat) * quantity;
            }
            if (direction.HasFlag(PlayerDirection.ToTheRight))
            {
                total += rightPlayer.ConflictTokens.Count(t => t == ConflictToken.Defeat) * quantity;
            }
            if (direction.HasFlag(PlayerDirection.ToTheLeft))
            {
                total += leftPlayer.ConflictTokens.Count(t => t == ConflictToken.Defeat) * quantity;
            }
            return(total);
        }
示例#4
0
        public static int GetVictoryPointsByStructureType(IPlayer player, int quantity, StructureType structureType, PlayerDirection direction = PlayerDirection.Myself, IPlayer rightPlayer = null, IPlayer leftPlayer = null)
        {
            var total = 0;

            if (direction.HasFlag(PlayerDirection.Myself))
            {
                total += player.Cards.Count(c => c.Type == structureType) * quantity;
            }
            if (direction.HasFlag(PlayerDirection.ToTheRight))
            {
                total += rightPlayer.Cards.Count(c => c.Type == structureType) * quantity;
            }
            if (direction.HasFlag(PlayerDirection.ToTheLeft))
            {
                total += leftPlayer.Cards.Count(c => c.Type == structureType) * quantity;
            }
            return(total);
        }
示例#5
0
        public static int GetVictoryPointsByWonderStage(IPlayer player, int quantity, PlayerDirection direction = PlayerDirection.Myself, IPlayer rightPlayer = null, IPlayer leftPlayer = null)
        {
            var total = 0;

            if (direction.HasFlag(PlayerDirection.Myself))
            {
                total += player.Wonder.StagesBuilt * quantity;
            }
            if (direction.HasFlag(PlayerDirection.ToTheRight))
            {
                total += rightPlayer.Wonder.StagesBuilt * quantity;
            }
            if (direction.HasFlag(PlayerDirection.ToTheLeft))
            {
                total += leftPlayer.Wonder.StagesBuilt * quantity;
            }
            return(total);
        }
示例#6
0
        private int GetCoinsForWonderStage(IGamePlayer player, IGamePlayer rightNeighbor, IGamePlayer leftNeighbor, PlayerDirection direction)
        {
            var coins = 0;

            if (direction.HasFlag(PlayerDirection.Myself))
            {
                coins += player.Wonder.StagesBuilt;
            }
            if (direction.HasFlag(PlayerDirection.ToTheLeft))
            {
                coins += leftNeighbor.Wonder.StagesBuilt;
            }
            ;
            if (direction.HasFlag(PlayerDirection.ToTheRight))
            {
                coins += rightNeighbor.Wonder.StagesBuilt;
            }
            return(coins);
        }