public PrintAction(IMonopolyAction action, string preface = null, OutputStream outputStream = OutputStream.GameLog) { Action = action; Preface = preface; OutputStream = outputStream; }
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)); } }
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)); }
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)); } }
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")); }
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); }
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)); }
public void Execute(int playerId, IMonopolyAction action) { var tileId = (action as GoToTileIdAction).TileId; _context.Add(new MoveTileId(playerId, tileId, true)); }
public ActionTile(IMonopolyAction action) =>
public void Execute(int playerId, IMonopolyAction action) { _context.Add(new GiveJailCard(playerId)); }
string GetActionString(IMonopolyAction action, string preface) => _formatOutput.GetActionString(action, preface);