public CommonStrings(MessageBinEntry common) { this.common = common ?? throw new ArgumentNullException(nameof(common)); Pokemon = new Dictionary <CreatureIndex, string>(); var creatures = Enum.GetValues(typeof(CreatureIndex)).Cast <CreatureIndex>().ToArray(); foreach (CreatureIndex creature in creatures) { if (creature == default) { continue; } var name = GetPokemonNameByInternalName(creature.ToString("f")); Pokemon.Add(creature, name ?? ""); } Moves = new Dictionary <WazaIndex, string>(); var moves = Enum.GetValues(typeof(WazaIndex)).Cast <WazaIndex>().ToArray(); foreach (WazaIndex waza in moves) { if (waza == default) { continue; } var nameHash = TextIdValues.GetValueOrDefault("WAZA_NAME__WAZA_" + waza.ToString("f")); var name = common.Strings.GetValueOrDefault(nameHash); Moves.Add(waza, name ?? ""); } }
public CommonStrings(MessageBinEntry common) { var textIdValues = Enum.GetValues(typeof(TextIDHash)).Cast <TextIDHash>().ToDictionary(h => h.ToString("f"), h => (int)h); Pokemon = new Dictionary <int, string>(); var creatures = Enum.GetValues(typeof(CreatureIndex)).Cast <CreatureIndex>().ToArray(); foreach (CreatureIndex creature in creatures) { if (creature == default) { continue; } var nameHash = textIdValues.GetValueOrDefault("POKEMON_NAME__POKEMON_" + creature.ToString("f")); var name = common.Strings.GetValueOrDefault(nameHash); Pokemon.Add((int)creature, name ?? ""); } Moves = new Dictionary <int, string>(); var moves = Enum.GetValues(typeof(WazaIndex)).Cast <WazaIndex>().ToArray(); foreach (WazaIndex waza in moves) { if (waza == default) { continue; } var nameHash = textIdValues.GetValueOrDefault("WAZA_NAME__WAZA_" + waza.ToString("f")); var name = common.Strings.GetValueOrDefault(nameHash); Moves.Add((int)waza, name ?? ""); } }
public void CanBuildMessageBin() { // Arrange var messageBin = new MessageBinEntry(); messageBin.AddString("first", "Grookey"); messageBin.AddString("second", "Scorbunny"); messageBin.AddString("third", "Sobble"); // Act var data = messageBin.ToByteArray(); // Assert var rebuiltDb = new MessageBinEntry(data); rebuiltDb.GetStringByHash((int)Crc32Hasher.Crc32Hash("first")).Should().Be("Grookey"); rebuiltDb.GetStringByHash((int)Crc32Hasher.Crc32Hash("second")).Should().Be("Scorbunny"); rebuiltDb.GetStringByHash((int)Crc32Hasher.Crc32Hash("third")).Should().Be("Sobble"); }
static void Main(string[] args) { //ChangeStarters(); //return; var basePath = @"D:\01003D200BAA2000"; var natureDiagnosis = JsonConvert.DeserializeObject <NDConverterSharedData.DataStore>(File.ReadAllText(basePath + @"\romfs\Data\StreamingAssets\data\nature_diagnosis\diagnosis.json")); //var actorDataInfoPath = basePath + @"\romfs\Data\StreamingAssets\native_data\pokemon\pokemon_actor_data_info.bin"; //var actorDataInfo = new PokemonActorDataInfo(File.ReadAllBytes(actorDataInfoPath)); var graphicsDatabasePath = basePath + @"\romfs\Data\StreamingAssets\native_data\pokemon_graphics_database.bin"; var graphicsDatabase = new PokemonGraphicsDatabase(File.ReadAllBytes(graphicsDatabasePath)); var nsoPath = basePath + @"\exefs\main"; IMainExecutable nso = MainExecutable.LoadFromNso(File.ReadAllBytes(nsoPath)); var fixedPokemonPath = basePath + @"\romfs\Data\StreamingAssets\native_data\dungeon\fixed_pokemon.bin"; IFixedPokemon fixedPokemon = new FixedPokemon(File.ReadAllBytes(fixedPokemonPath)); var messageBinPath = basePath + @"\romfs\Data\StreamingAssets\native_data\message_us.bin"; var messageBin = new Farc(File.ReadAllBytes(messageBinPath)); var common = new MessageBinEntry(messageBin.GetFile("common.bin")); ICommonStrings commonStrings = new CommonStrings(common); IStarterQueries starterQueries = new StarterQueries(commonStrings, nso, natureDiagnosis, fixedPokemon); Console.WriteLine("Starters:"); var starters = starterQueries.GetStarters(); foreach (var starter in starters) { Console.WriteLine(starter.PokemonName); } Console.WriteLine("Press any key to exit"); Console.ReadLine(); }