示例#1
0
            public static Player NewPlayer(string username)
            {
                ToolsDataContext db = new ToolsDataContext();

                Player p = db.Players.Where(a => a.RS_Username == username).FirstOrDefault();

                if (p == null)
                {
                    p             = new Player();
                    p.RS_Username = username;
                    db.Players.InsertOnSubmit(p);
                    db.SubmitChanges();
                    return(p);
                }
                else
                {
                    return(p);
                }
            }
示例#2
0
            public static List <QuestData> GetQuests(string username)
            {
                ToolsDataContext db     = new ToolsDataContext();
                Player           p      = db.Players.Where(a => a.RS_Username == username).FirstOrDefault();
                List <QuestData> output = new List <QuestData>();

                // If the player does not exist, create one
                if (p == null)
                {
                    p = NewPlayer(username);
                }

                foreach (Quest q in db.Quests)
                {
                    QuestData qd = new QuestData();
                    qd.quest = q;

                    PlayerQuest questStatus = db.PlayerQuests.Where(a => a.PlayerID == p.PlayerID && a.QuestID == q.QuestID).FirstOrDefault();
                    if (questStatus != null)
                    {
                        qd.status = questStatus.Status;
                    }
                    else
                    {
                        questStatus          = new PlayerQuest();
                        questStatus.QuestID  = q.QuestID;
                        questStatus.PlayerID = p.PlayerID;
                        questStatus.Status   = false;
                        db.PlayerQuests.InsertOnSubmit(questStatus);
                    }
                    output.Add(qd);
                }
                db.SubmitChanges();

                return(output);
            }
示例#3
0
        public static List <SkillData> UpdateSkills(string username, string data)
        {
            ToolsDataContext db                = new ToolsDataContext();
            Player           playerToUpdate    = db.Players.Where(a => a.RS_Username == username).FirstOrDefault();
            List <SkillData> skillListToReturn = new List <SkillData>();

            // Split the data string from the API into individual parts
            string[] skillsRaw = data.Split(';'),
            order = { "Overall", "Attack", "Defense", "Strength", "Hitpoints", "Ranged", "Prayer", "Magic", "Cooking", "Woodcutting", "Fletching", "Fishing", "Firemaking", "Crafting", "Smithing", "Mining", "Herblore", "Agility", "Thieving", "Slayer", "Farming", "Runecraft", "Hunter", "Construction" };

            // Player already exists, update the data
            if (playerToUpdate != null)
            {
                int skillIndex = 0; //Keeps track of the skill order
                foreach (string skill in order)
                {
                    string[] stats      = skillsRaw[skillIndex].Split(',');
                    string   skillName  = skill,
                             skillRank  = stats[0],
                             skillLevel = stats[1],
                             skillExp   = stats[2];

                    // Update the values in the database
                    Skill       sk = db.Skills.Where(a => a.Name == skill).FirstOrDefault();
                    PlayerSkill ps = db.PlayerSkills.Where(a => a.RS_Skill == sk.SkillID && a.RS_Player == playerToUpdate.PlayerID).FirstOrDefault();

                    if (ps == null) // If no entry exists for the player
                    {
                        ps           = new PlayerSkill();
                        ps.RS_Player = playerToUpdate.PlayerID;
                        ps.RS_Skill  = db.Skills.Where(a => a.Name == skill).FirstOrDefault().SkillID;
                    }

                    ps.Rank       = Convert.ToInt32(skillRank);
                    ps.Level      = Convert.ToInt32(skillLevel);
                    ps.Experience = Convert.ToInt32(skillExp);

                    skillIndex++;

                    SkillData toList = new SkillData();
                    toList.exp      = Convert.ToInt32(ps.Experience);
                    toList.lvl      = Convert.ToInt32(ps.Level);
                    toList.rank     = Convert.ToInt32(ps.Rank);
                    toList.req      = Convert.ToInt32(sk.QuestMinimum);
                    toList.name     = skill;
                    toList.progress = 100;

                    if (toList.name != "Overall")
                    {
                        if (toList.lvl < 99)
                        {
                            Level nl = db.Levels.Where(a => a.LevelNumber == toList.req).FirstOrDefault();
                            toList.progress = Math.Round(((decimal)toList.exp) / ((decimal)nl.Experience) * 100, 2);
                            if (toList.progress > 100)
                            {
                                toList.progress = 100;
                            }
                        }
                    }


                    skillListToReturn.Add(toList);
                }
                db.SubmitChanges();
            }
            // Create new Player in the DB
            else
            {
                playerToUpdate             = new Player();
                playerToUpdate.RS_Username = username;
                db.Players.InsertOnSubmit(playerToUpdate);
                db.SubmitChanges();

                int skillIndex = 0; //Keeps track of the skill order
                foreach (string skill in order)
                {
                    if (skillIndex < order.Length) // Make sure not to overflow into Bounty Hunder + LMS
                    {
                        string[] stats      = skillsRaw[skillIndex].Split(',');
                        string   skillName  = skill,
                                 skillRank  = stats[0],
                                 skillLevel = stats[1],
                                 skillExp   = stats[2];

                        // Create the association with the skill
                        PlayerSkill ps = new PlayerSkill();
                        ps.Rank       = Convert.ToInt32(skillRank);
                        ps.Level      = Convert.ToInt32(skillLevel);
                        ps.Experience = Convert.ToInt32(skillExp);
                        ps.RS_Player  = playerToUpdate.PlayerID;
                        Skill sk = db.Skills.Where(a => a.Name == skillName).FirstOrDefault();
                        ps.RS_Skill = sk.SkillID;

                        skillIndex++;
                        db.PlayerSkills.InsertOnSubmit(ps);
                        SkillData toList = new SkillData();
                        toList.exp      = Convert.ToInt32(ps.Experience);
                        toList.lvl      = Convert.ToInt32(ps.Level);
                        toList.rank     = Convert.ToInt32(ps.Rank);
                        toList.req      = Convert.ToInt32(sk.QuestMinimum);
                        toList.name     = skill;
                        toList.progress = 100;

                        if (toList.name != "Overall")
                        {
                            if (toList.lvl < 99)
                            {
                                Level ll = db.Levels.Where(a => a.LevelNumber == toList.lvl).FirstOrDefault();
                                Level nl = db.Levels.Where(a => a.LevelNumber == toList.lvl + 1).FirstOrDefault();
                                toList.progress = Math.Round(((decimal)toList.exp - ll.Experience) / ((decimal)nl.Experience - ll.Experience) * 100, 2);
                            }
                        }


                        skillListToReturn.Add(toList);
                    }
                }
                db.SubmitChanges();
            }

            return(skillListToReturn);
        }