summaryrefslogtreecommitdiff
path: root/src/json.rs
diff options
context:
space:
mode:
authorJustin Worthe <justin@worthe-it.co.za>2019-06-28 21:20:37 +0200
committerJustin Worthe <justin@worthe-it.co.za>2019-06-28 21:20:37 +0200
commita07cbfd67849b98a881f930e12e07c429e604ac4 (patch)
tree4b4ad859c169d6366ca2e6e91d0ef09e5986396f /src/json.rs
parente20e7f0a9029d33c67869951371cc03965127b31 (diff)
updated active worm in update
This might change weirdly because of the select move.
Diffstat (limited to 'src/json.rs')
-rw-r--r--src/json.rs70
1 files changed, 42 insertions, 28 deletions
diff --git a/src/json.rs b/src/json.rs
index 798c567..86b35ea 100644
--- a/src/json.rs
+++ b/src/json.rs
@@ -53,7 +53,7 @@ pub struct PlayerWorm {
pub digging_range: u32,
pub movement_range: u32,
pub weapon: Weapon,
- pub banana_bombs: Option<Bomb>
+ pub banana_bombs: Option<Bomb>,
}
#[derive(Serialize, Deserialize, Clone, Debug, PartialEq, Eq)]
@@ -61,6 +61,7 @@ pub struct PlayerWorm {
pub struct Opponent {
pub id: i32,
pub score: i32,
+ pub current_worm_id: i32,
pub worms: Vec<OpponentWorm>,
pub remaining_worm_selections: u8,
}
@@ -159,7 +160,7 @@ pub struct Bomb {
pub damage: i32,
pub range: u8,
pub count: u8,
- pub damage_radius: u8
+ pub damage_radius: u8,
}
impl State {
@@ -170,6 +171,14 @@ impl State {
.filter(|w| w.health > 0)
.position(|w| w.id == self.current_worm_id)
}
+
+ pub fn opponent_active_worm_index(&self) -> Option<usize> {
+ self.opponents[0]
+ .worms
+ .iter()
+ .filter(|w| w.health > 0)
+ .position(|w| w.id == self.opponents[0].current_worm_id)
+ }
}
#[cfg(test)]
@@ -234,6 +243,7 @@ mod test {
{
"id": 2,
"score": 100,
+ "currentWormId": 3,
"remainingWormSelections": 2,
"worms": [
{
@@ -328,39 +338,43 @@ mod test {
score: 100,
health: 300,
remaining_worm_selections: 1,
- worms: vec![PlayerWorm {
- id: 1,
- health: 100,
- position: Position { x: 24, y: 29 },
- weapon: Weapon {
- damage: 1,
- range: 3,
+ worms: vec![
+ PlayerWorm {
+ id: 1,
+ health: 100,
+ position: Position { x: 24, y: 29 },
+ weapon: Weapon {
+ damage: 1,
+ range: 3,
+ },
+ digging_range: 1,
+ movement_range: 1,
+ banana_bombs: Some(Bomb {
+ damage: 20,
+ range: 5,
+ count: 3,
+ damage_radius: 2,
+ }),
},
- digging_range: 1,
- movement_range: 1,
- banana_bombs: Some(Bomb {
- damage: 20,
- range: 5,
- count: 3,
- damage_radius: 2
- }),
- }, PlayerWorm {
- id: 2,
- health: 150,
- position: Position { x: 1, y: 16 },
- weapon: Weapon {
- damage: 1,
- range: 3,
+ PlayerWorm {
+ id: 2,
+ health: 150,
+ position: Position { x: 1, y: 16 },
+ weapon: Weapon {
+ damage: 1,
+ range: 3,
+ },
+ digging_range: 1,
+ movement_range: 1,
+ banana_bombs: None,
},
- digging_range: 1,
- movement_range: 1,
- banana_bombs: None,
- }],
+ ],
},
opponents: vec![Opponent {
id: 2,
score: 100,
remaining_worm_selections: 2,
+ current_worm_id: 3,
worms: vec![OpponentWorm {
id: 1,
health: 100,