use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize, Default)]
pub enum GameLanguage {
#[default]
English,
Japanese,
French,
German,
Italian,
Spanish,
Korean,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub enum GameFamily {
DP,
Platinum,
HGSS,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub enum Game {
Diamond,
Pearl,
Platinum,
HeartGold,
SoulSilver,
}
impl Game {
pub fn family(&self) -> GameFamily {
match self {
Game::Diamond | Game::Pearl => GameFamily::DP,
Game::Platinum => GameFamily::Platinum,
Game::HeartGold | Game::SoulSilver => GameFamily::HGSS,
}
}
pub fn map_header_size(&self) -> usize {
24
}
}
impl GameFamily {
pub fn map_header_size(&self) -> usize {
24
}
pub fn null_encounter_id(&self) -> u16 {
match self {
GameFamily::DP | GameFamily::Platinum => 0xFFFF,
GameFamily::HGSS => 0xFF,
}
}
}
impl GameLanguage {
pub fn from_region_code(code: char) -> Self {
match code {
'J' => GameLanguage::Japanese,
'E' => GameLanguage::English,
'P' => GameLanguage::English, 'F' => GameLanguage::French,
'D' => GameLanguage::German,
'I' => GameLanguage::Italian,
'S' => GameLanguage::Spanish,
'K' => GameLanguage::Korean,
_ => GameLanguage::English,
}
}
pub fn is_japanese(&self) -> bool {
matches!(self, GameLanguage::Japanese)
}
}