Files
shocked-miguel/src/goal.rs
2024-11-05 14:31:15 +02:00

35 lines
919 B
Rust

use bevy::prelude::*;
use bevy_ecs_ldtk::prelude::*;
use crate::player::Player;
#[derive(Default, Component)]
pub struct Goal;
#[derive(Default, Bundle, LdtkEntity)]
pub struct GoalBundle {
goal: Goal,
#[sprite_sheet_bundle]
sprite_sheet_bundle: LdtkSpriteSheetBundle,
#[grid_coords]
grid_coords: GridCoords,
}
pub fn check_goal(
level_selection: ResMut<LevelSelection>,
players: Query<&GridCoords, (With<Player>, Changed<GridCoords>)>,
goals: Query<&GridCoords, With<Goal>>,
) {
if players
.iter()
.zip(goals.iter())
.any(|(player_grid_coords, goal_grid_coords)| player_grid_coords == goal_grid_coords)
{
let indices = match level_selection.into_inner() {
LevelSelection::Indices(indices) => indices,
_ => panic!("level selection should always be Indices in this game"),
};
indices.level += 1;
}
}