add joinable check to zone

This commit is contained in:
ntr 2018-12-30 14:56:57 +11:00
parent 28bda483f1
commit 79f96a2ee0

View File

@ -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<Game, Error> {
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)));
}
}