import 'package:pokedex/pokemon.dart'; /// The route number. enum GameRoute { RT1, RT2, RT5, RT24, RT25, RT26, RT27, RT30, RT31, RT34, RT35, RT36, RT37, RT38, RT39, 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"), // 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, Blue, Yellow, Gold, Silver, Crystal, Ruby, Sapphire, FireRed(commonName: "Fire Red"), LeafGreen(commonName: "Leaf Green"), Emerald, Diamond, Pearl, Platinum, HeartGold(commonName: "Heart Gold"), SoulSilver(commonName: "Soul Silver"), Black, White, Black2(commonName: "Black 2"), White2(commonName: "White 2"), X, Y, OmegaRuby(commonName: "Omega Ruby"), OmegaSapphire(commonName: "Omega Sapphire"), Sun, Moon, UltraSun(commonName: "Ultra Sun"), UltraMoon(commonName: "Ultra Moon"), LetsGoPikachu(commonName: "Let's Go Pikachu"), LetsGoEevee(commonName: "Let's Go Eevee"), Sword, Shield, BrilliantDiamond(commonName: "Brilliant Diamond"), ShiningPearl(commonName: "Shining Pearl"); final String commonName; const Game({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; final Generation gameGen; final List additionalGames; const Location( this.game, this.routes, this.gameGen, { this.additionalGames = const [], }); } /// The PokeDex Entry describing the pokemon class DexEntry { final Game game; final String desc; final Generation gameGen; final List additionalGames; const DexEntry( this.game, this.desc, this.gameGen, { this.additionalGames = const [], }); }