refactor: move animation components into new systems/animation submodule

This commit is contained in:
Ryan Walters
2025-09-10 00:26:49 -05:00
parent ce8ea347e1
commit cb691b0907
5 changed files with 43 additions and 36 deletions

View File

@@ -1,13 +1,12 @@
use bevy_ecs::{
component::Component,
query::{Has, Or, With, Without},
resource::Resource,
system::{Query, Res},
};
use crate::{
systems::{DeltaTime, Dying, Frozen, Position, Renderable, Velocity},
texture::animated::{DirectionalTiles, TileSequence},
systems::{DeltaTime, Dying, Frozen, LinearAnimation, Looping, Position, Renderable, Velocity},
texture::animated::DirectionalTiles,
};
/// Directional animation component with shared timing across all directions
@@ -33,33 +32,6 @@ impl DirectionalAnimation {
}
}
/// Tag component to mark animations that should loop when they reach the end
#[derive(Component, Clone, Copy, Debug, PartialEq, Eq)]
pub struct Looping;
/// Linear animation component for non-directional animations (frightened ghosts)
#[derive(Component, Resource, Clone)]
pub struct LinearAnimation {
pub tiles: TileSequence,
pub current_frame: usize,
pub time_bank: u16,
pub frame_duration: u16,
pub finished: bool,
}
impl LinearAnimation {
/// Creates a new linear animation with the given tiles and frame duration
pub fn new(tiles: TileSequence, frame_duration: u16) -> Self {
Self {
tiles,
current_frame: 0,
time_bank: 0,
frame_duration,
finished: false,
}
}
}
/// Updates directional animated entities with synchronized timing across directions.
///
/// This runs before the render system to update sprites based on current direction and movement state.

View File

@@ -0,0 +1,30 @@
use crate::texture::animated::TileSequence;
use bevy_ecs::component::Component;
use bevy_ecs::resource::Resource;
/// Tag component to mark animations that should loop when they reach the end
#[derive(Component, Clone, Copy, Debug, PartialEq, Eq)]
pub struct Looping;
/// Linear animation component for non-directional animations (frightened ghosts)
#[derive(Component, Resource, Clone)]
pub struct LinearAnimation {
pub tiles: TileSequence,
pub current_frame: usize,
pub time_bank: u16,
pub frame_duration: u16,
pub finished: bool,
}
impl LinearAnimation {
/// Creates a new linear animation with the given tiles and frame duration
pub fn new(tiles: TileSequence, frame_duration: u16) -> Self {
Self {
tiles,
current_frame: 0,
time_bank: 0,
frame_duration,
finished: false,
}
}
}

View File

@@ -0,0 +1,7 @@
mod blinking;
mod directional;
mod linear;
pub use self::blinking::*;
pub use self::directional::*;
pub use self::linear::*;

View File

@@ -10,12 +10,11 @@ pub mod profiling;
#[cfg_attr(coverage_nightly, coverage(off))]
pub mod render;
pub mod animation;
pub mod blinking;
pub mod collision;
mod animation;
mod collision;
pub mod common;
pub mod ghost;
pub mod hud;
mod ghost;
mod hud;
pub mod input;
pub mod item;
pub mod lifetime;
@@ -27,7 +26,6 @@ pub mod state;
pub use self::animation::*;
pub use self::audio::*;
pub use self::blinking::*;
pub use self::collision::*;
pub use self::common::*;
pub use self::debug::*;