getting there
This commit is contained in:
parent
a8a000e1ff
commit
b2bfe8cf2a
@ -175,6 +175,13 @@ impl Game {
|
||||
|
||||
fn skill_phase_start(mut self) -> Game {
|
||||
self.phase_start = Utc::now();
|
||||
|
||||
for player in self.players.iter_mut() {
|
||||
if player.skills_required() != 0 {
|
||||
player.set_ready(false);
|
||||
}
|
||||
}
|
||||
|
||||
self.log.push("<Skill Phase>".to_string());
|
||||
|
||||
if ![Phase::Start, Phase::Resolve].contains(&self.phase) {
|
||||
@ -236,6 +243,8 @@ impl Game {
|
||||
panic!("{:?} unable to add pve mob skill {:?}", e, s);
|
||||
},
|
||||
}
|
||||
|
||||
self.player_ready(player_id).unwrap();
|
||||
}
|
||||
|
||||
self
|
||||
@ -1094,9 +1103,12 @@ mod tests {
|
||||
assert!(game.player_by_id(y_player.id).unwrap().cryps[0].skill_on_cd(Skill::Stun).is_some());
|
||||
assert!(game.player_by_id(x_player.id).unwrap().cryps[0].skill_on_cd(Skill::Block).is_none());
|
||||
|
||||
let _x_stun_id = game.add_skill(x_player.id, x_cryp.id, Some(y_cryp.id), Skill::TestTouch).unwrap();
|
||||
game.add_skill(x_player.id, x_cryp.id, Some(y_cryp.id), Skill::TestTouch).unwrap();
|
||||
game.add_skill(y_player.id, y_cryp.id, Some(x_cryp.id), Skill::TestTouch).unwrap();
|
||||
|
||||
game.player_ready(x_player.id).unwrap();
|
||||
game.player_ready(y_player.id).unwrap();
|
||||
|
||||
game = game.resolve_phase_start();
|
||||
|
||||
// should auto progress back to skill phase
|
||||
@ -1108,6 +1120,9 @@ mod tests {
|
||||
let _x_block_id = game.add_skill(x_player.id, x_cryp.id, Some(y_cryp.id), Skill::Stun).unwrap();
|
||||
let _y_touch_id = game.add_skill(y_player.id, y_cryp.id, Some(x_cryp.id), Skill::TestTouch).unwrap();
|
||||
|
||||
game.player_ready(x_player.id).unwrap();
|
||||
game.player_ready(y_player.id).unwrap();
|
||||
|
||||
game = game.resolve_phase_start();
|
||||
|
||||
assert!(game.player_by_id(x_player.id).unwrap().cryps[0].skill_on_cd(Skill::Stun).is_some());
|
||||
@ -1127,6 +1142,9 @@ mod tests {
|
||||
let _x_block_id = game.add_skill(x_player.id, x_cryp.id, None, Skill::TestParry).unwrap();
|
||||
game.add_skill(y_player.id, y_cryp.id, Some(x_cryp.id), Skill::TestStun).unwrap();
|
||||
|
||||
game.player_ready(x_player.id).unwrap();
|
||||
game.player_ready(y_player.id).unwrap();
|
||||
|
||||
game = game.resolve_phase_start();
|
||||
|
||||
// should not be stunned because of parry
|
||||
@ -1158,6 +1176,9 @@ mod tests {
|
||||
game.add_skill(x_player.id, x_cryp.id, Some(i_cryp.id), Skill::Ruin).unwrap();
|
||||
game.add_skill(x_player.id, y_cryp.id, Some(i_cryp.id), Skill::TestTouch).unwrap();
|
||||
|
||||
game.player_ready(i_player.id).unwrap();
|
||||
game.player_ready(x_player.id).unwrap();
|
||||
|
||||
assert!(game.skill_phase_finished());
|
||||
game = game.resolve_phase_start();
|
||||
|
||||
@ -1205,7 +1226,9 @@ mod tests {
|
||||
game.add_skill(x_player.id, x_cryp.id, Some(i_cryp.id), Skill::Taunt).unwrap();
|
||||
game.add_skill(x_player.id, y_cryp.id, Some(i_cryp.id), Skill::TestTouch).unwrap();
|
||||
|
||||
assert!(game.skill_phase_finished());
|
||||
game.player_ready(i_player.id).unwrap();
|
||||
game.player_ready(x_player.id).unwrap();
|
||||
|
||||
game = game.resolve_phase_start();
|
||||
|
||||
assert!(game.resolved.len() == 4);
|
||||
@ -1234,6 +1257,9 @@ mod tests {
|
||||
game.add_skill(x_player.id, x_cryp.id, Some(i_cryp.id), Skill::TestTouch).unwrap();
|
||||
game.add_skill(x_player.id, y_cryp.id, Some(i_cryp.id), Skill::TestTouch).unwrap();
|
||||
|
||||
game.player_ready(i_player.id).unwrap();
|
||||
game.player_ready(x_player.id).unwrap();
|
||||
|
||||
assert!(game.skill_phase_finished());
|
||||
game = game.resolve_phase_start();
|
||||
|
||||
@ -1251,6 +1277,9 @@ mod tests {
|
||||
game.add_skill(x_player.id, y_cryp.id, Some(j_cryp.id), Skill::TestTouch).unwrap();
|
||||
assert!(game.add_skill(x_player.id, x_cryp.id, Some(i_cryp.id), Skill::TestTouch).is_err());
|
||||
|
||||
game.player_ready(i_player.id).unwrap();
|
||||
game.player_ready(x_player.id).unwrap();
|
||||
|
||||
assert!(game.skill_phase_finished());
|
||||
game = game.resolve_phase_start();
|
||||
|
||||
|
||||
@ -294,7 +294,10 @@ impl Instance {
|
||||
|
||||
game = game.start();
|
||||
|
||||
assert!(game.finished());
|
||||
if !game.finished() {
|
||||
panic!("game not finished {:?}", game)
|
||||
}
|
||||
|
||||
let winner = match game.winner() {
|
||||
Some(w) => w,
|
||||
None => panic!("game has no winner {:?}", game),
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user