Win text follows camera

This commit is contained in:
Pascal Engélibert 2022-08-27 09:08:14 +02:00
parent a859d72da3
commit e5b041c2c9
Signed by: tuxmain
GPG key ID: 3504BC6D362F7DCA
2 changed files with 25 additions and 5 deletions

View file

@ -17,7 +17,10 @@
* (?) multiplayer * (?) multiplayer
* more audio * more audio
* "jumpable" component to avoid jumping on sensors * "jumpable" component to avoid jumping on sensors
* bug: in level2, move the blue character to win, then reset. The characters are lighter than expected. * bug: in level2, move the blue character to win, then reset. The characters are lighter than expected. (also level 4)
* wasm warning
* redshift warning
* itchio test
## Build ## Build

View file

@ -52,7 +52,8 @@ impl Plugin for GamePlugin {
.with_system(player_movement_system) .with_system(player_movement_system)
.with_system(level_keyboard_system) .with_system(level_keyboard_system)
.with_system(move_camera) .with_system(move_camera)
.with_system(character_particle_effect_system), .with_system(character_particle_effect_system)
.with_system(move_win_text_system),
) )
.add_system_to_stage(CoreStage::PostUpdate, collision_event_system); .add_system_to_stage(CoreStage::PostUpdate, collision_event_system);
} }
@ -101,6 +102,9 @@ pub struct CollisionCount(usize);
#[derive(Component)] #[derive(Component)]
pub struct Melty(pub Color); pub struct Melty(pub Color);
#[derive(Component)]
pub struct WinText;
// Systems // Systems
fn setup( fn setup(
@ -287,7 +291,7 @@ fn collision_event_system(
// If color approximately white // If color approximately white
if app_state.current() == &AppState::Game if app_state.current() == &AppState::Game
&& Vec4::from(new_color).min_element() >= 0.9 && new_color.min_element() >= 0.9
{ {
app_state.replace(AppState::Win).ok(); app_state.replace(AppState::Win).ok();
} }
@ -491,7 +495,8 @@ fn win_setup(
transform: Transform::from_xyz(0., 0., 3.), transform: Transform::from_xyz(0., 0., 3.),
..default() ..default()
}) })
.insert(Level); .insert(Level)
.insert(WinText);
commands commands
.spawn_bundle(Text2dBundle { .spawn_bundle(Text2dBundle {
text: Text::from_section( text: Text::from_section(
@ -506,7 +511,8 @@ fn win_setup(
transform: Transform::from_xyz(0., 0., 4.), transform: Transform::from_xyz(0., 0., 4.),
..Default::default() ..Default::default()
}) })
.insert(Level); .insert(Level)
.insert(WinText);
} }
fn move_camera( fn move_camera(
@ -535,6 +541,17 @@ fn move_camera(
} }
} }
fn move_win_text_system(
camera_query: Query<&Transform, With<Camera>>,
mut win_text_query: Query<&mut Transform, (With<WinText>, Without<Camera>)>,
) {
let camera_pos = camera_query.single();
for mut pos in win_text_query.iter_mut() {
pos.translation.x = camera_pos.translation.x;
pos.translation.y = camera_pos.translation.y;
}
}
fn level_keyboard_system( fn level_keyboard_system(
mut commands: Commands, mut commands: Commands,
mut current_level: ResMut<CurrentLevel>, mut current_level: ResMut<CurrentLevel>,