public static bool ApplyCampCost(int user_id) { using (var db = new MinionWarsEntities()) { List <CostObject> col = GetCampCosts(); List <UserTreasury> utl = db.UserTreasury.Where(x => x.user_id == user_id).ToList(); foreach (CostObject co in col) { UserTreasury ut = utl.Where(x => x.res_id == co.cost.r_id).First(); if (co.cost.amount.Value > ut.amount) { return(false); } else { ut.amount -= co.cost.amount.Value; db.UserTreasury.Attach(ut); db.Entry(ut).State = System.Data.Entity.EntityState.Modified; } } db.SaveChanges(); return(true); } }
public static bool ApplyBuildingCosts(int b_id, int user_id) { using (var db = new MinionWarsEntities()) { List <CostsBuilding> cbl = db.CostsBuilding.Where(x => x.b_id == b_id).ToList(); List <UserTreasury> utl = db.UserTreasury.Where(x => x.user_id == user_id).ToList(); foreach (CostsBuilding cb in cbl) { UserTreasury ut = utl.Where(x => x.res_id == cb.r_id).First(); if (cb.amount.Value > ut.amount) { return(false); } else { ut.amount -= cb.amount.Value; db.UserTreasury.Attach(ut); db.Entry(ut).State = System.Data.Entity.EntityState.Modified; } } db.SaveChanges(); return(true); } }
public static void ConsumeResourceNode(int user_id, int node_id) { using (var db = new MinionWarsEntities()) { ResourceNode node = db.ResourceNode.Find(node_id); UserTreasury ut = db.UserTreasury.Where(x => x.user_id == user_id && x.res_id == node.rtype_id).First(); ut.amount += 30; db.UserTreasury.Attach(ut); db.Entry(ut).State = System.Data.Entity.EntityState.Modified; db.ResourceNode.Remove(node); db.SaveChanges(); } }
public static void DestroyBuilding(int camp_id, int b_id, int type) { /* * 1 - resource * 2 - offensive * 3 - defensive * 4 - utility */ using (var db = new MinionWarsEntities()) { Camp camp = db.Camp.Find(camp_id); switch (type) { case 1: ResourceBuilding rb = db.ResourceBuilding.Find(b_id); 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; db.ResourceBuilding.Remove(rb); break; case 2: db.OffensiveBuilding.Remove(db.OffensiveBuilding.Find(b_id)); break; case 3: db.DefensiveBuilding.Remove(db.DefensiveBuilding.Find(b_id)); break; case 4: db.UtilityBuilding.Remove(db.UtilityBuilding.Find(b_id)); break; } camp.building_count--; db.Camp.Attach(camp); db.Entry(camp).State = System.Data.Entity.EntityState.Modified; db.SaveChanges(); } }
public static void GenerateNewUserResources(int id) { using (var db = new MinionWarsEntities()) { List <ResourceType> list = db.ResourceType.ToList(); foreach (ResourceType rt in list) { UserTreasury ut = new UserTreasury(); ut.user_id = id; ut.res_id = rt.id; ut.amount = 50; ut.generation = 3; db.UserTreasury.Add(ut); } db.SaveChanges(); } }
public static string ConsumeCaravan(int user_id, int car_id) { string res = ""; using (var db = new MinionWarsEntities()) { Caravan car = db.Caravan.Find(car_id); Camp camp = db.Camp.Find(car.source_id); Camp destination = db.Camp.Find(car.destination_id); /*Random r = new Random(); * List<CampTreasury> ctl = db.CampTreasury.Where(x => x.camp_id == camp.id).ToList(); * CampTreasury ct = ctl.OrderBy(x => r.Next()).First(); * ResourceType rt = db.ResourceType.Find(ct.res_id);*/ ResourceType rt = ResourceManager.getRandomRes().First(); res = rt.name; UserTreasury ut = db.UserTreasury.Where(x => x.user_id == user_id && x.res_id == rt.id).First(); ut.amount += 30; db.UserTreasury.Attach(ut); db.Entry(ut).State = System.Data.Entity.EntityState.Modified; camp.richness -= 1; destination.richness -= 1; db.Camp.Attach(camp); db.Entry(camp).State = System.Data.Entity.EntityState.Modified; db.Camp.Attach(destination); db.Entry(destination).State = System.Data.Entity.EntityState.Modified; db.Caravan.Remove(car); db.SaveChanges(); } return(res); }
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); } }