use rust_rl::*; use specs::prelude::*; use specs::saveload::{ SimpleMarker, SimpleMarkerAllocator }; use rltk::prelude::*; const DISPLAYWIDTH: i32 = 72; const DISPLAYHEIGHT: i32 = 40; fn main() -> rltk::BError { // Embedded resources for use in wasm build const MAIN_22_20_BYTES: &[u8] = include_bytes!("../resources/nagidal22x20_centred.png"); const TEXT_11_20_BYTES: &[u8] = include_bytes!("../resources/curses11x20.png"); const SINGLE_1_1_BYTES: &[u8] = include_bytes!("../resources/healthbar22x2.png"); rltk::embedding::EMBED .lock() .add_resource("resources/nagidal22x20_centred.png".to_string(), MAIN_22_20_BYTES); rltk::embedding::EMBED .lock() .add_resource("resources/curses11x20.png".to_string(), TEXT_11_20_BYTES); rltk::embedding::EMBED .lock() .add_resource("resources/healthbar22x2.png".to_string(), SINGLE_1_1_BYTES); let mut context = RltkBuilder::new() .with_title("rust-rl") .with_dimensions(DISPLAYWIDTH, DISPLAYHEIGHT) .with_font("nagidal22x20_centred.png", 22, 20) .with_font("curses11x20.png", 11, 20) .with_font("healthbar22x2.png", 1, 1) .with_tile_dimensions(22, 20) .with_simple_console(DISPLAYWIDTH, DISPLAYHEIGHT, "nagidal22x20_centred.png") .with_sparse_console(DISPLAYWIDTH * 2, DISPLAYHEIGHT, "curses11x20.png") .with_sparse_console(DISPLAYWIDTH * 22, DISPLAYHEIGHT * 20, "healthbar22x2.png") .build()?; if config::CONFIG.visuals.with_scanlines { context.with_post_scanlines(config::CONFIG.visuals.with_screen_burn); } let mut gs = State { ecs: World::new(), mapgen_next_state: Some(RunState::MainMenu { menu_selection: gui::MainMenuSelection::NewGame, }), mapgen_index: 0, mapgen_history: Vec::new(), mapgen_timer: 0.0, }; gs.ecs.register::(); gs.ecs.register::(); gs.ecs.register::(); gs.ecs.register::(); gs.ecs.register::(); gs.ecs.register::(); gs.ecs.register::(); gs.ecs.register::(); gs.ecs.register::(); gs.ecs.register::(); gs.ecs.register::(); gs.ecs.register::(); gs.ecs.register::(); gs.ecs.register::(); gs.ecs.register::(); gs.ecs.register::(); gs.ecs.register::(); gs.ecs.register::(); gs.ecs.register::(); gs.ecs.register::(); gs.ecs.register::(); gs.ecs.register::(); gs.ecs.register::(); gs.ecs.register::(); gs.ecs.register::(); gs.ecs.register::(); gs.ecs.register::(); gs.ecs.register::(); gs.ecs.register::(); gs.ecs.register::(); gs.ecs.register::(); gs.ecs.register::(); gs.ecs.register::(); gs.ecs.register::(); gs.ecs.register::(); gs.ecs.register::(); gs.ecs.register::(); gs.ecs.register::(); gs.ecs.register::(); gs.ecs.register::(); gs.ecs.register::(); gs.ecs.register::(); gs.ecs.register::(); gs.ecs.register::(); gs.ecs.register::(); gs.ecs.register::(); gs.ecs.register::(); gs.ecs.register::(); gs.ecs.register::(); gs.ecs.register::(); gs.ecs.register::(); gs.ecs.register::(); gs.ecs.register::(); gs.ecs.register::(); gs.ecs.register::(); gs.ecs.register::(); gs.ecs.register::(); gs.ecs.register::(); gs.ecs.register::(); gs.ecs.register::(); gs.ecs.register::(); gs.ecs.register::(); gs.ecs.register::(); gs.ecs.register::(); gs.ecs.register::(); gs.ecs.register::(); gs.ecs.register::(); gs.ecs.register::(); gs.ecs.register::(); gs.ecs.register::(); gs.ecs.register::(); gs.ecs.register::(); gs.ecs.register::(); gs.ecs.register::(); gs.ecs.register::(); gs.ecs.register::>(); gs.ecs.register::(); gs.ecs.register::(); gs.ecs.insert(SimpleMarkerAllocator::::new()); raws::load_raws(); // Insert calls gs.ecs.insert(rltk::RandomNumberGenerator::new()); gs.ecs.insert(map::MasterDungeonMap::new()); // Master map list gs.ecs.insert(Map::new(true, 1, 64, 64, 0, "New Map", "N", 0)); // Map gs.ecs.insert(Point::new(0, 0)); // Player pos gs.ecs.insert(gui::Ancestry::Dwarf); // ancestry let player_entity = spawner::player(&mut gs.ecs, 0, 0); gs.ecs.insert(player_entity); // Player entity gs.ecs.insert(RunState::MapGeneration {}); // RunState gs.ecs.insert(particle_system::ParticleBuilder::new()); gs.ecs.insert(rex_assets::RexAssets::new()); gamelog::setup_log(); gamelog::record_event(data::events::EVENT::LEVEL(1)); gs.generate_world_map(1, TileType::Floor); rltk::main_loop(context, gs) }