refactor: switch NodeId to u16, use I8Vec2 for grid coordinates

This commit is contained in:
Ryan Walters
2025-09-01 12:37:44 -05:00
parent 1206cf9ad1
commit 0cbd6f1aac
11 changed files with 94 additions and 80 deletions

View File

@@ -5,7 +5,8 @@ use pacman::{
events::GameEvent,
map::builder::Map,
systems::{
check_collision, collision_system, Collider, EntityType, Ghost, GhostCollider, ItemCollider, PacmanCollider, Position,
check_collision, collision_system, Collider, EntityType, Ghost, GhostCollider, ItemCollider, NodeId, PacmanCollider,
Position,
},
};
@@ -59,7 +60,7 @@ fn spawn_test_ghost(world: &mut World) -> Entity {
fn spawn_test_ghost_at_node(world: &mut World, node: usize) -> Entity {
world
.spawn((
Position::Stopped { node },
Position::Stopped { node: node as NodeId },
Collider { size: 12.0 },
GhostCollider,
Ghost::Blinky,

View File

@@ -1,4 +1,4 @@
use glam::IVec2;
use glam::I8Vec2;
use pacman::map::direction::*;
#[test]
@@ -18,14 +18,14 @@ fn test_direction_opposite() {
#[test]
fn test_direction_as_ivec2() {
let test_cases = [
(Direction::Up, -IVec2::Y),
(Direction::Down, IVec2::Y),
(Direction::Left, -IVec2::X),
(Direction::Right, IVec2::X),
(Direction::Up, -I8Vec2::Y),
(Direction::Down, I8Vec2::Y),
(Direction::Left, -I8Vec2::X),
(Direction::Right, I8Vec2::X),
];
for (dir, expected) in test_cases {
assert_eq!(dir.as_ivec2(), expected);
assert_eq!(IVec2::from(dir), expected);
assert_eq!(I8Vec2::from(dir), expected);
}
}

View File

@@ -26,8 +26,10 @@ fn test_map_node_positions() {
for (grid_pos, &node_id) in &map.grid_to_node {
let node = map.graph.get_node(node_id).unwrap();
let expected_pos = Vec2::new((grid_pos.x * CELL_SIZE as i32) as f32, (grid_pos.y * CELL_SIZE as i32) as f32)
+ Vec2::splat(CELL_SIZE as f32 / 2.0);
let expected_pos = Vec2::new(
(grid_pos.x as i32 * CELL_SIZE as i32) as f32,
(grid_pos.y as i32 * CELL_SIZE as i32) as f32,
) + Vec2::splat(CELL_SIZE as f32 / 2.0);
assert_eq!(node.position, expected_pos);
}