瀏覽代碼

titlescreen work, ui elements

amethyst
Isabelle L. 5 年之前
父節點
當前提交
2ddbbbae5c
共有 1 個文件被更改,包括 61 次插入2 次删除
  1. +61
    -2
      src/states/titlescreen.rs

+ 61
- 2
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::<FontResource>() {
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();


Loading…
取消
儲存