From 835a4160139aad577bc3168c5979e60b6ed503fe Mon Sep 17 00:00:00 2001 From: Kasper Juul Hermansen Date: Sat, 29 Jan 2022 14:31:02 +0100 Subject: [PATCH] Add main menu --- resources/SmallDungeon_80x50.xp | Bin 0 -> 12581 bytes savegame.json | 2 +- src/gui.rs | 39 ++++++++++++++++++-------------- src/main.rs | 2 ++ src/rex_assets.rs | 18 +++++++++++++++ 5 files changed, 43 insertions(+), 18 deletions(-) create mode 100644 resources/SmallDungeon_80x50.xp create mode 100644 src/rex_assets.rs diff --git a/resources/SmallDungeon_80x50.xp b/resources/SmallDungeon_80x50.xp new file mode 100644 index 0000000000000000000000000000000000000000..cc5ea6b25a42c4c1296bb265fb626e9fe2cac4b1 GIT binary patch literal 12581 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 MainMenuResult { let save_exists = super::save_load_system::does_save_exist(); let runstate = gs.ecs.fetch::(); - ctx.print_color_centered( - 15, - RGB::named(rltk::YELLOW), - RGB::named(rltk::BLACK), - "Rust Roguelike Tutorial", - ); + let assets = gs.ecs.fetch::(); + ctx.render_xp_sprite(&assets.menu, 0, 0); + ctx.draw_box_double(24, 18, 31, 10, RGB::named(rltk::WHEAT), RGB::named(rltk::BLACK)); + ctx.print_color_centered(20, RGB::named(rltk::YELLOW), RGB::named(rltk::BLACK), "Rust Roguelike Tutorial"); + ctx.print_color_centered(21, RGB::named(rltk::CYAN), RGB::named(rltk::BLACK), "by Herbert Wolverson"); + ctx.print_color_centered(22, RGB::named(rltk::GRAY), RGB::named(rltk::BLACK), "Use Up/Down Arrows and Enter"); + + let mut y = 24; if let RunState::MainMenu { menu_selection: selection, } = *runstate { if selection == MainMenuSelection::NewGame { ctx.print_color_centered( - 24, + y, RGB::named(rltk::MAGENTA), RGB::named(rltk::BLACK), "Begin New Game", ); } else { ctx.print_color_centered( - 24, + y, RGB::named(rltk::WHITE), RGB::named(rltk::BLACK), "Begin New Game", ); } + y += 1; if save_exists { if selection == MainMenuSelection::LoadGame { ctx.print_color_centered( - 25, + y, RGB::named(rltk::MAGENTA), RGB::named(rltk::BLACK), "Load Game", ); } else { ctx.print_color_centered( - 25, + y, RGB::named(rltk::WHITE), RGB::named(rltk::BLACK), "Load Game", ); } + y += 1; } if selection == MainMenuSelection::Quit { ctx.print_color_centered( - 26, + y, RGB::named(rltk::MAGENTA), RGB::named(rltk::BLACK), "Quit", ); } else { - ctx.print_color_centered(26, RGB::named(rltk::WHITE), RGB::named(rltk::BLACK), "Quit"); + ctx.print_color_centered(y, RGB::named(rltk::WHITE), RGB::named(rltk::BLACK), "Quit"); } return match ctx.key { diff --git a/src/main.rs b/src/main.rs index e35cd9f..b79d08f 100644 --- a/src/main.rs +++ b/src/main.rs @@ -39,6 +39,7 @@ mod rect; mod save_load_system; mod spawner; mod visibility_system; +mod rex_assets; #[derive(PartialEq, Copy, Clone)] pub enum RunState { @@ -457,6 +458,7 @@ fn main() -> rltk::BError { gs.ecs.insert(rltk::RandomNumberGenerator::new()); gs.ecs.insert(particle_system::ParticleBuilder::new()); + gs.ecs.insert(rex_assets::RexAssets::new()); gs.ecs.register::(); gs.ecs.register::(); diff --git a/src/rex_assets.rs b/src/rex_assets.rs new file mode 100644 index 0000000..24d43ac --- /dev/null +++ b/src/rex_assets.rs @@ -0,0 +1,18 @@ +use rltk::rex::XpFile; + +rltk::embedded_resource!(SMALL_DUNGEON, "../resources/SmallDungeon_80x50.xp"); + +pub struct RexAssets { + pub menu: XpFile, +} + +impl RexAssets { + #[allow(clippy::new_without_default)] + pub fn new() -> RexAssets { + rltk::link_resource!(SMALL_DUNGEON, "../resources/SmallDungeon_80x50.xp"); + + RexAssets { + menu: XpFile::from_resource("../resources/SmallDungeon_80x50.xp").unwrap() + } + } +} \ No newline at end of file