diff --git a/src/game/player.rs b/src/game/player.rs index b8b6b60..8290317 100644 --- a/src/game/player.rs +++ b/src/game/player.rs @@ -1,5 +1,6 @@ use std::{hash::Hash, time::Duration}; +use animation::AnimBundle; use bevy::{prelude::*, sprite::MaterialMesh2dBundle, utils::HashMap}; use bevy_rapier2d::prelude::*; @@ -11,13 +12,13 @@ use super::set::IngameSet; mod animation; #[derive(Component)] -struct Player {} +struct Player; pub(super) fn player_plugin(app: &mut App) { app.add_systems(OnEnter(AppState::InGame), add_player.in_set(IngameSet)); } -#[derive(Hash, PartialEq, Eq, Default)] +#[derive(Component, Hash, PartialEq, Eq, Default)] enum PlayerAnimations { #[default] Idle, @@ -64,4 +65,16 @@ pub fn add_player( tex_walk, ), ); + + commands.spawn(( + Player, + AnimBundle { + tag: PlayerAnimations::Idle, + mgr: anims, + }, + SpriteBundle { + transform: Transform::from_scale(Vec3::splat(50.)), + ..Default::default() + }, + )); } diff --git a/src/game/player/animation.rs b/src/game/player/animation.rs index d7357e6..a7a70b4 100644 --- a/src/game/player/animation.rs +++ b/src/game/player/animation.rs @@ -5,13 +5,19 @@ use bevy::utils::HashMap; use std::hash::Hash; -#[derive(Default)] -pub(crate) struct AnimationManager { - animations: HashMap, +#[derive(Bundle)] +pub struct AnimBundle { + pub tag: Tag, + pub mgr: AnimationManager, } -impl AnimationManager { - pub fn insert(mut self, which: Anim, anim: Animation) -> Self { +#[derive(Default, Component)] +pub(crate) struct AnimationManager { + animations: HashMap, +} + +impl AnimationManager { + pub fn insert(mut self, which: Tag, anim: Animation) -> Self { self.animations.insert(which, anim); self }