Branch data Line data Source code
1 : : use indexmap::IndexMap;
2 : : use serde::{Deserialize, Serialize};
3 : :
4 : : use crate::{attack_type::AtksInfo, effect::EffectOutcome};
5 : :
6 : : #[derive(Default, Debug, Serialize, Deserialize, Clone, PartialEq)]
7 : : pub struct StatsInGame {
8 : : pub all_atk_info: Vec<AtksInfo>,
9 : : }
10 : :
11 : : impl StatsInGame {
12 : 5 : pub fn update_by_effectoutcome(&mut self, eo: &EffectOutcome) {
13 : 5 : let temp_target: &str = &eo.target_name;
14 : 5 : if let Some(i) = self
15 : 5 : .all_atk_info
16 : 5 : .iter()
17 : 5 : .position(|item| item.atk_name == eo.atk)
18 : 0 : {
19 : 0 : self.all_atk_info[i].nb_use += 1;
20 : 0 : self.all_atk_info[i].all_damages_by_target[temp_target] = eo.real_amount_tx;
21 : 5 : } else {
22 : 5 : let mut im = IndexMap::new();
23 : 5 : im.insert(eo.atk.clone(), eo.real_amount_tx);
24 : 5 : self.all_atk_info.push(AtksInfo {
25 : 5 : atk_name: eo.target_name.clone(),
26 : 5 : nb_use: 1,
27 : 5 : all_damages_by_target: im,
28 : 5 : });
29 : 5 : }
30 : 5 : }
31 : : }
|