refactor: Streamline so that the generation is acquired from the game instance instead of from each location or dex entry.

This commit is contained in:
zontreck 2025-06-02 00:38:24 -07:00
parent f1c1369247
commit ee959e4eae
2 changed files with 51 additions and 88 deletions

View file

@ -143,45 +143,50 @@ enum GameRoute {
/// The game's name. /// The game's name.
enum Game { enum Game {
Red, Red(gen: Generation.One),
Blue, Green(gen: Generation.One),
Yellow, Blue(gen: Generation.One),
Gold, Yellow(gen: Generation.One),
Silver, Gold(gen: Generation.Two),
Crystal, Silver(gen: Generation.Two),
Ruby, Crystal(gen: Generation.Two),
Sapphire, Ruby(gen: Generation.Three),
FireRed(commonName: "Fire Red"), Sapphire(gen: Generation.Three),
LeafGreen(commonName: "Leaf Green"), FireRed(commonName: "Fire Red", gen: Generation.Three),
Emerald, LeafGreen(commonName: "Leaf Green", gen: Generation.Three),
Colosseum, Emerald(gen: Generation.Three),
XD(commonName: "XD Gale of Darkness"), Colosseum(gen: Generation.Three),
Diamond, XD(commonName: "XD Gale of Darkness", gen: Generation.Three),
Pearl, Diamond(gen: Generation.Four),
Platinum, Pearl(gen: Generation.Four),
HeartGold(commonName: "Heart Gold"), Platinum(gen: Generation.Four),
SoulSilver(commonName: "Soul Silver"), HeartGold(commonName: "Heart Gold", gen: Generation.Four),
Black, SoulSilver(commonName: "Soul Silver", gen: Generation.Four),
White, Black(gen: Generation.Five),
Black2(commonName: "Black 2"), White(gen: Generation.Five),
White2(commonName: "White 2"), Black2(commonName: "Black 2", gen: Generation.Five),
X, White2(commonName: "White 2", gen: Generation.Five),
Y, X(gen: Generation.Six),
OmegaRuby(commonName: "Omega Ruby"), Y(gen: Generation.Six),
OmegaSapphire(commonName: "Omega Sapphire"), OmegaRuby(commonName: "Omega Ruby", gen: Generation.Six),
Sun, OmegaSapphire(commonName: "Omega Sapphire", gen: Generation.Six),
Moon, Sun(gen: Generation.Seven),
UltraSun(commonName: "Ultra Sun"), Moon(gen: Generation.Seven),
UltraMoon(commonName: "Ultra Moon"), UltraSun(commonName: "Ultra Sun", gen: Generation.Seven),
LetsGoPikachu(commonName: "Let's Go Pikachu"), UltraMoon(commonName: "Ultra Moon", gen: Generation.Seven),
LetsGoEevee(commonName: "Let's Go Eevee"), LetsGoPikachu(commonName: "Let's Go Pikachu", gen: Generation.Seven),
Sword, LetsGoEevee(commonName: "Let's Go Eevee", gen: Generation.Seven),
Shield, Sword(gen: Generation.Eight),
BrilliantDiamond(commonName: "Brilliant Diamond"), Shield(gen: Generation.Eight),
ShiningPearl(commonName: "Shining Pearl"); 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 String commonName;
const Game({this.commonName = ""}); final Generation gen;
const Game({required this.gen, this.commonName = ""});
@override @override
String toString() { String toString() {
@ -201,28 +206,18 @@ enum Game {
class Location { class Location {
final List<GameRoute> routes; final List<GameRoute> routes;
final Game game; final Game game;
final Generation gameGen; Generation get gameGen => game.gen;
final List<Game> additionalGames; final List<Game> additionalGames;
const Location( const Location(this.game, this.routes, {this.additionalGames = const []});
this.game,
this.routes,
this.gameGen, {
this.additionalGames = const [],
});
} }
/// The PokeDex Entry describing the pokemon /// The PokeDex Entry describing the pokemon
class DexEntry { class DexEntry {
final Game game; final Game game;
final String desc; final String desc;
final Generation gameGen; Generation get gameGen => game.gen;
final List<Game> additionalGames; final List<Game> additionalGames;
const DexEntry( const DexEntry(this.game, this.desc, {this.additionalGames = const []});
this.game,
this.desc,
this.gameGen, {
this.additionalGames = const [],
});
} }

View file

@ -5,29 +5,21 @@ class Gen1Locations {
Gen1Locations._(); Gen1Locations._();
static const List<Location> Bulbasaur = [ static const List<Location> Bulbasaur = [
Location( Location(Game.Red, [GameRoute.PalletTown], additionalGames: [Game.Blue]),
Game.Red, Location(Game.Yellow, [GameRoute.CeruleanCity]),
[GameRoute.PalletTown],
Generation.One,
additionalGames: [Game.Blue],
),
Location(Game.Yellow, [GameRoute.CeruleanCity], Generation.One),
Location( Location(
Game.Gold, Game.Gold,
[GameRoute.TradeOrMigrate], [GameRoute.TradeOrMigrate],
Generation.Two,
additionalGames: [Game.Silver, Game.Crystal], additionalGames: [Game.Silver, Game.Crystal],
), ),
Location( Location(
Game.Ruby, Game.Ruby,
[GameRoute.TradeOrMigrate], [GameRoute.TradeOrMigrate],
Generation.Three,
additionalGames: [Game.Sapphire, Game.Emerald], additionalGames: [Game.Sapphire, Game.Emerald],
), ),
Location( Location(
Game.FireRed, Game.FireRed,
[GameRoute.PalletTown], [GameRoute.PalletTown],
Generation.Three,
additionalGames: [Game.LeafGreen], additionalGames: [Game.LeafGreen],
), ),
]; ];
@ -35,79 +27,63 @@ class Gen1Locations {
Location( Location(
Game.Red, Game.Red,
[GameRoute.Evolve], [GameRoute.Evolve],
Generation.One,
additionalGames: [Game.Blue, Game.Yellow], additionalGames: [Game.Blue, Game.Yellow],
), ),
Location( Location(
Game.Gold, Game.Gold,
[GameRoute.TradeOrMigrate], [GameRoute.TradeOrMigrate],
Generation.Two,
additionalGames: [Game.Silver, Game.Crystal], additionalGames: [Game.Silver, Game.Crystal],
), ),
Location( Location(
Game.Ruby, Game.Ruby,
[GameRoute.TradeOrMigrate], [GameRoute.TradeOrMigrate],
Generation.Three,
additionalGames: [Game.Sapphire], additionalGames: [Game.Sapphire],
), ),
Location( Location(
Game.FireRed, Game.FireRed,
[GameRoute.Evolve], [GameRoute.Evolve],
Generation.Three,
additionalGames: [Game.LeafGreen], additionalGames: [Game.LeafGreen],
), ),
Location(Game.Emerald, [GameRoute.TradeOrMigrate], Generation.Three), Location(Game.Emerald, [GameRoute.TradeOrMigrate]),
]; ];
static const List<Location> Venusaur = [ static const List<Location> Venusaur = [
Location( Location(
Game.Red, Game.Red,
[GameRoute.Evolve], [GameRoute.Evolve],
Generation.One,
additionalGames: [Game.Blue, Game.Yellow], additionalGames: [Game.Blue, Game.Yellow],
), ),
Location( Location(
Game.Gold, Game.Gold,
[GameRoute.TradeOrMigrate], [GameRoute.TradeOrMigrate],
Generation.Two,
additionalGames: [Game.Silver, Game.Crystal], additionalGames: [Game.Silver, Game.Crystal],
), ),
Location( Location(
Game.Ruby, Game.Ruby,
[GameRoute.TradeOrMigrate], [GameRoute.TradeOrMigrate],
Generation.Three,
additionalGames: [Game.Sapphire, Game.Emerald], additionalGames: [Game.Sapphire, Game.Emerald],
), ),
Location( Location(
Game.FireRed, Game.FireRed,
[GameRoute.Evolve], [GameRoute.Evolve],
Generation.Three,
additionalGames: [Game.LeafGreen], additionalGames: [Game.LeafGreen],
), ),
]; ];
static const List<Location> Charmander = [ static const List<Location> Charmander = [
Location( Location(Game.Red, [GameRoute.PalletTown], additionalGames: [Game.Blue]),
Game.Red, Location(Game.Yellow, [GameRoute.RT24]),
[GameRoute.PalletTown],
Generation.One,
additionalGames: [Game.Blue],
),
Location(Game.Yellow, [GameRoute.RT24], Generation.One),
Location( Location(
Game.Gold, Game.Gold,
[GameRoute.TradeOrMigrate], [GameRoute.TradeOrMigrate],
Generation.Two,
additionalGames: [Game.Silver, Game.Crystal], additionalGames: [Game.Silver, Game.Crystal],
), ),
Location( Location(
Game.Ruby, Game.Ruby,
[GameRoute.TradeOrMigrate], [GameRoute.TradeOrMigrate],
Generation.Three,
additionalGames: [Game.Sapphire, Game.Emerald], additionalGames: [Game.Sapphire, Game.Emerald],
), ),
Location( Location(
Game.FireRed, Game.FireRed,
[GameRoute.PalletTown], [GameRoute.PalletTown],
Generation.Three,
additionalGames: [Game.LeafGreen], additionalGames: [Game.LeafGreen],
), ),
]; ];
@ -115,25 +91,21 @@ class Gen1Locations {
Location( Location(
Game.Red, Game.Red,
[GameRoute.Evolve], [GameRoute.Evolve],
Generation.One,
additionalGames: [Game.Blue, Game.Yellow], additionalGames: [Game.Blue, Game.Yellow],
), ),
Location( Location(
Game.Gold, Game.Gold,
[GameRoute.TradeOrMigrate], [GameRoute.TradeOrMigrate],
Generation.Two,
additionalGames: [Game.Silver, Game.Crystal], additionalGames: [Game.Silver, Game.Crystal],
), ),
Location( Location(
Game.Ruby, Game.Ruby,
[GameRoute.TradeOrMigrate], [GameRoute.TradeOrMigrate],
Generation.Three,
additionalGames: [Game.Sapphire, Game.Emerald], additionalGames: [Game.Sapphire, Game.Emerald],
), ),
Location( Location(
Game.FireRed, Game.FireRed,
[GameRoute.Evolve], [GameRoute.Evolve],
Generation.Three,
additionalGames: [Game.LeafGreen], additionalGames: [Game.LeafGreen],
), ),
]; ];
@ -141,25 +113,21 @@ class Gen1Locations {
Location( Location(
Game.Red, Game.Red,
[GameRoute.Evolve], [GameRoute.Evolve],
Generation.One,
additionalGames: [Game.Blue, Game.Yellow], additionalGames: [Game.Blue, Game.Yellow],
), ),
Location( Location(
Game.Gold, Game.Gold,
[GameRoute.TradeOrMigrate], [GameRoute.TradeOrMigrate],
Generation.Two,
additionalGames: [Game.Silver, Game.Crystal], additionalGames: [Game.Silver, Game.Crystal],
), ),
Location( Location(
Game.Ruby, Game.Ruby,
[GameRoute.TradeOrMigrate], [GameRoute.TradeOrMigrate],
Generation.Three,
additionalGames: [Game.Sapphire, Game.Emerald], additionalGames: [Game.Sapphire, Game.Emerald],
), ),
Location( Location(
Game.FireRed, Game.FireRed,
[GameRoute.Evolve], [GameRoute.Evolve],
Generation.Three,
additionalGames: [Game.LeafGreen], additionalGames: [Game.LeafGreen],
), ),
]; ];