Skip to main content

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
16#[must_use]
17pub fn run<T: Application>(
18    title: &str,
19    virtual_size: UVec2,
20    requested_surface_size: UVec2,
21) -> AppReturnValue {
22    App::new()
23        .insert_resource(Window {
24            title: title.to_string(),
25            requested_surface_size,
26            minimal_surface_size: virtual_size,
27            mode: ScreenMode::Windowed,
28        })
29        .insert_resource(GameSettings { virtual_size })
30        .add_plugins((limnus::DefaultPlugins, DefaultPlugins))
31        .add_plugins(GamePlugin::<T>::new())
32        .run()
33}
34
35pub struct DefaultPlugins;
36
37impl Plugin for DefaultPlugins {
38    fn build(&self, app: &mut App) {
39        app.add_plugins((RenderWgpuPlugin, MaterialPlugin, FontPlugin));
40    }
41}