From ae26b882796480027c27e9ef10a82e83d42a8139 Mon Sep 17 00:00:00 2001 From: Isabelle Lesko Date: Sun, 23 Aug 2020 18:46:03 -0500 Subject: [PATCH] working on loading state and titlescreen --- src/components/mod.rs | 0 src/main.rs | 2 ++ src/resources/font.rs | 19 +++++++++++++++++++ src/resources/mod.rs | 1 + src/states/preload.rs | 41 ++++++++++++++++++++++++++++++++++++----- src/systems/mod.rs | 0 6 files changed, 58 insertions(+), 5 deletions(-) create mode 100644 src/components/mod.rs create mode 100644 src/resources/font.rs create mode 100644 src/systems/mod.rs diff --git a/src/components/mod.rs b/src/components/mod.rs new file mode 100644 index 0000000..e69de29 diff --git a/src/main.rs b/src/main.rs index a27916a..bd6a09a 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,6 +1,8 @@ // modules +mod components; mod resources; mod states; +mod systems; // namespacing use amethyst::{ diff --git a/src/resources/font.rs b/src/resources/font.rs new file mode 100644 index 0000000..7c1ac08 --- /dev/null +++ b/src/resources/font.rs @@ -0,0 +1,19 @@ +use amethyst::{ + assets::{Handle, Loader}, + prelude::*, + ui::{FontAsset, TtfFormat}, +}; +use std::path::PathBuf; + +pub struct FontResource(Handle); + +impl FontResource { + pub fn load(world: &mut World, path: PathBuf) -> Self { + let loader = world.read_resource::(); + Self(loader.load(path.to_str().unwrap(), TtfFormat, (), &world.read_resource())) + } + + pub fn get_handle(&self) -> &Handle { + &self.0 + } +} diff --git a/src/resources/mod.rs b/src/resources/mod.rs index 4e41f28..4a9d636 100644 --- a/src/resources/mod.rs +++ b/src/resources/mod.rs @@ -1 +1,2 @@ +pub mod font; pub mod spritesheet; diff --git a/src/states/preload.rs b/src/states/preload.rs index 7e3dbfb..bb5d1d4 100644 --- a/src/states/preload.rs +++ b/src/states/preload.rs @@ -1,5 +1,9 @@ -use crate::resources::spritesheet::*; -use amethyst::{assets::ProgressCounter, prelude::*}; +use crate::resources::{font::FontResource, spritesheet::*}; +use amethyst::{ + assets::ProgressCounter, + prelude::*, + ui::{Anchor, UiText, UiTransform}, +}; /// struct for preloading the game pub struct PreloadState { @@ -14,6 +18,30 @@ impl PreloadState { impl SimpleState for PreloadState { fn on_start(&mut self, data: StateData<'_, GameData<'_, '_>>) { + let world = data.world; + + // load the font + let font = FontResource::load(world, "fnt/8x8_wide_mono_bold.ttf".into()); + let tmp_font_handle = font.get_handle().clone(); + world.insert(font); + + // create the loading thingo + let title_transform = UiTransform::new( + "loading".into(), + Anchor::Middle, + Anchor::Middle, + 0.0, + 0.0, + 0.0, + 350.0, + 45.0, + ); + world + .create_entity() + .with(UiText::new(tmp_font_handle, "Loading...".into(), [0.0, 0.0, 0.0, 1.0], 45.0)) + .with(title_transform) + .build(); + // load the spritesheet let (spritesheet_map, counter) = SpriteSheetMapLoader::new() .with_paths( @@ -21,13 +49,15 @@ impl SimpleState for PreloadState { "img/title_screen_sprite_sheet.ron".into(), "img/title_screen_texture.png".into(), ) - .load(data.world); + .load(world); self.counter = Some(counter); - data.world.insert(spritesheet_map); + world.insert(spritesheet_map); } - fn update(&mut self, _data: &mut StateData<'_, GameData<'_, '_>>) -> SimpleTrans { + fn update(&mut self, data: &mut StateData<'_, GameData<'_, '_>>) -> SimpleTrans { + let world = &mut data.world; + if let Some(counter) = &self.counter { let (assets, finished) = (counter.num_assets(), counter.num_finished()); @@ -36,6 +66,7 @@ impl SimpleState for PreloadState { Trans::None } else if counter.is_complete() { println!("completed load!"); + world.delete_all(); Trans::Switch(Box::new(crate::states::titlescreen::TitleScreenState)) } else { Trans::None diff --git a/src/systems/mod.rs b/src/systems/mod.rs new file mode 100644 index 0000000..e69de29