public static void BuildExplorerMoveData() { foreach (string file in Directory.GetFiles(MoveDataFolder)) { File.Delete(file); } foreach (string file in Directory.GetFiles(Path.Combine(Globals.AppPath, "RawMoveData"), "*.json")) { try { RawMoveData rawMove = JsonConvert.DeserializeObject <RawMoveData>(File.ReadAllText(file)); if (rawMove == null) { Console.WriteLine($"{file} deserialized to null!"); continue; } ExplorersMove moveData = ExplorersMove.FromRawData(rawMove); File.WriteAllText(Path.Combine(MoveDataFolder, $"{moveData.Id}.json"), JsonConvert.SerializeObject(moveData, Formatting.Indented)); } catch (Exception e) { Console.WriteLine($"Failed on file {file}."); Console.WriteLine(e); } } }
public static ExplorersMove FromRawData(RawMoveData rawMoveData) { ExplorersMove move = new ExplorersMove { Id = new string(rawMoveData.Move.Strings.English.Name.Replace(" ", "-").ToLower().Where(e => !Path.GetInvalidFileNameChars().Contains(e)).ToArray()), Name = rawMoveData.Move.Strings.English.Name, Description = rawMoveData.Move.Strings.English.Category }; switch (rawMoveData.Move.Data.Length) { case 2: if (Equals(rawMoveData.Move.Data[0], rawMoveData.Move.Data[1])) { move.MoveId = Convert.ToInt32(rawMoveData.Move.Data[0].MoveID); move.Category = (CatergoryEnum.MoveCategory)Convert.ToInt32(rawMoveData.Move.Data[0].Category); move.BasePower = Convert.ToInt32(rawMoveData.Move.Data[0].BasePower); move.Type = (TypeEnum.PokemonType)Convert.ToInt32(rawMoveData.Move.Data[0].Type); move.BasePP = Convert.ToInt32(rawMoveData.Move.Data[0].BasePP); move.Accuracy = Convert.ToInt32(rawMoveData.Move.Data[0].Accuracy); } else { Console.WriteLine($"{rawMoveData.Move.Strings.English.Name} has differing move datas! Using main move data, but it is important to research this more."); move.MoveId = Convert.ToInt32(rawMoveData.Move.Data[0].MoveID); move.Category = (CatergoryEnum.MoveCategory)Convert.ToInt32(rawMoveData.Move.Data[0].Category); move.BasePower = Convert.ToInt32(rawMoveData.Move.Data[0].BasePower); move.Type = (TypeEnum.PokemonType)Convert.ToInt32(rawMoveData.Move.Data[0].Type); move.BasePP = Convert.ToInt32(rawMoveData.Move.Data[0].BasePP); move.Accuracy = Convert.ToInt32(rawMoveData.Move.Data[0].Accuracy); } break; case 1: move.MoveId = Convert.ToInt32(rawMoveData.Move.Data[0].MoveID); move.Category = (CatergoryEnum.MoveCategory)Convert.ToInt32(rawMoveData.Move.Data[0].Category); move.BasePower = Convert.ToInt32(rawMoveData.Move.Data[0].BasePower); move.Type = (TypeEnum.PokemonType)Convert.ToInt32(rawMoveData.Move.Data[0].Type); move.BasePP = Convert.ToInt32(rawMoveData.Move.Data[0].BasePP); move.Accuracy = Convert.ToInt32(rawMoveData.Move.Data[0].Accuracy); break; default: throw new NullReferenceException($"{rawMoveData.Move.Strings.English.Name} has invalid move data!"); } return(move); }