use battler_data::{
ConditionData,
ConditionType,
Id,
Identifiable,
};
use crate::effect::fxlang;
pub struct Condition {
id: Id,
pub data: ConditionData,
pub condition: fxlang::Effect,
}
impl Condition {
pub fn new(id: Id, data: ConditionData) -> Self {
let condition = data.condition.clone().try_into().unwrap_or_default();
Self {
id,
data,
condition,
}
}
pub fn condition_type_name(&self) -> &str {
match self.data.condition_type {
ConditionType::BuiltIn => "",
ConditionType::Condition => "condition",
ConditionType::Status => "status",
ConditionType::Type => "type",
ConditionType::Volatile => "",
ConditionType::Weather => "weather",
ConditionType::ZPower => "zpower",
}
}
pub fn non_empty_condition_type_name(&self) -> &str {
let type_name = self.condition_type_name();
if type_name.is_empty() {
"condition"
} else {
type_name
}
}
}
impl Identifiable for Condition {
fn id(&self) -> &Id {
&self.id
}
}