diff --git a/src/asset_preloader/mod.rs b/src/asset_preloader/mod.rs new file mode 100644 index 0000000..54fad11 --- /dev/null +++ b/src/asset_preloader/mod.rs @@ -0,0 +1,73 @@ +use bevy::prelude::*; +use std::collections::HashMap; +use std::any::type_name; + +pub enum AssetPreloadState{ + Loading, + Ready +} + +#[derive(Resource)] +pub struct AssetPreloadChecker + where T : Asset + { + pub data: Vec, + typename: String + } + +pub struct AssetPreloadCheckerBuilder + where T: Asset +{ + data : AssetPreloadChecker +} + +#[derive(Resource)] +pub(crate) struct AssetPreload(HashMap); + +pub(crate) fn check_preload_status(gl_preloader: Res) { + todo!(); +} + +pub(crate) fn check_loader_status(loader: Res>) + where T: Asset{ + todo!(); +} + +impl AssetPreload{ + pub(crate) fn new() -> Self{ + AssetPreload(HashMap::new()) + } +} + +impl AssetPreloadChecker{ + pub(crate) fn build(asset_preload: &mut AssetPreload) -> AssetPreloadCheckerBuilder + { + let checker = AssetPreloadChecker::new(); + + asset_preload.0.insert(checker.typename.clone(), false); + + AssetPreloadCheckerBuilder{ + data: checker + } + } + + fn new() -> Self{ + AssetPreloadChecker + { + data: Vec::new(), + typename: type_name::().to_string() + } + } +} + +impl AssetPreloadCheckerBuilder{ + pub fn finish(self) -> AssetPreloadChecker { + self.data + } + + pub fn map_vec<'a, F>(&'a mut self, mut f: F) + where F: FnMut(&mut Vec) + 'a{ + f(&mut self.data.data); + } +} + diff --git a/src/lib.rs b/src/lib.rs index 41e88eb..5ea35aa 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -13,16 +13,44 @@ pub mod hand; pub mod animal; pub mod properties; pub mod plugins; +pub mod asset_preloader; -#[derive(Component)] +/*#[derive(Component)] pub struct JustUpdated; #[derive(Resource)] pub struct Systems { pub update_hand_dimensions: SystemId +}*/ + +pub fn setup(mut commands: Commands,asset_server: Res) { + let hand_img: Handle = asset_server.load("sprites/hand_9s.png"); + + commands.spawn(Camera2d); + commands.spawn( + ( + Hand{name: "Rendo".to_string()}, + Sprite { + image: hand_img, + image_mode: SpriteImageMode::Sliced(TextureSlicer { + border: BorderRect::square(4.), + center_scale_mode: SliceScaleMode::Stretch, + sides_scale_mode: SliceScaleMode::Stretch, + ..default() + }), + ..default() + }, + Transform::from_xyz(0., -300., 0.) + ) + ); } -pub fn setup( +pub fn setup_board() +{ + +} + +/*pub fn setup( mut commands: Commands, asset_server: Res, ) { @@ -101,3 +129,4 @@ pub fn update_hand_dimensions( hand.1.custom_size = Some(Vec2::new(hand_total_width, hand_height)); commands.entity(hand.0).remove::(); } +*/ \ No newline at end of file diff --git a/src/main.rs b/src/main.rs index 63b8ac5..32d4d59 100644 --- a/src/main.rs +++ b/src/main.rs @@ -2,7 +2,7 @@ use bevy::prelude::*; use evolution_rs::{ plugins::*, - setup, test_setup_hand, update_hand_dimensions + setup, //test_setup_hand, update_hand_dimensions }; @@ -16,7 +16,9 @@ use evolution_rs::{ // P.S. оставляю комменты в коде, потому что так надёжнее, чем сообщениями, которые можно потерять fn main() { App::new() - .add_plugins((DefaultPlugins,BasePropertiesPlugin)) - .add_systems(Startup, (setup, test_setup_hand, update_hand_dimensions).chain()) + .add_plugins((DefaultPlugins,BasePropertiesPlugin, asset_preloader::AssetPreloadPlugin)) + + .add_systems(Startup, setup) + //.add_systems(PostStartup, (test_setup_hand, update_hand_dimensions).chain()) .run(); } diff --git a/src/plugins/asset_preloader.rs b/src/plugins/asset_preloader.rs new file mode 100644 index 0000000..cb61555 --- /dev/null +++ b/src/plugins/asset_preloader.rs @@ -0,0 +1,14 @@ +use bevy::prelude::*; +use crate::asset_preloader::*; + +pub struct AssetPreloadPlugin; + +impl Plugin for AssetPreloadPlugin { + fn build(&self, app: &mut App) { + //app.init_resource::>(); + let mut preload = AssetPreload::new(); + let image: AssetPreloadChecker = AssetPreloadChecker::build(&mut preload).finish(); + + app.insert_resource(image); + } +} \ No newline at end of file diff --git a/src/plugins.rs b/src/plugins/mod.rs similarity index 96% rename from src/plugins.rs rename to src/plugins/mod.rs index 8852f14..1f901fd 100644 --- a/src/plugins.rs +++ b/src/plugins/mod.rs @@ -2,6 +2,8 @@ use bevy::prelude::{App,Plugin}; use crate::properties::{Property, TestProperty}; +pub mod asset_preloader; + pub struct BasePropertiesPlugin; impl Plugin for BasePropertiesPlugin