battle struct

This commit is contained in:
ntr 2018-08-20 11:34:02 +10:00
parent c42bc386dd
commit eb84b5b934

View File

@ -34,6 +34,12 @@ struct Encounter {
player: Cryp, player: Cryp,
} }
pub struct Battle {
a: Cryp,
b: Cryp,
// winner: Option<Cryp>,
}
fn att_roll(value: u64, att: Attribute) -> Roll { fn att_roll(value: u64, att: Attribute) -> Roll {
let mut rng = thread_rng(); let mut rng = thread_rng();
let roll: u64 = rng.gen(); let roll: u64 = rng.gen();
@ -59,7 +65,7 @@ fn cryp_turn(c: &Cryp) -> Turn {
return Turn { dmg, def } 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!("battle:",);
// println!("{:?}", cryps[0]); // println!("{:?}", cryps[0]);
// println!("{:?}", cryps[1]); // 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); b = b.assign_dmg(&a, &b_turn, &a_turn);
// println!("{:?}", combat); // 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(); .create();
// have to reassign here because battle takes ownership // 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); let win = vec![&plr, &mob].iter().any(|c| c.id == plr.id && c.hp > 0);
if win { if win {