Exemplo n.º 1
0
 public NotifyPathAggregateWhenCellsAreOccupied(MapAggregate map, TowersAggregate tower, WallsAggregate wall,
                                                [NotNull] PathFinderAggregate pathFinder)
 {
     _pathFinder = pathFinder ?? throw new ArgumentNullException(nameof(pathFinder));
     map.Events.OfType <MapEvent, MapEvent.Initialized>().Subscribe(HandleMapInitialized);
     tower.Events.OfType <TowersEvent, TowersEvent.TowerRepaired>().Subscribe(HandleTowerRepaired);
     wall.Events.OfType <WallsEvent, WallsEvent.WallRepaired>().Subscribe(HandleWallRepaired);
 }
 public UpdateTowersAndWallsAvailableScrap(TowersAggregate towers, WallsAggregate walls, ScrapWalletAggregate scrapWallet)
 {
     scrapWallet.Events
     .OfType <ScrapWalletEvent, ScrapWalletEvent.AvailableScrapChanged>()
     .Subscribe(changed =>
     {
         towers.UpdateAvailableScrap(changed.CurrentAmount);
         walls.UpdateAvailableScrap(changed.CurrentAmount);
     });
 }
    private void InitializeTowers(MapEvent.Initialized initialized, TowersAggregate towers)
    {
        var mapCoords = Enumerable.Range(0, initialized.MapCells.GetLength(0)).SelectMany(x => Enumerable.Range(0, initialized.MapCells.GetLength(1)).Select(y => new MapCoordinate(x, y)));

        var initialTowers = mapCoords
                            .Where(coord => initialized.MapCells[coord.X, coord.Y] is TowerCell)
                            .Select(coord => new TowerParameters(TowerIdentifier.Create(), coord, PickRandomTowerType()))
                            .ToArray();

        towers.Initialize(initialTowers);
    }
 public RepairTowersWhenMapCellClicked(MapAggregate map, TowersAggregate Towers)
 {
     map.Events
     .OfType <MapEvent, MapEvent.MapCellClicked>()
     .Subscribe(clicked => RepairTowers(clicked, Towers));
 }
 private void RepairTowers(MapEvent.MapCellClicked clicked, TowersAggregate Towers)
 {
     Towers.Repair(clicked.Coordinate);
 }
Exemplo n.º 6
0
 public DecreaseScrapWhenTowerRepaired(TowersAggregate towers, ScrapWalletAggregate scrapWallet, RepairCosts repairCosts)
 {
     towers.Events
     .OfType <TowersEvent, TowersEvent.TowerRepaired>()
     .Subscribe(_ => scrapWallet.Decrease(repairCosts.Tower));
 }
 public InitializeTowersWhenMapInitialized(MapAggregate map, TowersAggregate towers)
 {
     map.Events
     .OfType <MapEvent, MapEvent.Initialized>()
     .Subscribe(initialized => InitializeTowers(initialized, towers));
 }