it compiles now

This commit is contained in:
artemis 2019-12-17 21:01:43 -08:00
parent 67f127df21
commit 45e5505c9c
2 changed files with 296 additions and 310 deletions

550
Cargo.lock generated

File diff suppressed because it is too large Load Diff

View File

@ -72,46 +72,30 @@ fn find_path(
}
#[post("/move", format = "json", data = "<msg>")]
fn make_move(cache: State<Cache>, msg: Json<battlesnake::SnakeRequest>) -> Json<battlesnake::MoveResponse> {
fn make_move(cache_state: State<Cache>, msg: Json<battlesnake::SnakeRequest>) -> Json<battlesnake::MoveResponse> {
let head = msg.you.body[0];
if let Some(mut gs) = cache.lock().expect("wanted cache to be unlockable").get(&msg.game.id) {
let gs_path = gs.path.as_ref().or_else(|| {
let target = find_target(&msg);
let path = find_path(&msg, &head, &target);
gs = &GameState{
target: *target,
path: path,
};
path.as_ref()
});
let mut inner = gs_path.expect("what");
let next = inner[0];
inner.pop();
if inner.len() == 0 {
gs.path = None;
}
return Json(battlesnake::MoveResponse{
move_field: battlesnake::Line{
start: &head,
end: &next,
}.direction().to_string(),
})
let mut cache = cache_state.lock().expect("wanted cache to be unlockable");
let gs = cache.get_mut(&msg.game.id).unwrap();
if gs.path.is_none() {
gs.target = *find_target(&msg);
gs.path = find_path(&msg, &head, &gs.target);
}
let target = find_target(&msg);
let path = find_path(&msg, &head, &target);
let gs = GameState{
target: *target,
path: path,
};
println!("{:?}", gs);
Json(battlesnake::MoveResponse {
move_field: "up".to_string(),
})
match gs.path.as_mut().unwrap().pop() {
None => {
gs.path = None;
Json(battlesnake::MoveResponse {
move_field: "up".to_string(),
})
},
Some(next) => Json(battlesnake::MoveResponse{
move_field: battlesnake::Line{
start: &head,
end: &next,
}.direction().to_string(),
}),
}
}
fn find_target<'a>(gs: &'a battlesnake::SnakeRequest) -> &'a battlesnake::Coord {