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 RepairMission(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 && mt.GetType().Name == "RepairMissionTask") { foreach (var inv in character.Inventory) { if (mt.ItemID == inv.ItemID) { cmt.TaskProgress++; } } } } } db.SaveChanges(); return(RedirectToAction("Index", "Missions", new { id = User.Identity.Name })); }
private static WBitStream GenXmlData(Character character) { using (var cdclient = new CdClientDb()) { var xml = ""; xml += "<?xml version=\"1.0\"?>"; xml += "<obj v=\"1\">"; xml += "<buff/>"; xml += "<skil/>"; xml += "<inv>"; xml += "<bag>"; xml += "<b t=\"0\" m=\"24\"/>"; xml += "</bag>"; xml += "<items>"; xml += "<in>"; // TODO: Write items //foreach (var item in character.Items) //{ // writer.WriteStartElement("i"); // <i> // writer.WriteAttributeString("l", item.); // writer.WriteEndElement(); // </i> //} xml += "</in>"; xml += "</items>"; xml += "</inv>"; xml += "<mf/>"; xml += "<chars cc=\"100\"></char>"; xml += $"<lvl l=\"{character.Level}\"/>"; xml += "<flag/>"; xml += "<pet/>"; if (character.Missions?.Any() ?? false) { xml += "<mis>"; xml += "<done>"; xml = character.Missions.Select(mission => CharacterMission.FromJson(mission)).Aggregate(xml, (current, missionData) => current + $"<m id=\"{missionData.Id}\" cts=\"{missionData.Timestamp}\" cct=\"{missionData.Count}\"/>"); xml += "</done>"; xml += "</mis>"; } xml += "<mnt/>"; xml += "<dest/>"; xml += "</obj>"; var bitStream = new WBitStream(); Console.WriteLine(xml); bitStream.WriteChars(xml); return(bitStream); } }
public IHttpActionResult GenerateDailyMissions() { Character character = db.Characters.Where(y => y.ApplicationUserID == User.Identity.Name).FirstOrDefault(); List <CharacterMission> characterMissions = db.CharacterMissions.Where(x => x.CharacterID == character.CharacterID).ToList(); List <CharacterMissionTask> characterMissionTasks = db.CharacterMissionTasks.Where(x => x.CharacterID == character.CharacterID).ToList(); foreach (var mission in db.DailyMissions) { foreach (var cm in characterMissions) { if (mission.MissionID == cm.MissionID) { foreach (var cmt in characterMissionTasks.Where(x => x.CharacterMissionTaskID == cm.CharacterMissionID).ToList()) { db.CharacterMissionTasks.Remove(cmt); } } } } db.SaveChanges(); foreach (var mission in db.DailyMissions) { foreach (var cm in characterMissions) { if (mission.MissionID == cm.MissionID) { if (cm.CharacterMissionTasks.Count == 0) { db.CharacterMissions.Remove(cm); } } } } db.SaveChanges(); Random rand = new Random(); List <DailyMission> dailyCollectMissions = new List <DailyMission>(); List <CollectMissionTask> dailyCollectMissionTasks = db.CollectMissionTasks.ToList(); foreach (var mission in db.DailyMissions) { foreach (var taskk in dailyCollectMissionTasks) { if (taskk.MissionID == mission.MissionID) { dailyCollectMissions.Add(mission); } } } int missionIndex = rand.Next(0, dailyCollectMissions.Count()); DailyMission selectedMission = dailyCollectMissions.ElementAt <DailyMission>(missionIndex); selectedMission.MissionTasks = db.MissionTasks.Where(x => x.MissionID == selectedMission.MissionID).ToList(); CharacterMission charMiss = new CharacterMission { CharacterID = character.CharacterID, MissionID = selectedMission.MissionID, IsCompleted = false }; db.CharacterMissions.Add(charMiss); db.SaveChanges(); foreach (var m in selectedMission.MissionTasks) { CharacterMissionTask characterMissionTask = new CharacterMissionTask { CharacterID = character.CharacterID, MissionTaskID = m.MissionTaskID, CharacterMissionID = charMiss.CharacterMissionID, IsCompleted = false }; db.CharacterMissionTasks.Add(characterMissionTask); db.SaveChanges(); } selectedMission = db.DailyMissions.Find(27); selectedMission.MissionTasks = db.MissionTasks.Where(x => x.MissionID == selectedMission.MissionID).ToList(); charMiss = new CharacterMission { CharacterID = character.CharacterID, MissionID = selectedMission.MissionID, IsCompleted = false }; db.CharacterMissions.Add(charMiss); db.SaveChanges(); foreach (var m in selectedMission.MissionTasks) { CharacterMissionTask characterMissionTask = new CharacterMissionTask { CharacterID = character.CharacterID, MissionTaskID = m.MissionTaskID, CharacterMissionID = charMiss.CharacterMissionID, IsCompleted = false }; db.CharacterMissionTasks.Add(characterMissionTask); db.SaveChanges(); } selectedMission = db.DailyMissions.Find(28); selectedMission.MissionTasks = db.MissionTasks.Where(x => x.MissionID == selectedMission.MissionID).ToList(); charMiss = new CharacterMission { CharacterID = character.CharacterID, MissionID = selectedMission.MissionID, IsCompleted = false }; db.CharacterMissions.Add(charMiss); db.SaveChanges(); foreach (var m in selectedMission.MissionTasks) { CharacterMissionTask characterMissionTask = new CharacterMissionTask { CharacterID = character.CharacterID, MissionTaskID = m.MissionTaskID, CharacterMissionID = charMiss.CharacterMissionID, IsCompleted = false }; db.CharacterMissionTasks.Add(characterMissionTask); db.SaveChanges(); } selectedMission = db.DailyMissions.Find(29); selectedMission.MissionTasks = db.MissionTasks.Where(x => x.MissionID == selectedMission.MissionID).ToList(); charMiss = new CharacterMission { CharacterID = character.CharacterID, MissionID = selectedMission.MissionID, IsCompleted = false }; db.CharacterMissions.Add(charMiss); db.SaveChanges(); foreach (var m in selectedMission.MissionTasks) { CharacterMissionTask characterMissionTask = new CharacterMissionTask { CharacterID = character.CharacterID, MissionTaskID = m.MissionTaskID, CharacterMissionID = charMiss.CharacterMissionID, IsCompleted = false }; db.CharacterMissionTasks.Add(characterMissionTask); db.SaveChanges(); } character.DailyMissionDate = DateTime.Now; db.SaveChanges(); return(Ok()); }
public ActionResult CheckMission(int id, string userID) { Character character = db.Characters.Where(y => y.ApplicationUserID == userID).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 && mt.GetType().Name == "CollectMissionTask") { foreach (var inv in character.Inventory) { if (mt.ItemID == inv.ItemID) { cmt.TaskProgress = inv.ItemPieces; db.SaveChanges(); if (cmt.TaskProgress < mt.ItemPieces) { cmt.IsCompleted = false; } else { cmt.IsCompleted = true; } } } } } } foreach (var cmt in characterMissionTasks) { foreach (var mt in missionTasks) { if (mt.MissionTaskID == cmt.MissionTaskID) { if (cmt.TaskProgress < mt.ItemPieces) { cmt.IsCompleted = false; } else { cmt.IsCompleted = true; } } } } db.SaveChanges(); int taskcounter = 0; foreach (var task in characterMissionTasks) { if (task.IsCompleted == true) { taskcounter++; } } if (taskcounter == mission.MissionTasks.Count()) { characterMission.IsCompleted = true; } else { characterMission.IsCompleted = false; } db.SaveChanges(); return(RedirectToAction("Index", "Missions", new { id = userID })); }
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 })); }