2022-06-03 14:35:18 +00:00
|
|
|
use crate::dynamic_data::models::learned_move::LearnedMove;
|
|
|
|
use crate::dynamic_data::models::pokemon::Pokemon;
|
|
|
|
|
|
|
|
#[derive(Debug)]
|
|
|
|
pub enum TurnChoice<'a> {
|
|
|
|
Move {
|
|
|
|
user: &'a Pokemon<'a>,
|
2022-06-14 17:11:24 +00:00
|
|
|
used_move: Box<LearnedMove<'a>>,
|
|
|
|
target_side: u8,
|
|
|
|
target_index: u8,
|
|
|
|
},
|
|
|
|
Item {
|
|
|
|
user: &'a Pokemon<'a>,
|
|
|
|
},
|
|
|
|
Switch {
|
|
|
|
user: &'a Pokemon<'a>,
|
|
|
|
},
|
|
|
|
Flee {
|
|
|
|
user: &'a Pokemon<'a>,
|
2022-06-03 14:35:18 +00:00
|
|
|
},
|
|
|
|
}
|
|
|
|
|
|
|
|
impl<'a> TurnChoice<'a> {
|
|
|
|
pub fn user(&self) -> &'a Pokemon<'a> {
|
|
|
|
match self {
|
|
|
|
TurnChoice::Move { user, .. } => user,
|
2022-06-14 17:11:24 +00:00
|
|
|
TurnChoice::Item { user, .. } => user,
|
|
|
|
TurnChoice::Switch { user, .. } => user,
|
|
|
|
TurnChoice::Flee { user, .. } => user,
|
2022-06-03 14:35:18 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|