doukutsu-rs/src/framework/context.rs

36 lines
1.0 KiB
Rust
Raw Normal View History

use crate::framework::backend::{init_backend, BackendRenderer};
2021-01-28 22:33:43 +00:00
use crate::framework::error::GameResult;
2021-01-27 18:20:47 +00:00
use crate::framework::filesystem::Filesystem;
2021-01-28 22:33:43 +00:00
use crate::framework::keyboard::KeyboardContext;
2021-02-24 08:28:47 +00:00
use crate::Game;
2021-01-27 18:20:47 +00:00
pub struct Context {
pub(crate) filesystem: Filesystem,
2021-01-28 22:33:43 +00:00
pub(crate) renderer: Option<Box<dyn BackendRenderer>>,
pub(crate) keyboard_context: KeyboardContext,
pub(crate) screen_size: (f32, f32),
2021-02-24 08:28:47 +00:00
pub(crate) screen_insets: (f32, f32, f32, f32),
2021-01-27 18:20:47 +00:00
}
impl Context {
pub fn new() -> Context {
Context {
filesystem: Filesystem::new(),
2021-01-28 22:33:43 +00:00
renderer: None,
keyboard_context: KeyboardContext::new(),
screen_size: (320.0, 240.0),
2021-02-24 08:28:47 +00:00
screen_insets: (0.0, 0.0, 0.0, 0.0),
2021-01-27 18:20:47 +00:00
}
}
2021-01-28 22:33:43 +00:00
pub fn run(&mut self, game: &mut Game) -> GameResult {
let backend = init_backend()?;
let mut event_loop = backend.create_event_loop()?;
self.renderer = Some(event_loop.new_renderer()?);
event_loop.run(game, self);
Ok(())
2021-01-27 18:20:47 +00:00
}
2021-01-28 22:33:43 +00:00
}