doukutsu-rs/src/scene/loading_scene.rs

52 lines
1.4 KiB
Rust

use ggez::{Context, GameResult};
use crate::player::Player;
use crate::stage::StageData;
use crate::scene::game_scene::GameScene;
use crate::scene::Scene;
use crate::SharedGameState;
pub struct LoadingScene {
tick: usize,
}
impl LoadingScene {
pub fn new() -> LoadingScene {
LoadingScene {
tick: 0,
}
}
}
impl Scene for LoadingScene {
fn init(&mut self, state: &mut SharedGameState, ctx: &mut Context) -> GameResult {
state.texture_set.ensure_texture_loaded(ctx, "Loading")?;
Ok(())
}
fn tick(&mut self, state: &mut SharedGameState, ctx: &mut Context) -> GameResult {
// deferred to let the loading image draw
if self.tick == 1 {
let stages = StageData::load_stage_table(ctx, "/")?;
state.stages = stages;
state.next_scene = Some(Box::new(GameScene::new(state, ctx, 53)?));
}
self.tick += 1;
Ok(())
}
fn draw(&self, state: &mut SharedGameState, ctx: &mut Context) -> GameResult {
let loading = state.texture_set.tex_map.get_mut("Loading");
if loading.is_some() {
let img = loading.unwrap();
img.add(((state.canvas_size.0 - img.width() as f32) / 2.0).floor(),
((state.canvas_size.1 - img.height() as f32) / 2.0).floor());
img.draw(ctx)?;
}
Ok(())
}
}