From b2507d706ce8338fd4ab10238a9b9e87ebb7c5eb Mon Sep 17 00:00:00 2001 From: ntr Date: Tue, 27 Nov 2018 12:12:56 +1100 Subject: [PATCH] logging back --- server/src/game.rs | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/server/src/game.rs b/server/src/game.rs index 06ff65ac..983c2f65 100755 --- a/server/src/game.rs +++ b/server/src/game.rs @@ -12,7 +12,7 @@ use failure::err_msg; use account::Account; use rpc::{GameStateParams, GameSkillParams, GamePveParams, GamePvpParams, GameTargetParams, GameJoinParams}; use cryp::{Cryp, cryp_get}; -use skill::{Skill, Cast}; +use skill::{Skill, Cast, ResolutionResult}; pub type Log = Vec; @@ -363,6 +363,24 @@ impl Game { self.resolve_skills() } + fn log_resolution(&mut self, source: &Cryp, target: &Cryp, cast: &Cast) -> &mut Game { + for result in cast.resolution.results.iter() { + match result { + ResolutionResult::Damage { amount, category: _, immunity: _ } => { + self.log.push(format!("{:?} {:?} {:?} {:?}", source.name, cast.skill, target.name, amount)); + }, + ResolutionResult::Effect { effect, duration, immunity: _ } => { + self.log.push(format!("{:?} {:?} {:?} {:?} {:?}T", source.name, cast.skill, target.name, effect, duration)); + }, + ResolutionResult::Removal { effect, immunity: _ } => { + self.log.push(format!("{:?} removed {:?} {:?}", source.name, target.name, effect)); + }, + } + } + + self + } + fn resolve_skills(&mut self) -> &mut Game { if self.phase != Phase::Resolve { panic!("game not in Resolve phase"); @@ -391,6 +409,9 @@ impl Game { let mut target = self.cryp_by_id(skill.target_cryp_id.unwrap()).unwrap().clone(); skill.set_resolution(&mut source, &mut target); + + self.log_resolution(&source, &target, skill); + self.resolved.push(skill.clone()); self.update_cryp(&mut source); @@ -1053,6 +1074,8 @@ mod tests { assert!([Phase::Skill, Phase::Finish].contains(&game.phase)); + println!("{:#?}", game); + return; }