static void Main(string[] args) { Board = new DemoBuilder().Build(); Writer = Console.Out; TileDisplay = new TileDisplay(new DisplayFactory()); BoardDisplay = new BoardDisplay(Writer, TileDisplay); MenuDisplay = new MenuDisplay(Writer, new List <MenuOption> { new MenuOption("Build"), }); Player = new TerraMysticaPlayer("Player 1", new Mermaids()); Player.Resources.Gold.Add(100); Player.Resources.Workers.Add(100); BoardDisplay.PrintHeader = true; PrintLoop(); Console.WriteLine($"{Player.Name}, Build a damn Dwelling!"); Console.ReadKey(); Console.Clear(); var tile = Board.TileForLocation(new HexLocation(3, 0)); var buildAction = new BuildAction(Board, Player, tile.Location); buildAction.Execute(); PrintLoop(); Console.WriteLine($"Good, good. Now dance for me!"); Console.ReadKey(); }
protected TerraMysticaAction(TerraMysticaPlayer player) { if (player == null) { throw new ArgumentNullException(nameof(player)); } this.Player = player; }
public TurnInScrollAction(TerraMysticaPlayer player, ITerraMysticaScroll scroll) : base(player) { if (scroll == null) { throw new ArgumentNullException(nameof(scroll)); } this.Scroll = scroll; }
public UsePowerAbilityAction(TerraMysticaPlayer player, IPowerAbility ability) : base(player) { if (player == null) { throw new ArgumentNullException(nameof(player)); } if (ability == null) { throw new ArgumentNullException(nameof(ability)); } this.Ability = ability; }
public CommitPriestAction(TerraMysticaPlayer player, CultTrack track, PriestSlot slot) : base(player) { if (track == null) { throw new ArgumentNullException(nameof(track)); } if (slot == null) { throw new ArgumentNullException(nameof(slot)); } this.CultTrack = track; this.Slot = slot; }
public BuildAction(IBoard <TerraTile> board, TerraMysticaPlayer player, ILocation location) : base(player) { if (board == null) { throw new ArgumentNullException(nameof(board)); } if (location == null) { throw new ArgumentNullException(nameof(location)); } if (player == null) { throw new ArgumentNullException(nameof(player)); } this.Board = board; this.Location = location; }
public UpgradeBuildingAction(IBoard <TerraTile> board, TerraMysticaPlayer player, Building building, BuildingUpgrade upgrade) : base(player) { if (board == null) { throw new ArgumentNullException(nameof(board)); } if (building == null) { throw new ArgumentNullException(nameof(building)); } if (upgrade == null) { throw new ArgumentNullException(nameof(upgrade)); } this.Board = board; this.Building = building; this.Upgrade = upgrade; }
public TerraformAction(IBoard <TerraTile> board, TerraMysticaPlayer player, ILocation location, TerrainType target) : base(player) { if (board == null) { throw new ArgumentNullException(nameof(board)); } if (location == null) { throw new ArgumentNullException(nameof(location)); } if (target == TerrainType.Void) { throw new InvalidOperationException(string.Format(Exceptions.InvalidVoidTerraform)); } this.Board = board; this.Location = location; this.Target = target; }
public UpgradeTerraformAction(TerraMysticaPlayer player) : base(player) { }
public static bool CanAfford(this TerraMysticaPlayer player, IEnumerable <IReadOnlyResource> cost) { return(cost.All(c => player.Resources.AllResources.ContainsKey(c.Name) && player.Resources.AllResources[c.Name].Amount >= c.Amount)); }
public UpgradeShippingAction(TerraMysticaPlayer player) : base(player) { }