Beispiel #1
0
        public static void GetAchievementsFromJSON(string json, Main main)
        {
            AchievementRAW[] rawAchievements = new AchievementRAW[1];
            try
            {
                rawAchievements = JsonConvert.DeserializeObject <AchievementRAW[]>(json);
            }
            catch (Exception e)
            {
                rawAchievements[0] = JsonConvert.DeserializeObject <AchievementRAW>(json);
            }
            for (int a = 0; a < rawAchievements.Length; a++)
            {
                double         cur = a, max = rawAchievements.Length;
                AchievementRAW achievementRAW = rawAchievements[a];
                main.JSON.Add(new KeyValuePair <string, string>("Achievement", JsonConvert.SerializeObject(achievementRAW)));
                Achievement newAchievement = new Achievement
                {
                    ID   = achievementRAW.id,
                    Name = achievementRAW.name,
                    UnlockedDescription = achievementRAW.description,
                    Requirement         = achievementRAW.requirement,
                    LockedDescription   = achievementRAW.locked_text,
                    PointCap            = (achievementRAW.point_cap.HasValue) ? achievementRAW.point_cap.Value : 0,
                    AchieveType         = (Type)Enum.Parse(typeof(Type), achievementRAW.type),
                    Flags          = new List <Flag>(),
                    Tiers          = new List <Tier>(),
                    Prerequisites  = new List <Achievement>(),
                    PrerequisiteID = new List <int>(),
                    Rewards        = new List <Reward>(),
                    Bits           = new List <Bit>(),
                };
                string fileName = string.Empty;

                if (!string.IsNullOrEmpty(achievementRAW.icon))
                {
                    fileName = string.Empty;
                    using (WebClient client = new WebClient())
                    {
                        fileName = achievementRAW.icon.Substring(achievementRAW.icon.LastIndexOf("/") + 1);
                        Directory.CreateDirectory(AppDomain.CurrentDomain.BaseDirectory + @"images\achievements\");
                        if (!File.Exists(AppDomain.CurrentDomain.BaseDirectory + @"images\achievements\" + fileName))
                        {
                            client.DownloadFileAsync(new Uri(achievementRAW.icon), AppDomain.CurrentDomain.BaseDirectory + @"images\achievements\" + fileName);
                        }
                    }
                    newAchievement.Image = AppDomain.CurrentDomain.BaseDirectory + @"images\achievements\" + fileName;
                }
                for (int i = 0; i < achievementRAW.flags.Length; i++)
                {
                    newAchievement.Flags.Add((Flag)Enum.Parse(typeof(Flag), achievementRAW.flags[i]));
                }
                for (int i = 0; i < achievementRAW.tiers.Length; i++)
                {
                    TierRAW tierRAW = achievementRAW.tiers[i];
                    Tier    newTier = new Tier
                    {
                        Count  = tierRAW.count,
                        Points = tierRAW.points
                    };
                    newAchievement.Tiers.Add(newTier);
                }
                if (achievementRAW.prerequisites != null)
                {
                    for (int i = 0; i < achievementRAW.prerequisites.Length; i++)
                    {
                        newAchievement.PrerequisiteID.Add(achievementRAW.prerequisites[i].Value);
                    }
                }
                if (achievementRAW.rewards != null)
                {
                    for (int i = 0; i < achievementRAW.rewards.Length; i++)
                    {
                        RewardRAW rewardRAW = achievementRAW.rewards[i];
                        if (rewardRAW.type == "Coins")
                        {
                            CoinReward newReward = new CoinReward
                            {
                                RewardType = Reward.Type.Coin,
                                Count      = rewardRAW.count.Value
                            };
                            newAchievement.Rewards.Add(newReward);
                        }
                        else if (rewardRAW.type == "Item")
                        {
                            ItemReward newReward = new ItemReward
                            {
                                RewardType = Reward.Type.Item,
                                Count      = rewardRAW.count.Value,
                                ItemID     = rewardRAW.id.Value
                            };

                            newAchievement.Rewards.Add(newReward);
                        }
                        else if (rewardRAW.type == "Mastery")
                        {
                            MasteryReward newReward = new MasteryReward
                            {
                                RewardType    = Reward.Type.Mastery,
                                RegionMastery = (Mastery.Region)Enum.Parse(typeof(Mastery.Region), achievementRAW.rewards[i].region)
                            };
                            int masteryID = rewardRAW.id.Value;

                            Mastery mastery = main.Masteries.FirstOrDefault(ma => ma.ID == masteryID);
                            newReward.RewardMastery = mastery;

                            newAchievement.Rewards.Add(newReward);
                        }
                        else if (rewardRAW.type == "Title")
                        {
                            TitleReward newReward = new TitleReward
                            {
                                RewardType = Reward.Type.Title,
                                TitleID    = rewardRAW.id.Value
                            };

                            newAchievement.Rewards.Add(newReward);
                        }
                    }
                }
                if (achievementRAW.bits != null)
                {
                    for (int i = 0; i < achievementRAW.bits.Length; i++)
                    {
                        BitRAW bitRAW = achievementRAW.bits[i];

                        if (bitRAW.type == "Text")
                        {
                            TextBit newBit = new TextBit
                            {
                                BitType = Bit.Type.Text,
                                Text    = bitRAW.text
                            };

                            newAchievement.Bits.Add(newBit);
                        }
                        else if (bitRAW.type == "Item")
                        {
                            ItemBit newBit = new ItemBit
                            {
                                BitType = Bit.Type.Item,
                                ItemID  = bitRAW.id.Value
                            };

                            newAchievement.Bits.Add(newBit);
                        }
                        else if (bitRAW.type == "Minipet")
                        {
                            MinipetBit newBit = new MinipetBit
                            {
                                BitType = Bit.Type.Minipet,
                                MiniID  = bitRAW.id.Value
                            };

                            newAchievement.Bits.Add(newBit);
                        }
                        else if (bitRAW.type == "Skin")
                        {
                            SkinBit newBit = new SkinBit
                            {
                                BitType = Bit.Type.Skin,
                                SkinID  = bitRAW.id.Value
                            };

                            newAchievement.Bits.Add(newBit);
                        }
                    }
                }

                main.Achievements.Add(newAchievement);
                main.OnCharStatusUpdate("Generated Achievement " + newAchievement.Name + ";" + newAchievement.ID + " " + ((cur != 0) ? Math.Round((double)(cur / max), 2) * 100 : 0).ToString() + "%");
            }
        }
Beispiel #2
0
        public static void GetMasteriesFromJSON(string json, Main main)
        {
            MasteryRAW[] rawMasteries = new MasteryRAW[1];
            try
            {
                rawMasteries = JsonConvert.DeserializeObject <MasteryRAW[]>(json);
            }
            catch (Exception e)
            {
                rawMasteries[0] = JsonConvert.DeserializeObject <MasteryRAW>(json);
            }
            for (int m = 0; m < rawMasteries.Length; m++)
            {
                double     cur = m, max = rawMasteries.Length;
                MasteryRAW masteryRAW = rawMasteries[m];
                main.JSON.Add(new KeyValuePair <string, string>("Mastery", JsonConvert.SerializeObject(masteryRAW)));
                Mastery newMastery = new Mastery
                {
                    ID            = masteryRAW.id,
                    Name          = masteryRAW.name,
                    Requirement   = masteryRAW.requirement,
                    Order         = masteryRAW.order.Value,
                    MasteryRegion = (Region)Enum.Parse(typeof(Region), masteryRAW.region),
                    Levels        = new List <MasteryLevel>()
                };
                string fileName = string.Empty;
                using (WebClient client = new WebClient())
                {
                    fileName = masteryRAW.background.Substring(masteryRAW.background.LastIndexOf("/") + 1);
                    Directory.CreateDirectory(AppDomain.CurrentDomain.BaseDirectory + @"images\masteries\");
                    if (!File.Exists(AppDomain.CurrentDomain.BaseDirectory + @"images\masteries\" + fileName))
                    {
                        client.DownloadFileAsync(new Uri(masteryRAW.background), AppDomain.CurrentDomain.BaseDirectory + @"images\masteries\" + fileName);
                    }
                }
                newMastery.MasteryBackground = AppDomain.CurrentDomain.BaseDirectory + @"images\masteries\" + fileName;

                for (int i = 0; i < masteryRAW.levels.Length; i++)
                {
                    MasteryLevelRAW masteryLevelRAW = masteryRAW.levels[i];
                    MasteryLevel    newMasteryLevel = new MasteryLevel
                    {
                        Name        = masteryLevelRAW.name,
                        Description = masteryLevelRAW.description,
                        Instruction = masteryLevelRAW.instruction,
                        PointCost   = (masteryLevelRAW.point_cost.HasValue) ? masteryLevelRAW.point_cost.Value : 0,
                        ExpCost     = (masteryLevelRAW.exp_cost.HasValue) ? masteryLevelRAW.exp_cost.Value : 0
                    };

                    using (WebClient client = new WebClient())
                    {
                        fileName = masteryLevelRAW.icon.Substring(masteryLevelRAW.icon.LastIndexOf("/") + 1);
                        Directory.CreateDirectory(AppDomain.CurrentDomain.BaseDirectory + @"images\masteries\levels\");
                        if (!File.Exists(AppDomain.CurrentDomain.BaseDirectory + @"images\masteries\levels\" + fileName))
                        {
                            client.DownloadFileAsync(new Uri(masteryLevelRAW.icon), AppDomain.CurrentDomain.BaseDirectory + @"images\masteries\levels\" + fileName);
                        }
                    }
                    newMasteryLevel.LevelBackground = AppDomain.CurrentDomain.BaseDirectory + @"images\masteries\levels\" + fileName;

                    newMastery.Levels.Add(newMasteryLevel);
                }

                main.Masteries.Add(newMastery);
                main.OnCharStatusUpdate("Generated Mastery " + newMastery.Name + ";" + newMastery.ID + " " + ((cur != 0) ? Math.Round((double)(cur / max), 2) * 100 : 0).ToString() + "%");
            }
        }