72 lines
1.8 KiB
Dart
72 lines
1.8 KiB
Dart
/// Entité métier représentant un Pokémon. Pure : aucun import Flutter / DB / API.
|
|
class Pokemon {
|
|
final String name;
|
|
final int id;
|
|
final PokemonType type1;
|
|
final PokemonType? type2;
|
|
final int hp;
|
|
final int atk;
|
|
final int def;
|
|
final int spd;
|
|
final String? description;
|
|
final bool isCaught;
|
|
final bool isSeen;
|
|
|
|
const Pokemon({
|
|
required this.name,
|
|
required this.id,
|
|
required this.type1,
|
|
this.type2,
|
|
required this.hp,
|
|
required this.atk,
|
|
required this.def,
|
|
required this.spd,
|
|
this.description,
|
|
this.isCaught = false,
|
|
this.isSeen = false,
|
|
});
|
|
|
|
String get imageUrl =>
|
|
'https://raw.githubusercontent.com/Yarkis01/TyraDex/images/sprites/$id/regular.png';
|
|
String get shinyImageUrl =>
|
|
'https://raw.githubusercontent.com/Yarkis01/TyraDex/images/sprites/$id/shiny.png';
|
|
String get cryUrl => 'https://pokemoncries.com/cries/$id.mp3';
|
|
|
|
String get formatedName =>
|
|
name.isEmpty ? name : name[0].toUpperCase() + name.substring(1);
|
|
|
|
Pokemon copyWith({
|
|
String? name,
|
|
int? id,
|
|
PokemonType? type1,
|
|
PokemonType? type2,
|
|
int? hp,
|
|
int? atk,
|
|
int? def,
|
|
int? spd,
|
|
String? description,
|
|
bool? isCaught,
|
|
bool? isSeen,
|
|
}) {
|
|
return Pokemon(
|
|
name: name ?? this.name,
|
|
id: id ?? this.id,
|
|
type1: type1 ?? this.type1,
|
|
type2: type2 ?? this.type2,
|
|
hp: hp ?? this.hp,
|
|
atk: atk ?? this.atk,
|
|
def: def ?? this.def,
|
|
spd: spd ?? this.spd,
|
|
description: description ?? this.description,
|
|
isCaught: isCaught ?? this.isCaught,
|
|
isSeen: isSeen ?? this.isSeen,
|
|
);
|
|
}
|
|
}
|
|
|
|
/// Les différents types de Pokémon.
|
|
enum PokemonType {
|
|
normal, fighting, flying, poison, ground, rock, bug, ghost, steel, fire,
|
|
water, grass, electric, psychic, ice, dragon, dark, fairy, unknown, shadow
|
|
}
|