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");
        }
示例#2
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.GetStringByHash(nameHash);
                Moves.Add(waza, name ?? "");
            }

            Dungeons = new Dictionary <DungeonIndex, string>();
            var dungeons = Enum.GetValues(typeof(DungeonIndex)).Cast <DungeonIndex>().ToArray();

            foreach (DungeonIndex dungeon in dungeons)
            {
                if (dungeon == default)
                {
                    continue;
                }

                var name = GetDungeonNameByInternalName(dungeon.ToString("f"));
                Dungeons.Add(dungeon, name ?? "");
            }
        }
示例#3
0
        /// <summary>
        /// Gets the name of a Pokemon by the internal Japanese name.
        /// </summary>
        /// <param name="internalName">Internal Japanese name such as "FUSHIGIDANE"</param>
        /// <returns>User-facing name such as "Bulbasaur", or null if the internal name could not be found</returns>
        public string?GetPokemonNameByInternalName(string internalName)
        {
            var nameHash = TextIdValues.GetValueOrDefault("POKEMON_NAME__POKEMON_" + internalName.ToUpper());

            return(common.GetStringByHash(nameHash));
        }