コード例 #1
0
 public PrintAction(IMonopolyAction action, string preface = null,
                    OutputStream outputStream = OutputStream.GameLog)
 {
     Action       = action;
     Preface      = preface;
     OutputStream = outputStream;
 }
コード例 #2
0
        public void Execute(int playerId, IMonopolyAction action)
        {
            var amountPerPlayer = (action as GiftFromPlayersAction).Amount;

            foreach (var player in _context.GetPlayers(p => p.Id != playerId))
            {
                _context.Add(new ChargeCash(amountPerPlayer, player.Id, playerId));
            }
        }
コード例 #3
0
        public void Execute(int playerId, IMonopolyAction action)
        {
            var mapInfo = _context.MapInfo();

            if (mapInfo.JailId == null)
            {
                _context.Add(new PrintLine("No Jail present", OutputStream.GameLog));
                return;
            }

            _context.Add(new SendToJail(playerId));
        }
コード例 #4
0
        public void Execute(int playerId, IMonopolyAction actionIn)
        {
            var action = actionIn as ChangeBalanceAction;

            if (action.Amount < 0)
            {
                _context.Add(new ChargeCash(-action.Amount, playerId));
            }
            else
            {
                _context.Add(new GiveCash(action.Amount, playerId));
            }
        }
コード例 #5
0
        public void Execute(int playerId, IMonopolyAction action)
        {
            int sum = 0;

            foreach (var propId in _context.GetPlayer(playerId).Properties)
            {
                var dev = _context.GetTileComponent <PropertyDevelopment>(propId);
                if (dev != null)
                {
                    sum += dev.HousesBuilt * (action as TaxPerHouseAction).Amount;
                }
            }
            _context.Add(new ChargeCash(sum, playerId, message: "for houses built"));
        }
コード例 #6
0
        public string GetActionDescription(IMonopolyAction action)
        {
            var desc = "No description found";

            switch (action)
            {
            case ChangeBalanceAction balance:
                desc = $"{(balance.Amount < 0 ? "Charges" : "Gives")} {Math.Abs(balance.Amount)}$";
                break;

            case GiftFromPlayersAction gift:
                desc = $"Each player gifts you {gift.Amount}";
                break;

            case GoToJailAction jailGo:
                desc = "Sends player to jail";
                break;

            case GoToTileIdAction tileId:
                break;

            case GoToTileComponentAction tileComponent:
                var compTypeName = tileComponent.ComponentType.ShortTypeString();
                desc = $"Send player to tile with {compTypeName}";
                break;

            case JailCardAction jailCard:
                desc = "Gifts player a jail card";
                break;

            case TaxPerHouseAction taxPerHouse:
                desc = $"Taxes player {taxPerHouse.Amount} per house built";
                break;
            }
            return(desc);
        }
コード例 #7
0
 public ExecuteAction(IMonopolyAction action, int playerId)
 {
     Action   = action;
     PlayerId = playerId;
 }
        public void Execute(int playerId, IMonopolyAction action)
        {
            var componentType = (action as GoToTileComponentAction).ComponentType;

            _context.Add(new MoveType(playerId, componentType, false));
        }
コード例 #9
0
        public void Execute(int playerId, IMonopolyAction action)
        {
            var tileId = (action as GoToTileIdAction).TileId;

            _context.Add(new MoveTileId(playerId, tileId, true));
        }
コード例 #10
0
 public ActionTile(IMonopolyAction action) =>
コード例 #11
0
 public void Execute(int playerId, IMonopolyAction action)
 {
     _context.Add(new GiveJailCard(playerId));
 }
コード例 #12
0
 string GetActionString(IMonopolyAction action, string preface) =>
 _formatOutput.GetActionString(action, preface);