import 'package:pokedex/pokemon.dart'; /// The route number. enum GameRoute { RT1, RT2, RT3, RT4, RT5, RT6, RT7, RT8, RT9, RT10, RT11, RT12, RT13, RT14, RT15, RT16, RT17, RT18, RT19, RT20, RT21, RT22, RT23, RT24, RT25, RT26, RT27, RT28, RT29, RT30, RT31, RT32, RT33, RT34, RT35, RT36, RT37, RT38, RT39, RT42, RT43, RT44, RT45, RT46, RT110, RT111, RT113, RT115, RT116, RT117, RT119, RT120, RT121, RT123, RT204, ViridianForest(commonName: "Viridian Forest"), AzaleaTown(commonName: "Azalea Town"), HexForest(commonName: "Hex Forest"), LakeOfRage(commonName: "Lake of Rage"), NationalPark(commonName: "National Park"), IlexForest(commonName: "Ilex Forest"), PatternBush(commonName: "Pattern Bush"), EternaForest(commonName: "Eterna Forest"), SantaluneForest(commonName: "Santalune Forest"), MeleMeleMeadow(commonName: "Mele Mele Meadow"), LushJungle(commonName: "Lush Jungle"), SpaciousCave(commonName: "Spacious Cave"), GrasslandCave(commonName: "Grassland Cave"), SwampyCave(commonName: "Swampy Cave"), RiverbankCave(commonName: "Riverbank Cave"), StillWaterCavern(commonName: "Still Water Cavern"), SunlitCavern(commonName: "Sunlit Cavern"), BogsunkCavern(commonName: "Bogsunk Cavern"), PalletTown(commonName: "Pallet Town"), CeruleanCity(commonName: "Cerulean City"), CeruleanCave(commonName: "Cerulean Cave"), VermilionCity(commonName: "Vermilion City"), LumioseCity(commonName: "Lumiose City"), SeawardCave(commonName: "Seaward Cave"), BerryForest(commonName: "Berry Forest"), BondBridge(commonName: "Bond Bridge"), FiveIsleMeadow(commonName: "Five Isle Meadow"), PokemonMansion(commonName: "Pokemon Mansion"), BurnedTower(commonName: "Burned Tower"), MtMortar(commonName: "Mt. Mortar"), SproutTower(commonName: "Sprout Tower"), TinTower(commonName: "Tin Tower"), TohjoFalls(commonName: "Tohjo Falls"), UnionCave(commonName: "Union Cave"), CanyonEntrance(commonName: "Canyon Entrance"), CapeBrink(commonName: "Cape Brink"), KindleRoad(commonName: "Kindle Road"), MtEmber(commonName: "Mt. Ember"), RuinValley(commonName: "Ruin Valley"), TreasureBeach(commonName: "Treasure Beach"), WaterPath(commonName: "Water Path"), SevaultCanyon(commonName: "Sevault Canyon"), GoldenrodCity(commonName: "Goldenrod City"), MtSilver(commonName: "Mt. Silver"), VictoryRoad(commonName: "Victory Road"), PowerPlant(commonName: "Power Plant"), CeladonCity(commonName: "Celadon City"), SafariZone(commonName: "Safari Zone"), MtMoon(commonName: "Mt. Moon"), MirageTower(commonName: "Mirage Tower"), UndergroundPath5_6(commonName: "Underground Path 5-6"), MtPyre(commonName: "Mt. Pyre"), RockTunnel(commonName: "Rock Tunnel"), SeafoamIslands(commonName: "Seafoam Islands"), DarkCave(commonName: "Dark Cave"), IcePath(commonName: "Ice Path"), SlowpokeWell(commonName: "Slowpoke Well"), WhirlIslands(commonName: "Whirl Islands"), CaveOfOrigin(commonName: "Cave of Origin"), GraniteCave(commonName: "Granite Cave"), MeteorFalls(commonName: "Meteor Falls"), SeafloorCavern(commonName: "Seafloor Cavern"), ShoalCave(commonName: "Shoal Cave"), AlteringCave(commonName: "Altering Cave"), IcefallCave(commonName: "Icefall Cave"), LostCave(commonName: "Lost Cave"), SkyPillar(commonName: "Sky Pillar"), DiglettCave(commonName: "Diglett's Cave"), BattleTower(commonName: "Battle Tower"), CinnabarIsland(commonName: "Cinnabar Island"), FiveIsland(commonName: "Five Island"), FourIsland(commonName: "Four Island"), FuchsiaCity(commonName: "Fuchsia City"), GreenPath(commonName: "Green Path"), MemorialPillar(commonName: "Memorial Pillar"), OneIsland(commonName: "One Island"), OutcastIsland(commonName: "Outcast Island"), ResortGorgeous(commonName: "Resort Gorgeous"), TanobyRuins(commonName: "Tanoby Ruins"), TrainerTower(commonName: "Trainer Tower"), ViridianCity(commonName: "Viridian City"), WaterLabyrinth(commonName: "Water Labyrinth"), BlackthornCity(commonName: "Blackthorn City"), EcruteakCity(commonName: "Ecruteak City"), RuinsOfAlph(commonName: "Ruins of Alph"), VioletCity(commonName: "Violet City"), // The following mark the pokemon as not usually obtainable TradeOrMigrate(commonName: "Trade or Migrate from another game"), BreedOnly(commonName: "Only obtainable via breeding"), Evolve(commonName: "Evolve another pokemon"), Unavailable; final String commonName; const GameRoute({this.commonName = ""}); @override String toString() { if (commonName == "") { return name; } else { return commonName; } } } /// The game's name. enum Game { Red(gen: Generation.One), Green(gen: Generation.One), Blue(gen: Generation.One), Yellow(gen: Generation.One), Gold(gen: Generation.Two), Silver(gen: Generation.Two), Crystal(gen: Generation.Two), Ruby(gen: Generation.Three), Sapphire(gen: Generation.Three), FireRed(commonName: "Fire Red", gen: Generation.Three), LeafGreen(commonName: "Leaf Green", gen: Generation.Three), Emerald(gen: Generation.Three), Colosseum(gen: Generation.Three), XD(commonName: "XD Gale of Darkness", gen: Generation.Three), Diamond(gen: Generation.Four), Pearl(gen: Generation.Four), Platinum(gen: Generation.Four), HeartGold(commonName: "Heart Gold", gen: Generation.Four), SoulSilver(commonName: "Soul Silver", gen: Generation.Four), Black(gen: Generation.Five), White(gen: Generation.Five), Black2(commonName: "Black 2", gen: Generation.Five), White2(commonName: "White 2", gen: Generation.Five), X(gen: Generation.Six), Y(gen: Generation.Six), OmegaRuby(commonName: "Omega Ruby", gen: Generation.Six), OmegaSapphire(commonName: "Omega Sapphire", gen: Generation.Six), Sun(gen: Generation.Seven), Moon(gen: Generation.Seven), UltraSun(commonName: "Ultra Sun", gen: Generation.Seven), UltraMoon(commonName: "Ultra Moon", gen: Generation.Seven), LetsGoPikachu(commonName: "Let's Go Pikachu", gen: Generation.Seven), LetsGoEevee(commonName: "Let's Go Eevee", gen: Generation.Seven), Sword(gen: Generation.Eight), Shield(gen: Generation.Eight), BrilliantDiamond(commonName: "Brilliant Diamond", gen: Generation.Eight), ShiningPearl(commonName: "Shining Pearl", gen: Generation.Eight), Scarlet(gen: Generation.Nine), Violet(gen: Generation.Nine), LegendsZA(commonName: "Legends Z-A", gen: Generation.Nine); final String commonName; final Generation gen; const Game({required this.gen, this.commonName = ""}); @override String toString() { if (commonName != "") { return commonName; } else { return name; } } } /// This represents the location of where to find the Pokemon. /// /// This location is going to use a Route Enumerable. /// /// Another object this includes is the game. Not generation, but game. class Location { final List routes; final Game game; Generation get gameGen => game.gen; final List additionalGames; const Location(this.game, this.routes, {this.additionalGames = const []}); } /// The PokeDex Entry describing the pokemon class DexEntry { final Game game; final String desc; Generation get gameGen => game.gen; final List additionalGames; const DexEntry(this.game, this.desc, {this.additionalGames = const []}); }