diff --git a/server/src/zone.rs b/server/src/zone.rs index 3d432cac..59c5ac93 100644 --- a/server/src/zone.rs +++ b/server/src/zone.rs @@ -139,6 +139,10 @@ pub fn zone_update(zone: &Zone, tx: &mut Transaction) -> Result<(), Error> { pub fn zone_join(params: ZoneJoinParams, tx: &mut Transaction, account: &Account) -> Result { let mut zone = zone_get(tx, params.zone_id)?; + if !node_joinable(&zone.graph, NodeIndex::from(params.node_id)) { + return Err(err_msg("not not joinable")); + } + let mut game = game_pve_new(params.cryp_ids, PveMode::Normal, tx, account)?; game.set_zone(zone.id, params.node_id); @@ -159,7 +163,7 @@ pub fn zone_join(params: ZoneJoinParams, tx: &mut Transaction, account: &Account return Ok(game); } -pub fn zone_close(params: ZoneCloseParams, tx: &mut Transaction, account: &Account) -> Result<(), Error> { +pub fn zone_close(params: ZoneCloseParams, tx: &mut Transaction, _account: &Account) -> Result<(), Error> { let mut zone = zone_get(tx, params.zone_id)?; zone.active = false; zone_update(&zone, tx)?; @@ -191,7 +195,7 @@ pub fn create_zone_graph() -> ZoneGraph { return gr; } -pub fn node_joinable(graph: &mut ZoneGraph, target_index: NodeIndex) -> bool { +pub fn node_joinable(graph: &ZoneGraph, target_index: NodeIndex) -> bool { // early return for already attempted { let target_encounter = match graph.node_weight(target_index) { @@ -199,8 +203,6 @@ pub fn node_joinable(graph: &mut ZoneGraph, target_index: NodeIndex) -> bool { None => panic!("{:?} has no weight for {:?}", graph, target_index), }; - println!("{:?}", target_encounter); - if target_encounter.game_id.is_some() { return false; } @@ -216,8 +218,6 @@ pub fn node_joinable(graph: &mut ZoneGraph, target_index: NodeIndex) -> bool { } }); - println!("{:?}", filtered); - // if a node is a neighbour of that graph // and hasn't been attempted // it is joinable @@ -248,8 +248,8 @@ mod tests { #[test] fn zone_joinable_test() { - let mut graph = create_zone_graph(); - assert!(node_joinable(&mut graph, NodeIndex::from(1))); - assert!(!node_joinable(&mut graph, NodeIndex::from(2))); + let graph = create_zone_graph(); + assert!(node_joinable(&graph, NodeIndex::from(1))); + assert!(!node_joinable(&graph, NodeIndex::from(2))); } }