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() + "%"); } }
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() + "%"); } }