better node errors
This commit is contained in:
+8
-9
@@ -141,9 +141,8 @@ 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"));
|
||||
}
|
||||
// check node joinable
|
||||
node_joinable(&zone.graph, NodeIndex::from(params.node_id))?;
|
||||
|
||||
let mut game = game_pve_new(params.cryp_ids, PveMode::Normal, tx, account)?;
|
||||
game.set_zone(zone.id, params.node_id);
|
||||
@@ -197,7 +196,7 @@ pub fn create_zone_graph() -> ZoneGraph {
|
||||
return gr;
|
||||
}
|
||||
|
||||
pub fn node_joinable(graph: &ZoneGraph, target_index: NodeIndex) -> bool {
|
||||
pub fn node_joinable(graph: &ZoneGraph, target_index: NodeIndex) -> Result<(), Error> {
|
||||
// early return for already attempted
|
||||
{
|
||||
let target_encounter = match graph.node_weight(target_index) {
|
||||
@@ -206,7 +205,7 @@ pub fn node_joinable(graph: &ZoneGraph, target_index: NodeIndex) -> bool {
|
||||
};
|
||||
|
||||
if target_encounter.game_id.is_some() {
|
||||
return false;
|
||||
return Err(err_msg("node already attempted"));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -222,12 +221,12 @@ pub fn node_joinable(graph: &ZoneGraph, target_index: NodeIndex) -> bool {
|
||||
// it is joinable
|
||||
for i in success_indices {
|
||||
match graph.neighbors(i).find(|n| *n == target_index) {
|
||||
Some(_n) => return true,
|
||||
Some(_n) => return Ok(()),
|
||||
None => continue,
|
||||
};
|
||||
}
|
||||
|
||||
return false;
|
||||
return Err(err_msg("node requirements not met"));
|
||||
}
|
||||
|
||||
pub fn node_finish(game: &Game, zone_id: Uuid, node_index: u32, tx: &mut Transaction) -> Result<Zone, Error> {
|
||||
@@ -270,7 +269,7 @@ mod tests {
|
||||
#[test]
|
||||
fn zone_joinable_test() {
|
||||
let graph = create_zone_graph();
|
||||
assert!(node_joinable(&graph, NodeIndex::from(1)));
|
||||
assert!(!node_joinable(&graph, NodeIndex::from(2)));
|
||||
assert!(node_joinable(&graph, NodeIndex::from(1)).is_ok());
|
||||
assert!(node_joinable(&graph, NodeIndex::from(2)).is_err());
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user