fade in from maroon red color when dying/respawning
This commit is contained in:
parent
61c7cffcef
commit
df9f47c427
|
@ -2,7 +2,7 @@ use bevy::prelude::*;
|
||||||
use bevy_xpbd_3d::prelude::*;
|
use bevy_xpbd_3d::prelude::*;
|
||||||
use bevy::scene::SceneInstance;
|
use bevy::scene::SceneInstance;
|
||||||
use bevy::math::DVec3;
|
use bevy::math::DVec3;
|
||||||
use crate::{actor, audio, chat, commands, nature, settings, world};
|
use crate::{actor, audio, chat, commands, effects, nature, settings, world};
|
||||||
|
|
||||||
pub const ENGINE_SPEED_FACTOR: f32 = 30.0;
|
pub const ENGINE_SPEED_FACTOR: f32 = 30.0;
|
||||||
const MIN_INTERACT_DISTANCE: f32 = 30.0;
|
const MIN_INTERACT_DISTANCE: f32 = 30.0;
|
||||||
|
@ -379,6 +379,7 @@ fn handle_player_death(
|
||||||
ew_spawn: EventWriter<commands::SpawnEvent>,
|
ew_spawn: EventWriter<commands::SpawnEvent>,
|
||||||
mut scene_spawner: ResMut<SceneSpawner>,
|
mut scene_spawner: ResMut<SceneSpawner>,
|
||||||
mut ew_sfx: EventWriter<audio::PlaySfxEvent>,
|
mut ew_sfx: EventWriter<audio::PlaySfxEvent>,
|
||||||
|
mut ew_effect: EventWriter<effects::SpawnEffectEvent>,
|
||||||
) {
|
) {
|
||||||
for _ in er_playerdies.read() {
|
for _ in er_playerdies.read() {
|
||||||
for entity in &q_noscenes {
|
for entity in &q_noscenes {
|
||||||
|
@ -390,6 +391,10 @@ fn handle_player_death(
|
||||||
}
|
}
|
||||||
//cmd.run_system(commands::load_defs); // why is it so complicated to get SystemId?
|
//cmd.run_system(commands::load_defs); // why is it so complicated to get SystemId?
|
||||||
ew_sfx.send(audio::PlaySfxEvent(audio::Sfx::WakeUp));
|
ew_sfx.send(audio::PlaySfxEvent(audio::Sfx::WakeUp));
|
||||||
|
ew_effect.send(effects::SpawnEffectEvent {
|
||||||
|
class: effects::Effects::FadeIn(Color::MAROON),
|
||||||
|
duration: 1.0,
|
||||||
|
});
|
||||||
commands::load_defs(ew_spawn);
|
commands::load_defs(ew_spawn);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,7 +15,7 @@ impl Plugin for EffectsPlugin {
|
||||||
|
|
||||||
#[derive(Clone)]
|
#[derive(Clone)]
|
||||||
pub enum Effects {
|
pub enum Effects {
|
||||||
FadeIn,
|
FadeIn(Color),
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Component)] pub struct FadeBlack;
|
#[derive(Component)] pub struct FadeBlack;
|
||||||
|
@ -36,7 +36,7 @@ pub fn setup(
|
||||||
mut ew_effect: EventWriter<SpawnEffectEvent>,
|
mut ew_effect: EventWriter<SpawnEffectEvent>,
|
||||||
) {
|
) {
|
||||||
if !settings.dev_mode {
|
if !settings.dev_mode {
|
||||||
ew_effect.send(SpawnEffectEvent { class: Effects::FadeIn, duration: 4.0 });
|
ew_effect.send(SpawnEffectEvent { class: Effects::FadeIn(Color::BLACK), duration: 4.0 });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -48,7 +48,7 @@ pub fn spawn_effects(
|
||||||
let now = time.elapsed_seconds_f64();
|
let now = time.elapsed_seconds_f64();
|
||||||
for effect in er_effect.read() {
|
for effect in er_effect.read() {
|
||||||
match effect.class {
|
match effect.class {
|
||||||
Effects::FadeIn => {
|
Effects::FadeIn(color) => {
|
||||||
commands.spawn((
|
commands.spawn((
|
||||||
Effect {
|
Effect {
|
||||||
class: effect.class.clone(),
|
class: effect.class.clone(),
|
||||||
|
@ -65,7 +65,7 @@ pub fn spawn_effects(
|
||||||
left: Val::Px(0.0),
|
left: Val::Px(0.0),
|
||||||
..default()
|
..default()
|
||||||
},
|
},
|
||||||
background_color: Color::rgba(0.0, 0.0, 0.0, 1.0).into(),
|
background_color: color.into(),
|
||||||
..default()
|
..default()
|
||||||
},
|
},
|
||||||
));
|
));
|
||||||
|
@ -87,6 +87,6 @@ pub fn update_fadeblack(
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
let alpha = (1.3 - 1.3 * (now - effect.start_time) / effect.duration).clamp(0.0, 1.0);
|
let alpha = (1.3 - 1.3 * (now - effect.start_time) / effect.duration).clamp(0.0, 1.0);
|
||||||
bgcolor.0 = Color::rgba(0.0, 0.0, 0.0, alpha as f32);
|
bgcolor.0.set_a(alpha as f32);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue