Don't remove previous agent position
It might still be used by check_move
This commit is contained in:
parent
637bec67f8
commit
449644ade6
2 changed files with 5 additions and 5 deletions
|
|
@ -1,5 +1,6 @@
|
||||||
pub type Distance = isize;
|
pub type Distance = isize;
|
||||||
|
|
||||||
|
#[derive(Clone)]
|
||||||
pub struct Position {
|
pub struct Position {
|
||||||
pub x: Distance,
|
pub x: Distance,
|
||||||
pub y: Distance,
|
pub y: Distance,
|
||||||
|
|
|
||||||
|
|
@ -87,6 +87,7 @@ impl ActualWorld {
|
||||||
self.check_move(id, &mv);
|
self.check_move(id, &mv);
|
||||||
}
|
}
|
||||||
let mut new_pos = None;
|
let mut new_pos = None;
|
||||||
|
let pos = self.state.agent_positions.get(&id).unwrap();
|
||||||
match mv {
|
match mv {
|
||||||
Move::Noop => {}
|
Move::Noop => {}
|
||||||
Move::TryTag(other_id) => {
|
Move::TryTag(other_id) => {
|
||||||
|
|
@ -94,14 +95,12 @@ impl ActualWorld {
|
||||||
new_state.tagged_by = Some(id);
|
new_state.tagged_by = Some(id);
|
||||||
}
|
}
|
||||||
Move::TryMove(dir) => {
|
Move::TryMove(dir) => {
|
||||||
let pos = self.state.agent_positions.get(&id).unwrap();
|
|
||||||
new_pos = Some((pos.x + dir.x, pos.y + dir.y).into());
|
new_pos = Some((pos.x + dir.x, pos.y + dir.y).into());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
new_state.agent_positions.insert(
|
new_state
|
||||||
id,
|
.agent_positions
|
||||||
new_pos.unwrap_or_else(|| self.state.agent_positions.remove(&id).unwrap()),
|
.insert(id, new_pos.unwrap_or_else(|| pos.clone()));
|
||||||
);
|
|
||||||
}
|
}
|
||||||
self.state = new_state;
|
self.state = new_state;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue