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.
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");
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;
const Game({this.commonName = ""});
final Generation gen;
const Game({required this.gen, this.commonName = ""});
@override
String toString() {
@ -201,28 +206,18 @@ enum Game {
class Location {
final List<GameRoute> routes;
final Game game;
final Generation gameGen;
Generation get gameGen => game.gen;
final List<Game> additionalGames;
const Location(
this.game,
this.routes,
this.gameGen, {
this.additionalGames = const [],
});
const Location(this.game, this.routes, {this.additionalGames = const []});
}
/// The PokeDex Entry describing the pokemon
class DexEntry {
final Game game;
final String desc;
final Generation gameGen;
Generation get gameGen => game.gen;
final List<Game> additionalGames;
const DexEntry(
this.game,
this.desc,
this.gameGen, {
this.additionalGames = const [],
});
const DexEntry(this.game, this.desc, {this.additionalGames = const []});
}

View file

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