Example #1
0
        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 ?? "");
            }
        }
Example #2
0
        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");
        }
Example #4
0
        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();
        }