diff --git a/src/asset_preloader/checker.rs b/src/asset_preloader/checker.rs deleted file mode 100644 index 11df930..0000000 --- a/src/asset_preloader/checker.rs +++ /dev/null @@ -1,50 +0,0 @@ -use bevy::prelude::{Resource, Asset}; -use crate::asset_preloader::preloader::*; -use std::any::type_name; - - -#[derive(Resource)] -pub struct AssetPreloadChecker - where T : Asset -{ - pub data: Vec, - typename: String -} - -pub struct AssetPreloadCheckerBuilder - where T: Asset -{ - data : AssetPreloadChecker -} - -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/asset_preloader/mod.rs b/src/asset_preloader/mod.rs deleted file mode 100644 index 29c8a8d..0000000 --- a/src/asset_preloader/mod.rs +++ /dev/null @@ -1,15 +0,0 @@ -use bevy::prelude::*; -use preloader::*; -use checker::*; - -pub mod preloader; -pub mod checker; - -pub(crate) fn check_preload_status(gl_preloader: Res) { - todo!(); -} - -pub(crate) fn check_loader_status(loader: Res>) - where T: Asset{ - todo!(); -} diff --git a/src/asset_preloader/preloader.rs b/src/asset_preloader/preloader.rs deleted file mode 100644 index d68d26a..0000000 --- a/src/asset_preloader/preloader.rs +++ /dev/null @@ -1,16 +0,0 @@ -use std::collections::HashMap; -use bevy::prelude::Resource; - -pub enum AssetPreloadState{ - Loading, - Ready -} - -#[derive(Resource)] -pub(crate) struct AssetPreload(pub(crate) HashMap); - -impl AssetPreload{ - pub(crate) fn new() -> Self{ - AssetPreload(HashMap::new()) - } -} \ No newline at end of file diff --git a/src/lib.rs b/src/lib.rs index 5ea35aa..721f641 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -13,44 +13,16 @@ 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_board() -{ - -} - -/*pub fn setup( +pub fn setup( mut commands: Commands, asset_server: Res, ) { @@ -78,12 +50,12 @@ pub fn setup_board() pub fn test_setup_hand( mut commands: Commands, asset_server: Res, - //systems: Res, + systems: Res, query: Single> ) { let hand_id = query.into_inner(); for _ in 0..4 { - create_card(&mut commands, &asset_server, Some(hand_id)); + create_card(&mut commands, &asset_server, Some(hand_id), &systems); } } @@ -91,7 +63,7 @@ pub fn create_card( commands: &mut Commands, asset_server: &Res, hand_entity: Option, - //systems: &Res + systems: &Res ) { let mut card = commands.spawn(( Card, @@ -102,31 +74,33 @@ pub fn create_card( if let Some(hand) = hand_entity { card.set_parent(hand); commands.entity(hand).insert(JustUpdated); - //commands.run_system(systems.update_hand_dimensions); + commands.run_system(systems.update_hand_dimensions); } } +// TODO: replace this const with getting asset dimensions from Assets +const CARD_SPRITE_SIZE: Vec2 = Vec2::new(128., 192.); + pub fn update_hand_dimensions( mut commands: Commands, p_query: Single<(Entity, &mut Sprite, &Children), (Added, With)>, mut c_query: Query<(&mut Transform, &Sprite), (With, Without)>, - assets: Res> ) { let mut hand = p_query.into_inner(); - let mut counter = 0.; - let mut hand_total_width = 0.; - let mut hand_height = 0.; - for &child_id in hand.2.iter() { + let size = hand.2.iter().count(); + let hor_margin = 8.; + let ver_margin = 8.; + let sprite_size = CARD_SPRITE_SIZE; + let hand_total_width = (sprite_size.x + hor_margin) * (size as f32); + let hand_height = ver_margin * 2. + sprite_size.y; + let hand_offset = (hand_total_width - sprite_size.x - hor_margin) / 2.; + + for (index, &child_id) in hand.2.iter().enumerate() { let Ok(mut child) = c_query.get_mut(child_id) else { continue; }; - let sprite_size = assets.get(child.1.image.id()).unwrap().size_f32(); - let hor_margin = Vec2::new(4., 0.); - let ver_margin = Vec2::new(0., 4.); - hand_total_width += sprite_size.x + hor_margin.x; - hand_height = sprite_size.y + ver_margin.y * 2.; - child.0.translation = Vec3::from((ver_margin + (sprite_size + hor_margin) * counter, 0.)); - counter += 1.; + let offset_x = (sprite_size.x + hor_margin) * (index as f32) - hand_offset; + let offset_y = 0.; + child.0.translation = Vec3::from((Vec2::new(offset_x, offset_y), 1.)); } 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 32d4d59..3da7f2e 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 }; @@ -16,9 +16,7 @@ use evolution_rs::{ // P.S. оставляю комменты в коде, потому что так надёжнее, чем сообщениями, которые можно потерять fn main() { App::new() - .add_plugins((DefaultPlugins,BasePropertiesPlugin, asset_preloader::AssetPreloadPlugin)) - - .add_systems(Startup, setup) - //.add_systems(PostStartup, (test_setup_hand, update_hand_dimensions).chain()) + .add_plugins((DefaultPlugins,BasePropertiesPlugin)) + .add_systems(Startup, (setup, test_setup_hand).chain()) .run(); } diff --git a/src/plugins/mod.rs b/src/plugins.rs similarity index 96% rename from src/plugins/mod.rs rename to src/plugins.rs index 1f901fd..8852f14 100644 --- a/src/plugins/mod.rs +++ b/src/plugins.rs @@ -2,8 +2,6 @@ use bevy::prelude::{App,Plugin}; use crate::properties::{Property, TestProperty}; -pub mod asset_preloader; - pub struct BasePropertiesPlugin; impl Plugin for BasePropertiesPlugin diff --git a/src/plugins/asset_preloader.rs b/src/plugins/asset_preloader.rs deleted file mode 100644 index c9f0252..0000000 --- a/src/plugins/asset_preloader.rs +++ /dev/null @@ -1,14 +0,0 @@ -use bevy::prelude::*; -use crate::asset_preloader::{preloader::AssetPreload,checker::AssetPreloadChecker}; - -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