public BuildingAttackRangeAdorner(DefensiveBuilding adornedBuilding) : base(adornedBuilding) { this.adornedBuilding = adornedBuilding; this.InitializeAttackRangeVisual(); this.InitializeAttackRangeVisualEffects(); }
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); }
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); } }