mod board;
mod game;
mod objects;
mod simple_ai;

use anyhow::Result;
use assetpath::AssetPath;
use engine::prelude::*;
use game::MillGame;

fn main() -> Result<()> {
    let mut create_info = EngineCreateInfo::default();

    create_info.resource_base_path = "resources".to_string();

    create_info.gui_info.font = Font::Path(AssetPath::from(("resources", "ExportedFont.png")));
    create_info.gui_info.menu_button = AssetPath::from("button_dark.png");
    create_info.gui_info.menu_button_selected = AssetPath::from("button_light.png");
    create_info.gui_info.resource_directory =
        AssetPath::from((create_info.resource_base_path.as_str(), ""));

    create_info.graphics_info.render_scale = 1.0;
    create_info.graphics_info.vsync = true;
    create_info.graphics_info.sample_count = VK_SAMPLE_COUNT_4_BIT;

    create_info.rasterizer_info.enable_lighting = true;
    create_info.rasterizer_info.shadow_image_size = 512;

    create_info.window_info.height = 600;
    create_info.window_info.width = 800;

    create_info.enable_keyboard = true;
    create_info.enable_mouse = true;

    let engine = Engine::new(create_info)?;

    engine.set_game_object(Some(MillGame::new(engine.clone())?))?;

    engine.run()
}