diff --git a/assets/img/Plant.png b/assets/img/Plant.png new file mode 100644 index 0000000..1f18345 Binary files /dev/null and b/assets/img/Plant.png differ diff --git a/assets/img/Player.png b/assets/img/Player.png new file mode 100644 index 0000000..71d6b16 Binary files /dev/null and b/assets/img/Player.png differ diff --git a/assets/img/Props.png b/assets/img/Props.png new file mode 100644 index 0000000..2fb5bf1 Binary files /dev/null and b/assets/img/Props.png differ diff --git a/assets/img/Shadow Plant.png b/assets/img/Shadow Plant.png new file mode 100644 index 0000000..b565054 Binary files /dev/null and b/assets/img/Shadow Plant.png differ diff --git a/assets/img/Shadow.png b/assets/img/Shadow.png new file mode 100644 index 0000000..67a2a64 Binary files /dev/null and b/assets/img/Shadow.png differ diff --git a/assets/img/Struct.png b/assets/img/Struct.png new file mode 100644 index 0000000..dd3f1b0 Binary files /dev/null and b/assets/img/Struct.png differ diff --git a/assets/img/Tileset Grass.png b/assets/img/Tileset Grass.png new file mode 100644 index 0000000..dd5d66c Binary files /dev/null and b/assets/img/Tileset Grass.png differ diff --git a/assets/img/Tileset Stone Ground.png b/assets/img/Tileset Stone Ground.png new file mode 100644 index 0000000..4dee6c0 Binary files /dev/null and b/assets/img/Tileset Stone Ground.png differ diff --git a/assets/img/Tileset Wall.png b/assets/img/Tileset Wall.png new file mode 100644 index 0000000..555a2ff Binary files /dev/null and b/assets/img/Tileset Wall.png differ diff --git a/src/assets.rs b/src/assets.rs index 5ef9b71..1e14904 100644 --- a/src/assets.rs +++ b/src/assets.rs @@ -1,28 +1,42 @@ use bevy::prelude::*; #[derive(Resource, Debug, Default)] -pub struct Assets { +pub struct AssetLoader { pub sprites: Sprites, } #[derive(Resource, Debug, Default)] pub struct Sprites { - pub square: Handle, + pub player: Handle, } -pub struct AssetLoader; +pub struct AssetPlugin; -impl Plugin for AssetLoader { +impl Plugin for AssetPlugin { fn build(&self, app: &mut App) { - app.init_resource::() + app.init_resource::() .add_systems(Startup, load_assets); } } -fn load_assets(mut sprite_assets: ResMut, asset_server: Res) { - *sprite_assets = Assets { +fn load_assets( + mut assets: ResMut, + asset_server: Res, + mut texture_atlases: ResMut>, +) { + let player_img = asset_server.load("img/Player.png"); + let player_atlas = TextureAtlas::from_grid( + player_img, + Vec2::new(21.0, 48.0), + 7, + 1, + Some(Vec2 { x: 33., y: 0. }), + Some(Vec2 { x: 6., y: 10. }), + ); + let player_atlas_handle = texture_atlases.add(player_atlas); + *assets = AssetLoader { sprites: Sprites { - square: asset_server.load("img/square.png"), + player: player_atlas_handle, }, }; } diff --git a/src/main.rs b/src/main.rs index 98c324e..8f22dff 100644 --- a/src/main.rs +++ b/src/main.rs @@ -17,7 +17,7 @@ fn main() { })) .add_plugins(( camera::Camera, - assets::AssetLoader, + assets::AssetPlugin, player::Player, movement::Movement, )) diff --git a/src/player.rs b/src/player.rs index de83db2..7745cff 100644 --- a/src/player.rs +++ b/src/player.rs @@ -1,7 +1,7 @@ use bevy::prelude::*; use crate::{ - assets::Assets, + assets::AssetLoader, movement::{Heading, Mover, Speed, Velocity}, }; @@ -17,12 +17,13 @@ impl Plugin for Player { } } -fn spawn_player(mut commands: Commands, assets: Res) { +fn spawn_player(mut commands: Commands, assets: Res) { commands.spawn(( Player, - SpriteBundle { - texture: assets.sprites.square.clone(), - transform: Transform::from_xyz(0., 0., 0.), + SpriteSheetBundle { + texture_atlas: assets.sprites.player.clone(), + sprite: TextureAtlasSprite::new(1), + transform: Transform::from_scale(Vec3::splat(3.0)), ..Default::default() }, Mover {