add key to toggle flashlight, fix flashlight in 1st person mode
This commit is contained in:
parent
f88d063beb
commit
e08339ad5e
|
@ -34,6 +34,7 @@ Source code: https://codeberg.org/hut/outfly
|
||||||
- AWSD/Shift/Ctrl: Accelerate
|
- AWSD/Shift/Ctrl: Accelerate
|
||||||
- R: Rotate (hold & move mouse)
|
- R: Rotate (hold & move mouse)
|
||||||
- E: Interact: Talk to people, enter vehicles
|
- E: Interact: Talk to people, enter vehicles
|
||||||
|
- H: Flashlight
|
||||||
- Q: Exit vehicle
|
- Q: Exit vehicle
|
||||||
- JKULIO: Mouseless camera rotation
|
- JKULIO: Mouseless camera rotation
|
||||||
- Augmented Reality: (toggle with Tab)
|
- Augmented Reality: (toggle with Tab)
|
||||||
|
|
13
src/actor.rs
13
src/actor.rs
|
@ -135,6 +135,7 @@ impl Default for ExperiencesGForce { fn default() -> Self { Self {
|
||||||
#[derive(Component)] pub struct JustNowEnteredVehicle;
|
#[derive(Component)] pub struct JustNowEnteredVehicle;
|
||||||
#[derive(Component)] pub struct ActorEnteringVehicle;
|
#[derive(Component)] pub struct ActorEnteringVehicle;
|
||||||
#[derive(Component)] pub struct ActorVehicleBeingEntered;
|
#[derive(Component)] pub struct ActorVehicleBeingEntered;
|
||||||
|
#[derive(Component)] pub struct PlayersFlashLight;
|
||||||
#[derive(Component)] pub struct WantsMaxRotation(pub f64);
|
#[derive(Component)] pub struct WantsMaxRotation(pub f64);
|
||||||
#[derive(Component)] pub struct WantsMaxVelocity(pub f64);
|
#[derive(Component)] pub struct WantsMaxVelocity(pub f64);
|
||||||
#[derive(Component)] pub struct Identifier(pub String);
|
#[derive(Component)] pub struct Identifier(pub String);
|
||||||
|
@ -263,10 +264,12 @@ pub fn handle_input(
|
||||||
q_talker: Query<(&chat::Talker, &Transform), (Without<actor::Player>, Without<Camera>)>,
|
q_talker: Query<(&chat::Talker, &Transform), (Without<actor::Player>, Without<Camera>)>,
|
||||||
player: Query<Entity, With<actor::Player>>,
|
player: Query<Entity, With<actor::Player>>,
|
||||||
q_camera: Query<&Transform, With<Camera>>,
|
q_camera: Query<&Transform, With<Camera>>,
|
||||||
|
mut q_flashlight: Query<&mut Visibility, With<PlayersFlashLight>>,
|
||||||
q_vehicles: Query<(Entity, &Transform), (With<actor::Vehicle>, Without<actor::Player>, Without<Camera>)>,
|
q_vehicles: Query<(Entity, &Transform), (With<actor::Vehicle>, Without<actor::Player>, Without<Camera>)>,
|
||||||
mut ew_conv: EventWriter<chat::StartConversationEvent>,
|
mut ew_conv: EventWriter<chat::StartConversationEvent>,
|
||||||
mut ew_vehicle: EventWriter<VehicleEnterExitEvent>,
|
mut ew_vehicle: EventWriter<VehicleEnterExitEvent>,
|
||||||
mut ew_playerdies: EventWriter<PlayerDiesEvent>,
|
mut ew_playerdies: EventWriter<PlayerDiesEvent>,
|
||||||
|
mut ew_sfx: EventWriter<audio::PlaySfxEvent>,
|
||||||
q_player_drives: Query<Entity, With<PlayerDrivesThis>>,
|
q_player_drives: Query<Entity, With<PlayerDrivesThis>>,
|
||||||
) {
|
) {
|
||||||
if q_camera.is_empty() || player.is_empty() {
|
if q_camera.is_empty() || player.is_empty() {
|
||||||
|
@ -320,6 +323,16 @@ pub fn handle_input(
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if keyboard_input.just_pressed(settings.key_flashlight) {
|
||||||
|
for mut flashlight_vis in &mut q_flashlight {
|
||||||
|
ew_sfx.send(audio::PlaySfxEvent(audio::Sfx::Click));
|
||||||
|
if *flashlight_vis == Visibility::Hidden {
|
||||||
|
*flashlight_vis = Visibility::Visible;
|
||||||
|
} else {
|
||||||
|
*flashlight_vis = Visibility::Hidden;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
else if keyboard_input.just_pressed(settings.key_restart) {
|
else if keyboard_input.just_pressed(settings.key_restart) {
|
||||||
settings.god_mode = false;
|
settings.god_mode = false;
|
||||||
ew_playerdies.send(PlayerDiesEvent(DamageType::Mental));
|
ew_playerdies.send(PlayerDiesEvent(DamageType::Mental));
|
||||||
|
|
|
@ -748,6 +748,7 @@ fn spawn_entities(
|
||||||
actor.with_children(|builder| {
|
actor.with_children(|builder| {
|
||||||
builder.spawn((
|
builder.spawn((
|
||||||
world::DespawnOnPlayerDeath,
|
world::DespawnOnPlayerDeath,
|
||||||
|
actor::PlayersFlashLight,
|
||||||
SpotLightBundle {
|
SpotLightBundle {
|
||||||
transform: Transform {
|
transform: Transform {
|
||||||
translation: Vec3::new(0.0, 0.0, 1.0),
|
translation: Vec3::new(0.0, 0.0, 1.0),
|
||||||
|
@ -763,6 +764,7 @@ fn spawn_entities(
|
||||||
range: 2000.0,
|
range: 2000.0,
|
||||||
..default()
|
..default()
|
||||||
},
|
},
|
||||||
|
visibility: Visibility::Hidden,
|
||||||
..default()
|
..default()
|
||||||
}
|
}
|
||||||
));
|
));
|
||||||
|
|
|
@ -3,6 +3,7 @@ AWSD/Shift/Ctrl: Movement
|
||||||
R: Rotate (hold + move mouse)
|
R: Rotate (hold + move mouse)
|
||||||
E: Interact: Talk to people, enter vehicles
|
E: Interact: Talk to people, enter vehicles
|
||||||
Q: Exit vehicle
|
Q: Exit vehicle
|
||||||
|
H: Flashlight
|
||||||
M: Map
|
M: Map
|
||||||
Tab: Toggle HUD + Augmented Reality
|
Tab: Toggle HUD + Augmented Reality
|
||||||
Left click: Target objects [AUGMENTED REALITY ONLY]
|
Left click: Target objects [AUGMENTED REALITY ONLY]
|
||||||
|
|
|
@ -91,6 +91,7 @@ pub struct Settings {
|
||||||
pub key_interact: KeyCode,
|
pub key_interact: KeyCode,
|
||||||
pub key_vehicle: KeyCode,
|
pub key_vehicle: KeyCode,
|
||||||
pub key_camera: KeyCode,
|
pub key_camera: KeyCode,
|
||||||
|
pub key_flashlight: KeyCode,
|
||||||
pub key_shadows: KeyCode,
|
pub key_shadows: KeyCode,
|
||||||
pub key_rotate: KeyCode,
|
pub key_rotate: KeyCode,
|
||||||
pub key_rotation_stabilizer: KeyCode,
|
pub key_rotation_stabilizer: KeyCode,
|
||||||
|
@ -196,6 +197,7 @@ impl Default for Settings {
|
||||||
key_interact: KeyCode::KeyE,
|
key_interact: KeyCode::KeyE,
|
||||||
key_vehicle: KeyCode::KeyQ,
|
key_vehicle: KeyCode::KeyQ,
|
||||||
key_camera: KeyCode::KeyF,
|
key_camera: KeyCode::KeyF,
|
||||||
|
key_flashlight: KeyCode::KeyH,
|
||||||
key_shadows: KeyCode::F2,
|
key_shadows: KeyCode::F2,
|
||||||
key_rotate: KeyCode::KeyR,
|
key_rotate: KeyCode::KeyR,
|
||||||
key_rotation_stabilizer: KeyCode::KeyY,
|
key_rotation_stabilizer: KeyCode::KeyY,
|
||||||
|
|
Loading…
Reference in a new issue