Esempio n. 1
0
        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);
            }
        }
Esempio n. 2
0
        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);
        }