Example #1
0
        public BuildingAttackRangeAdorner(DefensiveBuilding adornedBuilding)
            : base(adornedBuilding)
        {
            this.adornedBuilding = adornedBuilding;

            this.InitializeAttackRangeVisual();
            this.InitializeAttackRangeVisualEffects();
        }
Example #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);
        }
Example #3
0
        public static bool CreateBuilding(int camp_id, int b_id)
        {
            using (var db = new MinionWarsEntities())
            {
                Camp      camp = db.Camp.Find(camp_id);
                Buildings b    = db.Buildings.Find(b_id);

                bool result = CostManager.ApplyBuildingCosts(b.id, camp.owner_id.Value);
                if (!result)
                {
                    return(false);
                }

                switch (b.type)
                {
                case "Resource Building":
                    ResourceBuilding rb = new ResourceBuilding();
                    rb.name     = b.name;
                    rb.camp_id  = camp_id;
                    rb.rtype_id = b.id;
                    db.ResourceBuilding.Add(rb);

                    UserTreasury ut = db.UserTreasury.Where(x => x.user_id == camp.owner_id && x.res_id == rb.rtype_id).First();
                    ut.generation += 5;
                    db.UserTreasury.Attach(ut);
                    db.Entry(ut).State = System.Data.Entity.EntityState.Modified;

                    break;

                case "Offensive Building":
                    OffensiveBuilding ob = new OffensiveBuilding();
                    ob.name      = b.name;
                    ob.minion_id = null;
                    ob.camp_id   = camp_id;
                    db.OffensiveBuilding.Add(ob);
                    break;

                case "Defensive Building":
                    DefensiveBuilding defb = new DefensiveBuilding();
                    defb.camp_id = camp_id;
                    if (b_id == 14)
                    {
                        camp.def_modifier += Int32.Parse(b.description);
                    }
                    else if (b_id == 17)
                    {
                        camp.size += Int32.Parse(b.description);
                    }
                    db.DefensiveBuilding.Add(defb);
                    break;

                case "Utility Building":
                    UtilityBuilding ub = new UtilityBuilding();
                    ub.camp_id     = camp_id;
                    ub.name        = b.name;
                    ub.type        = b_id;
                    ub.description = "";
                    db.UtilityBuilding.Add(ub);
                    break;
                }

                camp.building_count++;
                db.Camp.Attach(camp);
                db.Entry(camp).State = System.Data.Entity.EntityState.Modified;

                db.SaveChanges();

                return(true);
            }
        }