void RefreshVillageDetails() { this.VillageDetails = new List <VillageDetail>(); foreach (string buildingID in BuildingFactory.BuildingIDs) { this.VillageDetails.Add(new VillageDetail( buildingID, BuildingFactory.GetBuildingName(buildingID), (this.buildingCounts.ContainsKey(buildingID)) ? this.buildingCounts[buildingID] : 0, (null != this.townHall) ? this.townHall.TownHallLevel.Details[buildingID].MaxAllowed : 0)); } if (null != this.townHall && null != this.townHall.TownHallLevel) { this.TownHallLevelLabel = String.Format( "TownHall Level {0}", this.townHall.TownHallLevel.Level); } }
public Building AddBuilding(string buildingID) { Building newBuilding = null; if (String.IsNullOrEmpty(buildingID)) { throw new NullReferenceException("buildingID"); } else if (String.IsNullOrEmpty(BuildingFactory.GetBuildingName(buildingID))) { throw new ArgumentException(String.Format("Unknown BuildingID: '{0)'.", buildingID)); } if (!this.buildingCounts.ContainsKey(buildingID)) { this.buildingCounts.Add(buildingID, 0); } if (this.buildingCounts[buildingID] < this.townHall.TownHallLevel.Details[buildingID].MaxAllowed) { newBuilding = BuildingFactory.CreateBuilding(buildingID); newBuilding.IsDraggingChanged += new RoutedEventHandler(this.Building_IsDraggingChanged); newBuilding.IsSelectedChanged += new RoutedEventHandler(this.Building_IsSelectedChanged); newBuilding.SetBinding(Building.ShowSpawnShieldLayerProperty, this.SpawnShieldLayerBinding); DefensiveBuilding newDefensiveBuilding = newBuilding as DefensiveBuilding; if (null != newDefensiveBuilding) { newDefensiveBuilding.SetBinding(DefensiveBuilding.ShowAttackRangeLayerProperty, this.AttackRangeLayerBinding); } this.villageLayoutGrid.Children.Add(newBuilding); if (null != this.selectedBuilding) { int selectedColumn = Grid.GetColumn(this.selectedBuilding); int selectedRow = Grid.GetRow(this.selectedBuilding); int initialColumn = selectedColumn; int initialRow = selectedRow; switch (this.lastDirectionKey) { case (Key.Right): initialColumn = (Village.VillageGridSize < selectedColumn + this.selectedBuilding.GridWidth + newBuilding.GridWidth) ? selectedColumn - newBuilding.GridWidth : selectedColumn + this.selectedBuilding.GridWidth; break; case (Key.Left): initialColumn = (0 > selectedColumn - newBuilding.GridWidth) ? selectedColumn + this.selectedBuilding.GridWidth : selectedColumn - newBuilding.GridWidth; break; case (Key.Up): initialRow = (0 > selectedRow - newBuilding.GridHeight) ? selectedRow + this.selectedBuilding.GridHeight : selectedRow - newBuilding.GridHeight; break; case (Key.Down): initialRow = (Village.VillageGridSize < selectedRow + this.selectedBuilding.GridHeight + newBuilding.GridHeight) ? selectedRow - newBuilding.GridHeight : selectedRow + this.selectedBuilding.GridHeight; break; } Grid.SetColumn(newBuilding, initialColumn); Grid.SetRow(newBuilding, initialRow); } else { Grid.SetColumn(newBuilding, newBuilding.GridWidth); Grid.SetRow(newBuilding, newBuilding.GridHeight); } newBuilding.IsSelected = true; this.buildingCounts[buildingID]++; } this.RefreshVillageDetails(); return(newBuilding); }