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, RT21, RT22, RT23, RT24, RT25, RT26, RT27, RT28, RT29, RT30, RT31, RT32, RT33, RT34, RT35, RT36, RT37, RT38, RT39, RT42, RT43, RT44, RT45, RT46, RT111, RT113, RT115, 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"), // 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, Colosseum, XD(commonName: "XD Gale of Darkness"), 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 [], }); }