poke_data/models/
localized_effects.rs

1use crate::models::language::LanguageId;
2use crate::types::language::Language;
3use serde::{Deserialize, Serialize};
4use std::collections::HashMap;
5
6#[derive(Debug, Clone, Serialize, Deserialize)]
7pub struct LocalizedEffects(HashMap<LanguageId, LocalizedEffect>);
8
9impl LocalizedEffects {
10    pub fn new(effects: HashMap<LanguageId, LocalizedEffect>) -> Self {
11        Self(effects)
12    }
13
14    pub fn get_by_language(&self, language: Language) -> Option<&LocalizedEffect> {
15        let language_id = language as LanguageId;
16        if let Some(target) = self.0.get(&language_id) {
17            return Some(target);
18        }
19
20        let default_language_id = Language::default() as LanguageId;
21        if let Some(default) = self.0.get(&default_language_id) {
22            return Some(default);
23        }
24
25        None
26    }
27}
28
29#[derive(Debug, Clone, Serialize, Deserialize)]
30pub struct LocalizedEffect {
31    pub effect: String,
32    pub short_effect: String,
33}