From 2ddbbbae5c28a186e7685614755e2b22bb6f1306 Mon Sep 17 00:00:00 2001 From: Isabelle Lesko Date: Mon, 24 Aug 2020 10:55:27 -0500 Subject: [PATCH] titlescreen work, ui elements --- src/states/titlescreen.rs | 63 +++++++++++++++++++++++++++++++++++++-- 1 file changed, 61 insertions(+), 2 deletions(-) diff --git a/src/states/titlescreen.rs b/src/states/titlescreen.rs index e958950..6be9e04 100644 --- a/src/states/titlescreen.rs +++ b/src/states/titlescreen.rs @@ -1,8 +1,9 @@ -use crate::resources::spritesheet::SpriteSheetMap; +use crate::resources::{font::FontResource, spritesheet::SpriteSheetMap}; use amethyst::{ core::transform::Transform, prelude::*, renderer::{Camera, SpriteRender}, + ui::{Anchor, UiImage, UiText, UiTransform}, window::ScreenDimensions, }; use nalgebra::Vector3; @@ -17,6 +18,7 @@ impl TitleScreenState { /// initialize the titlescreen fn init(&self, world: &mut World, dimensions: ScreenDimensions) { self.init_camera(world, &dimensions); + self.init_ui(world); self.init_scenery(world, &dimensions); } @@ -32,6 +34,62 @@ impl TitleScreenState { .build(); } + fn init_ui(&self, world: &mut World) { + // get the font handle + let font_handle = { + if let Some(font_rsc) = world.try_fetch::() { + font_rsc.get_handle().clone() + } else { + panic!("failed to get a handle on font resource"); + } + }; + + // create the button transforms + let exit_btn_transform = UiTransform::new( + "exit_button".into(), + Anchor::BottomRight, + Anchor::Middle, + -100.0, + 50.0, + 0.0, + 100.0, + 50.0, + ); + let settings_btn_transform = UiTransform::new( + "settings_button".into(), + Anchor::BottomRight, + Anchor::Middle, + 0.0, + 0.0, + 0.0, + 200.0, + 50.0, + ); + + // create the button ui text + let exit_btn_text = + UiText::new(font_handle.clone(), "Exit".into(), [1.0, 1.0, 1.0, 1.0], 30.0); + let settings_btn_text = + UiText::new(font_handle, "Settings".into(), [1.0, 1.0, 1.0, 1.0], 30.0); + + // create ui image + let btn_image = UiImage::SolidColor([0.0, 0.0, 0.0, 1.0]); + + // create the button + world + .create_entity() + .with(exit_btn_transform) + .with(exit_btn_text) + .with(btn_image.clone()) + .build(); + world + .create_entity() + .with(settings_btn_transform) + .with(settings_btn_text) + .with(btn_image) + .build(); + } + // initialize the scenery fn init_scenery(&self, world: &mut World, dimensions: &ScreenDimensions) { // create the scale vector @@ -53,13 +111,14 @@ impl TitleScreenState { .expect("could not find title_screen sprite sheet") .clone() } else { - panic!("failed to find") + panic!("failed to get a handle on the spritesheet map") } }; // create a sprite render let mut sprite_render = SpriteRender { sprite_sheet: spritesheet_handle, sprite_number: 2 }; + // render background stuff world.create_entity().with(transform.clone()).with(sprite_render.clone()).build(); sprite_render.sprite_number = 1; world.create_entity().with(transform.clone()).with(sprite_render.clone()).build();