Ejemplo n.º 1
0
        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 }));
        }
Ejemplo n.º 2
0
        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 }));
        }
Ejemplo n.º 3
0
        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);
            }
        }
Ejemplo n.º 4
0
        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());
        }
Ejemplo n.º 5
0
        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 }));
        }
Ejemplo n.º 6
0
        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 }));
        }