feat: revamp with better separate directional/linear animations, direction independent ticking

This commit is contained in:
Ryan Walters
2025-09-01 15:28:57 -05:00
parent b53db3788d
commit a21459f337
11 changed files with 469 additions and 409 deletions

View File

@@ -1,6 +1,5 @@
use pacman::error::{
AnimatedTextureError, AssetError, EntityError, GameError, GameResult, IntoGameError, MapError, OptionExt, ParseError,
ResultExt, TextureError,
AssetError, EntityError, GameError, GameResult, IntoGameError, MapError, OptionExt, ParseError, ResultExt, TextureError,
};
use std::io;
@@ -46,13 +45,6 @@ fn test_game_error_from_io_error() {
assert!(matches!(game_error, GameError::Io(_)));
}
#[test]
fn test_texture_error_from_animated_error() {
let animated_error = AnimatedTextureError::InvalidFrameDuration(0);
let texture_error: TextureError = animated_error.into();
assert!(matches!(texture_error, TextureError::Animated(_)));
}
#[test]
fn test_asset_error_from_io_error() {
let io_error = io::Error::new(io::ErrorKind::PermissionDenied, "Permission denied");
@@ -78,12 +70,6 @@ fn test_entity_error_display() {
assert_eq!(error.to_string(), "Edge not found: from 1 to 2");
}
#[test]
fn test_animated_texture_error_display() {
let error = AnimatedTextureError::InvalidFrameDuration(0);
assert_eq!(error.to_string(), "Frame duration must be positive, got 0");
}
#[test]
fn test_into_game_error_trait() {
let result: Result<i32, io::Error> = Err(io::Error::new(io::ErrorKind::Other, "test error"));
@@ -146,13 +132,3 @@ fn test_result_ext_error() {
panic!("Expected InvalidState error");
}
}
#[test]
fn test_error_chain_conversions() {
// Test that we can convert through multiple levels
let animated_error = AnimatedTextureError::InvalidFrameDuration(0);
let texture_error: TextureError = animated_error.into();
let game_error: GameError = texture_error.into();
assert!(matches!(game_error, GameError::Texture(TextureError::Animated(_))));
}