mod game;
mod magic;
mod messages;
mod movement;
mod shoot;
mod things;

use crate::interaction::is_it_yes;
use crate::map::generate_map;
use crate::Args;
use anyhow::Result;
use game::play;
use things::initialize_things_in_cave;
pub use things::Things;

pub fn game_loop(conf: &Args) -> Result<()> {
    let mut wumpus_map = generate_map(conf);

    loop {
        let things = initialize_things_in_cave(&wumpus_map, conf)?;
        play(&wumpus_map, conf, things)?;
        if !is_it_yes("\nCare to play another game? (y-n) ") {
            return Ok(());
        }
        if !is_it_yes("In the same cave? (y-n) ") {
            wumpus_map = generate_map(conf);
        }
    }
}