Просмотр исходного кода

working on loading state and titlescreen

amethyst
Isabelle L. 5 лет назад
Родитель
Сommit
ae26b88279
6 измененных файлов: 58 добавлений и 5 удалений
  1. +0
    -0
      src/components/mod.rs
  2. +2
    -0
      src/main.rs
  3. +19
    -0
      src/resources/font.rs
  4. +1
    -0
      src/resources/mod.rs
  5. +36
    -5
      src/states/preload.rs
  6. +0
    -0
      src/systems/mod.rs

+ 0
- 0
src/components/mod.rs Просмотреть файл


+ 2
- 0
src/main.rs Просмотреть файл

@@ -1,6 +1,8 @@
// modules
mod components;
mod resources;
mod states;
mod systems;

// namespacing
use amethyst::{


+ 19
- 0
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<FontAsset>);

impl FontResource {
pub fn load(world: &mut World, path: PathBuf) -> Self {
let loader = world.read_resource::<Loader>();
Self(loader.load(path.to_str().unwrap(), TtfFormat, (), &world.read_resource()))
}

pub fn get_handle(&self) -> &Handle<FontAsset> {
&self.0
}
}

+ 1
- 0
src/resources/mod.rs Просмотреть файл

@@ -1 +1,2 @@
pub mod font;
pub mod spritesheet;

+ 36
- 5
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


+ 0
- 0
src/systems/mod.rs Просмотреть файл


Загрузка…
Отмена
Сохранить