use crate::dprint;
use crate::map::{Room, WumpusMap};
use anyhow::Result;
use rand::rngs::ThreadRng;
use rand::Rng;

// TODO: Magic tunnel logic that is confusing
pub(crate) fn is_magic_tunnel_for_some_reason(
    destination_room: &Room,
    wumpus_map: &WumpusMap,
) -> Result<bool> {
    let room_count = wumpus_map.len();

    dprint!(
        "Is this a magic tunnel? Room count {}, destination room {:?}\n",
        room_count,
        destination_room
    );

    // TODO: incomprehensible magic tunnel code
    Ok(false)
}

pub(crate) fn select_random_room<'a>(
    wumpus_map: &'a WumpusMap,
    rng: &mut ThreadRng,
) -> Result<&'a Room> {
    let room_count = wumpus_map.len();
    wumpus_map.get_room_from_room_number(rng.gen_range(0..room_count) + 1)
}