Skip to content
Snippets Groups Projects
resources.rs 1.4 KiB
Newer Older
Louis's avatar
Louis committed
use bevy::app::PluginGroupBuilder;
use bevy::log::{Level, LogPlugin};
use bevy::prelude::*;
use bevy::window::{PresentMode, WindowMode};

use crate::system::load_config::{get_asset_path_string, initial_size};

pub struct DefaultResourcesPlugin;
impl Plugin for DefaultResourcesPlugin {
	fn build(&self, app: &mut App) {
		app.insert_resource(Msaa { samples: 1 })
			.insert_resource(ClearColor(Color::hex("040720").unwrap()));
	}
}
pub fn configure_default_plugins() -> PluginGroupBuilder {
	let (width, height) = initial_size();
Louis's avatar
Louis committed
	DefaultPlugins
		.set(WindowPlugin {
			window: WindowDescriptor {
				width,
				height,
				resizable: true,
				mode: WindowMode::Windowed,
				title: String::from("Trader Tales"),
Louis's avatar
Louis committed
				present_mode: PresentMode::AutoNoVsync,
Louis's avatar
Louis committed
				..Default::default()
			},
			..Default::default()
		})
		.set(AssetPlugin {
			asset_folder: get_asset_path_string(),
			watch_for_changes: true,
		})
		.set(ImagePlugin::default_nearest())
		.set(if option_env!("DISABLED_LOG").is_some() {
			LogPlugin {
				filter: String::from("error"),
				level: Level::ERROR,
			}
		} else {
			LogPlugin {
Louis's avatar
Louis committed
			filter: String::from(
				"info,symphonia_core=warn,symphonia_bundle_mp3=warn,wgpu_core=warn,wgpu_hal=warn",
			),
			level: Level::DEBUG,
Louis's avatar
Louis committed
		})
}

pub struct InitAppPlugins;
impl PluginGroup for InitAppPlugins {
	fn build(self) -> PluginGroupBuilder {
		configure_default_plugins().add(DefaultResourcesPlugin)
	}
}