mireforge_boot_game/
lib.rs

1/*
2 * Copyright (c) Peter Bjorklund. All rights reserved. https://github.com/mireforge/mireforge
3 * Licensed under the MIT License. See LICENSE in the project root for license information.
4 */
5pub mod prelude;
6
7use int_math::UVec2;
8use limnus::prelude::{App, AppReturnValue, ScreenMode};
9use limnus::prelude::{Plugin, Window};
10use mireforge_font::FontPlugin;
11use mireforge_game::{Application, GamePlugin, GameSettings};
12use mireforge_material::MaterialPlugin;
13use mireforge_render_wgpu::plugin::RenderWgpuPlugin;
14
15// #[must_use] // TODO: should be able to convert AppReturnValue in the future
16pub fn run<T: Application>(
17    title: &str,
18    virtual_size: UVec2,
19    requested_surface_size: UVec2,
20) -> AppReturnValue {
21    App::new()
22        .insert_resource(Window {
23            title: title.to_string(),
24            requested_surface_size,
25            minimal_surface_size: virtual_size,
26            mode: ScreenMode::Windowed,
27        })
28        .insert_resource(GameSettings { virtual_size })
29        .add_plugins((limnus::DefaultPlugins, DefaultPlugins))
30        .add_plugins(GamePlugin::<T>::new())
31        .run()
32}
33
34pub struct DefaultPlugins;
35
36impl Plugin for DefaultPlugins {
37    fn build(&self, app: &mut App) {
38        app.add_plugins((RenderWgpuPlugin, MaterialPlugin, FontPlugin));
39    }
40}