public ActionResult StartMission(int id, string userID) { if (userID == null) { userID = User.Identity.Name; } Character character = db.Characters.Where(y => y.ApplicationUserID == userID).FirstOrDefault(); Mission mission = db.Missions.Find(id); mission.MissionTasks = db.MissionTasks.Where(x => x.MissionID == mission.MissionID).ToList(); CharacterMission charMiss = new CharacterMission { CharacterID = character.CharacterID, MissionID = mission.MissionID, IsCompleted = false }; db.CharacterMissions.Add(charMiss); db.SaveChanges(); foreach (var m in mission.MissionTasks) { CharacterMissionTask characterMissionTask = new CharacterMissionTask { CharacterMissionTaskID = 1, CharacterID = character.CharacterID, MissionTaskID = m.MissionTaskID, CharacterMissionID = charMiss.CharacterMissionID, IsCompleted = false }; db.CharacterMissionTasks.Add(characterMissionTask); db.SaveChanges(); } var result = new MissionsController().CheckMission(charMiss.CharacterMissionID, userID); return(RedirectToAction("Index", "Missions", new { id = userID })); }
public ActionResult Index() { MissionVM model = new MissionVM(); model.Character = db.Characters.Where(x => x.ApplicationUserID == User.Identity.Name).First(); model.Missions = db.Missions.ToList(); model.Items = db.Items.ToList(); model.InProgressMissions = db.CharacterMissions.Where(x => x.CharacterID == model.Character.CharacterID).ToList(); model.Zombies = db.Zombies.ToList(); foreach (var mission in model.InProgressMissions) { mission.CharacterMissionTasks = db.CharacterMissionTasks.Where(x => x.CharacterMissionID == mission.CharacterMissionID).ToList(); } foreach (var mission in model.Missions) { mission.MissionTasks = db.MissionTasks.Where(x => x.MissionID == mission.MissionID).ToList(); } foreach (var mission in model.InProgressMissions) { var result = new MissionsController().CheckMission(mission.CharacterMissionID, User.Identity.Name); } db.SaveChanges(); base.SetModelProperties(model); return(View(model)); }
public ActionResult HarvestField(int fieldID, int plantID, string returnUrl) { CharacterField field = db.CharacterFields.Find(fieldID); Plant plant = db.Plants.Find(plantID); Character character = db.Characters.Where(x => x.ApplicationUserID == User.Identity.Name).FirstOrDefault(); field.PlantID = 0; field.IsEmpty = true; field.isFinished = false; character.CharacterMoney += plant.PlantRewardCoin; character.CharacterFood += plant.PlantRewardFood; var result = new MissionsController().HarvestMission(plantID, User.Identity.Name); db.SaveChanges(); return(Redirect(returnUrl)); }
public ActionResult AttackZombie(string zAAID, int invID) { Character character = db.Characters.Where(y => y.ApplicationUserID == User.Identity.Name).FirstOrDefault(); List <int> zombik = System.Web.Helpers.Json.Decode <List <int> >(zAAID); List <ZombieAttackAdventurer> zombies = new List <ZombieAttackAdventurer>(); foreach (var z in zombik) { var zombie = db.ZombieAttackAdventurers.Find(z); zombies.Add(zombie); } Inventory item = db.Inventories.Find(invID); Weapon weapon = db.Weapons.Find(item.ItemID); foreach (var z in zombies) { ZombieAttackAdventurer model = db.ZombieAttackAdventurers.Find(z.ZombieAttackAdventurerID); model.Zombie = db.Zombies.Find(model.ZombieID); var inv = db.Inventories.Find(invID); if (inv.ItemCurrentDurability > 0 && inv.ItemMaxDurability != 999) { inv.ItemCurrentDurability--; } else if (inv.ItemCurrentDurability > 0 && inv.ItemMaxDurability == 999) { } else { if (inv.ItemPieces > 0) { inv.ItemCurrentDurability = inv.ItemMaxDurability; inv.ItemPieces--; } } if (model.ZombieLife > weapon.WeaponDamage) { model.ZombieLife = model.ZombieLife - weapon.WeaponDamage; List <ZombieAttackAdventurer> zAA = db.ZombieAttackAdventurers.Where(x => x.CharacterID == character.CharacterID).Where(x => x.State == character.AdventureState).ToList(); zAA.ToArray()[0].isYourTurn = true; db.SaveChanges(); } else { var result = new MissionsController().KillingMission(model.Zombie.ZombieID, User.Identity.Name); var addXP = new CharactersController().ManageXPAndLevelUp(User.Identity.Name, model.Zombie.RewardXP, this.Request.FilePath); character.CharacterMoney += model.Zombie.RewardCoins; db.ZombieAttackAdventurers.Remove(model); db.SaveChanges(); List <ZombieAttackAdventurer> zAA = db.ZombieAttackAdventurers.Where(x => x.CharacterID == character.CharacterID).Where(x => x.State == character.AdventureState).ToList(); if (zAA.Count() != 0) { zAA.ToArray()[0].isYourTurn = true; } db.SaveChanges(); } } character.isYourTurn = false; db.SaveChanges(); return(RedirectToAction("OnAdventure", "Adventures", new { id = User.Identity.Name })); }
public ActionResult CollectReward(int AdId, string ChId) { AdventureDropVM model = new AdventureDropVM(); List <AdventureDrop> dropList = db.AdventureDrops.Where(a => a.AdventureID == AdId).ToList(); model.ItemList = db.Items.ToList(); model.Rewards = new List <Inventory>(); Character character = db.Characters.Where(y => y.ApplicationUserID == User.Identity.Name).FirstOrDefault(); if (character.IsOnAdventure == true) { Random rand = new Random(); foreach (var drop in dropList) { double myRand = rand.NextDouble(); if (myRand > (1 - drop.ItemDroprate)) { int addPieces = rand.Next(1, drop.ItemMaxDrop); Inventory inventory = new Inventory { CharacterID = character.CharacterID, ItemID = drop.DropableItemID, ItemPieces = addPieces }; var addItem = new AdventuresController().AddToInventory(character.CharacterID, drop.DropableItemID, addPieces); Inventory item = new Inventory { ItemID = drop.DropableItemID, ItemPieces = addPieces }; model.Rewards.Add(item); db.SaveChanges(); } } model.AdventureXPReward = db.Adventures.Find(AdId).AdventureXPBonus; character.IsOnAdventure = false; character.FinishAdventure = DateTime.MaxValue; character.TolerancePlusDate = DateTime.Now.AddMinutes(5); var result = new MissionsController().AdventureMission(User.Identity.Name); if (AdId > character.AdventureMapState) { character.AdventureMapState = AdId; } db.SaveChanges(); } else { return(RedirectToAction("Details", "Characters", new { id = User.Identity.Name })); } base.SetModelProperties(model); return(View(model)); }
public async Task <ActionResult> Register(RegisterViewModel model) { DataContext db = new DataContext(); if (ModelState.IsValid) { var user = new ApplicationUser { UserName = model.Name, Email = model.Email }; var character = new Character { ApplicationUserID = model.Name, CharacterName = model.CharacterName, CharacterType = model.CharacterType, CharacterMoney = 0, FinishAdventure = DateTime.MaxValue, IsOnAdventure = false, AdventureMapState = 0, CurrentEnergy = 14, MaxEnergy = 14, CharacterLevel = 1, EnergyPlusDate = DateTime.MaxValue, LastZombieAttackTime = DateTime.Now, MaxTolerance = 20, Tolerance = 20, DailyMissionDate = DateTime.Now.AddDays(-1), TolerancePlusDate = DateTime.MaxValue }; var result = await UserManager.CreateAsync(user, model.Password); if (result.Succeeded) { db.Characters.Add(character); db.SaveChanges(); var items = new List <Inventory> { new Inventory { CharacterID = character.CharacterID, ItemID = 1, ItemPieces = 1, ItemMaxDurability = db.Buildings.Where(x => x.ItemID == 1).First().ItemMaxDurability, ItemCurrentDurability = db.Buildings.Where(x => x.ItemID == 1).First().ItemMaxDurability }, new Inventory { CharacterID = character.CharacterID, ItemID = 7, ItemPieces = 1, ItemMaxDurability = db.Buildings.Where(x => x.ItemID == 7).First().ItemMaxDurability, ItemCurrentDurability = db.Buildings.Where(x => x.ItemID == 7).First().ItemMaxDurability }, new Inventory { CharacterID = character.CharacterID, ItemID = 13, ItemPieces = 1, ItemMaxDurability = db.Buildings.Where(x => x.ItemID == 13).First().ItemMaxDurability, ItemCurrentDurability = db.Buildings.Where(x => x.ItemID == 13).First().ItemMaxDurability }, new Inventory { CharacterID = character.CharacterID, ItemID = 19, ItemPieces = 1, ItemMaxDurability = db.Buildings.Where(x => x.ItemID == 19).First().ItemMaxDurability, ItemCurrentDurability = db.Buildings.Where(x => x.ItemID == 19).First().ItemMaxDurability }, new Inventory { CharacterID = character.CharacterID, ItemID = 83, ItemPieces = 1, ItemMaxDurability = db.Buildings.Where(x => x.ItemID == 83).First().ItemMaxDurability, ItemCurrentDurability = db.Buildings.Where(x => x.ItemID == 83).First().ItemMaxDurability }, new Inventory { CharacterID = character.CharacterID, ItemID = 88, ItemPieces = 1, ItemMaxDurability = db.Buildings.Where(x => x.ItemID == 88).First().ItemMaxDurability, ItemCurrentDurability = db.Buildings.Where(x => x.ItemID == 88).First().ItemMaxDurability }, new Inventory { CharacterID = character.CharacterID, ItemID = 59, ItemPieces = 1, ItemMaxDurability = 999, ItemCurrentDurability = 999 }, }; items.ForEach(s => db.Inventories.Add(s)); db.SaveChanges(); foreach (var item in db.Materials) { var ittem = new Inventory { CharacterID = character.CharacterID, ItemID = item.ItemID, ItemPieces = 0, ItemMaxDurability = item.ItemMaxDurability, ItemCurrentDurability = item.ItemMaxDurability }; db.Inventories.Add(ittem); } foreach (var item in db.BuildingMaterials) { var ittem = new Inventory { CharacterID = character.CharacterID, ItemID = item.ItemID, ItemPieces = 0, ItemMaxDurability = item.ItemMaxDurability, ItemCurrentDurability = item.ItemMaxDurability }; db.Inventories.Add(ittem); } var missionStart = new MissionsController().StartMission(1, model.Name); db.SaveChanges(); await SignInManager.SignInAsync(user, isPersistent : false, rememberBrowser : false); // For more information on how to enable account confirmation and password reset please visit http://go.microsoft.com/fwlink/?LinkID=320771 // Send an email with this link // string code = await UserManager.GenerateEmailConfirmationTokenAsync(user.Id); // var callbackUrl = Url.Action("ConfirmEmail", "Account", new { userId = user.Id, code = code }, protocol: Request.Url.Scheme); // await UserManager.SendEmailAsync(user.Id, "Confirm your account", "Please confirm your account by clicking <a href=\"" + callbackUrl + "\">here</a>"); return(RedirectToAction("Index", "Home")); } AddErrors(result); } // If we got this far, something failed, redisplay form return(View(model)); }
public ActionResult GetReward(int id) { Character character = db.Characters.Where(y => y.ApplicationUserID == User.Identity.Name).FirstOrDefault(); character.Inventory = db.Inventories.Where(x => x.CharacterID == character.CharacterID).ToList(); List <Item> items = db.Items.ToList(); CharacterMission characterMission = db.CharacterMissions.Find(id); List <CharacterMissionTask> characterMissionTasks = db.CharacterMissionTasks.Where(x => x.CharacterMissionID == characterMission.CharacterMissionID).ToList(); Mission mission = db.Missions.Find(characterMission.MissionID); List <MissionTask> missionTasks = db.MissionTasks.Where(x => x.MissionID == mission.MissionID).ToList(); foreach (var cmt in characterMissionTasks) { foreach (var mt in missionTasks) { if (mt.MissionTaskID == cmt.MissionTaskID) { foreach (var inv in character.Inventory) { if (mt.ItemID == inv.ItemID) { if (cmt.TaskProgress >= mt.ItemPieces) { inv.ItemPieces -= mt.ItemPieces; db.CharacterMissionTasks.Remove(cmt); character.CharacterMoney += mission.RewardICoins; var resultXP = new CharactersController().ManageXPAndLevelUp(User.Identity.Name, mission.RewardXP, this.Request.FilePath); } } } if (mt.ItemID == 0) { if (cmt.TaskProgress >= mt.ItemPieces) { db.CharacterMissionTasks.Remove(cmt); character.CharacterMoney += mission.RewardICoins; var resultXP = new CharactersController().ManageXPAndLevelUp(User.Identity.Name, mission.RewardXP, this.Request.FilePath); } } } } } db.SaveChanges(); characterMissionTasks = db.CharacterMissionTasks.Where(x => x.CharacterMissionID == characterMission.CharacterMissionID).ToList(); if (characterMissionTasks.Count() == 0) { db.CharacterMissions.Remove(characterMission); } db.SaveChanges(); if (mission.IsNextMission) { var result = new MissionsController().StartMission(mission.MissionID + 1, User.Identity.Name); } return(RedirectToAction("Index", "Missions", new { id = User.Identity.Name })); }
public ActionResult BaseDefenseFromZombie(int ZabID, int AttackPower, int invID) { BaseDefenseFromZombiesVM model = new BaseDefenseFromZombiesVM(); model.ZombieAttackBase = db.ZombieAttackBases.Find(ZabID); model.Zombie = db.Zombies.Find(model.ZombieAttackBase.ZombieID); model.Character = db.Characters.Find(model.ZombieAttackBase.CharacterID); ICollection <Inventory> inventory = model.Character.Inventory; model.Weapon = db.Weapons.Find(59); if (invID != 0) { var inv = db.Inventories.Find(invID); if (inv.ItemCurrentDurability > 1 && inv.ItemMaxDurability != 999) { inv.ItemCurrentDurability--; } else if (inv.ItemCurrentDurability > 1 && inv.ItemMaxDurability == 999) { } else { if (inv.ItemPieces > 0) { inv.ItemCurrentDurability = inv.ItemMaxDurability; inv.ItemPieces--; } } } if (AttackPower > 0) { model.ZombieAttackBase.ZombieLife -= AttackPower; var result = new CharactersController().ManageEnergy(User.Identity.Name, 1, this.Request.Path); } model.BuyableWeapons = new List <BuyableWeapon>(); model.CraftableWeapons = new List <CraftableWeapon>(); foreach (var item in model.Character.Inventory) { foreach (var weap in db.BuyableWeapons) { if (item.ItemID == weap.ItemID) { model.BuyableWeapons.Add(weap); } } } foreach (var item in model.Character.Inventory) { foreach (var weap in db.CraftableWeapons) { if (item.ItemID == weap.ItemID) { model.CraftableWeapons.Add(weap); } } } if (model.ZombieAttackBase.ZombieLife <= 0) { var result = new MissionsController().KillingMission(model.Zombie.ZombieID, User.Identity.Name); db.SaveChanges(); base.SetModelProperties(model); return(RedirectToAction("CollectReward", "Zombies", new { zABID = model.ZombieAttackBase.ZombieAttackBaseID, rewardXP = model.Zombie.RewardXP, rewardCoin = model.Zombie.RewardCoins })); } db.SaveChanges(); base.SetModelProperties(model); return(View(model)); }