Ejemplo n.º 1
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);
            }
        }