diff --git a/src/combat.rs b/src/combat.rs index 3996bb37..0f980c16 100755 --- a/src/combat.rs +++ b/src/combat.rs @@ -34,6 +34,12 @@ struct Encounter { player: Cryp, } +pub struct Battle { + a: Cryp, + b: Cryp, + // winner: Option, +} + fn att_roll(value: u64, att: Attribute) -> Roll { let mut rng = thread_rng(); let roll: u64 = rng.gen(); @@ -59,7 +65,7 @@ fn cryp_turn(c: &Cryp) -> Turn { return Turn { dmg, def } } -pub fn battle(mut a: Cryp, mut b: Cryp) -> (Cryp, Cryp) { +pub fn battle(mut a: Cryp, mut b: Cryp) -> Battle { // println!("battle:",); // println!("{:?}", cryps[0]); // println!("{:?}", cryps[1]); @@ -72,8 +78,16 @@ pub fn battle(mut a: Cryp, mut b: Cryp) -> (Cryp, Cryp) { b = b.assign_dmg(&a, &b_turn, &a_turn); // println!("{:?}", combat); - if vec![&a, &b].iter().any(|c| c.hp == 0) { - break (a, b); + + let mut finished = false; + { + if vec![&a, &b].iter().any(|c| c.hp == 0) { + finished = true + } + } + + if finished { + break Battle { a, b }; } } } @@ -88,7 +102,8 @@ fn pve(plr: Cryp) -> Encounter { .create(); // have to reassign here because battle takes ownership - let (plr, mob) = battle(plr, mob); + let Battle { a: plr, b: mob } = battle(plr, mob); + let win = vec![&plr, &mob].iter().any(|c| c.id == plr.id && c.hp > 0); if win {