Skip to content

Commit

Permalink
speargun fix
Browse files Browse the repository at this point in the history
  • Loading branch information
stillonearth committed May 16, 2024
1 parent 80d10da commit 5758e7f
Show file tree
Hide file tree
Showing 5 changed files with 87 additions and 53 deletions.
2 changes: 1 addition & 1 deletion src/audio.rs
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ fn setup_gameplay_music(mut commands: Commands, audio_assets: Res<AudioAssets>,
let handle = audio
.play(audio_assets.mexico.clone())
.looped()
.with_volume(0.3)
.with_volume(0.003)
.handle();
commands.insert_resource(GameplayMusic(handle));
}
Expand Down
2 changes: 1 addition & 1 deletion src/entities/player.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ use bevy::prelude::*;
use bevy_ecs_ldtk::prelude::*;
use bevy_kira_audio::prelude::*;
use bevy_particle_systems::*;
use bevy_rapier2d::prelude::Velocity;

use bevy_rapier2d::prelude::*;

use crate::{
Expand Down
72 changes: 53 additions & 19 deletions src/entities/weapons/speargun.rs
Original file line number Diff line number Diff line change
@@ -1,16 +1,16 @@
use std::f64::consts::FRAC_PI_2;
use std::f32::consts::FRAC_PI_2;
use std::time::Duration;

use crate::entities::characters::enemy::{self, Enemy, EnemyHitEvent};
use crate::entities::player::{self, Player};
use crate::entities::characters::enemy::{Enemy, EnemyHitEvent};
use crate::entities::player::Player;
use crate::physics::ColliderBundle;
use crate::{loading::StaticSpriteAssets, GameState};

use bevy::prelude::*;
use bevy::window::PrimaryWindow;
use bevy_inspector_egui::egui::epaint::text::cursor;
use bevy_magic_light_2d::SpriteCamera;
use bevy_rapier2d::geometry::Collider;
use bevy_rapier2d::na::ComplexField;
use bevy_rapier2d::prelude::*;

// ----------
Expand Down Expand Up @@ -237,7 +237,7 @@ fn handle_arrow_timers(
..default()
},
texture: static_sprite_assets.speargun_arrow.clone(),
transform: transform.clone(),
transform: *transform,
..default()
},
speargun_arrow_trail: SpeargunArrowTrail,
Expand Down Expand Up @@ -305,28 +305,64 @@ pub fn handle_arrow_enemy_collisions(
}
}

// --------
// Controls
// --------

fn rotate_speargun(
mut q_speargun: Query<(&mut Transform, &mut Sprite, &Speargun), Without<Player>>,
angle: f32,
) {
for (mut transform, mut sprite, _) in q_speargun.iter_mut() {
transform.rotation = Quat::from_rotation_z(angle);

if angle.abs() >= FRAC_PI_2 {
sprite.flip_y = true;
} else {
sprite.flip_y = false;
}
}
}

// Those are exclusive systems:
// arrows (gamepad) or mouse (keyboard)
fn control_speargun_with_arrows(
input: Res<Input<KeyCode>>,
mut q_speargun: Query<(&mut Transform, &Speargun), Without<Player>>,
q_speargun: Query<(&mut Transform, &mut Sprite, &Speargun), Without<Player>>,
) {
for (mut transform, _) in q_speargun.iter_mut() {
let mut angle = 0.00;
if input.pressed(KeyCode::Left) {
angle = 0.1;
}
if input.pressed(KeyCode::Right) {
angle = -0.1;
}
if q_speargun.iter().count() == 0 {
return;
}

if !(input.pressed(KeyCode::Left) || input.pressed(KeyCode::Right)) {
return;
}

transform.rotation *= Quat::from_rotation_z(angle);
let mut angle = q_speargun
.iter()
.next()
.unwrap()
.0
.rotation
.to_euler(EulerRot::ZYX)
.0;

if input.pressed(KeyCode::Left) {
angle += 0.1;
}
if input.pressed(KeyCode::Right) {
angle -= -0.1;
}

rotate_speargun(q_speargun, angle);
}

#[allow(unused_assignments)]
fn control_speargun_with_mouse(
q_window: Query<&Window, With<PrimaryWindow>>,
q_camera: Query<(&Camera, &GlobalTransform), With<SpriteCamera>>,
q_players: Query<(Entity, &GlobalTransform, &Player)>,
mut q_speargun: Query<(&mut Transform, &Speargun), Without<Player>>,
q_speargun: Query<(&mut Transform, &mut Sprite, &Speargun), Without<Player>>,
) {
let (camera, camera_transform) = q_camera.single();
let window = q_window.single();
Expand All @@ -352,9 +388,7 @@ fn control_speargun_with_mouse(
direction.normalize().angle_between(Vec2::new(1.0, 0.0))
};

for (mut transform, _) in q_speargun.iter_mut() {
transform.rotation = Quat::from_rotation_z(-angle);
}
rotate_speargun(q_speargun, -angle);
}

// ------
Expand Down
62 changes: 31 additions & 31 deletions src/gameplay/waves.rs
Original file line number Diff line number Diff line change
Expand Up @@ -230,39 +230,39 @@ pub fn ui_wave_info_text(
pub fn get_level_1_waves() -> Vec<Wave> {
vec![
Wave {
events: vec![WaveEntry::Mierda { count: 300 }],
events: vec![WaveEntry::Pizza { count: 0 }],
event_duration: Duration::from_secs(100),
wave_duration: Duration::from_secs(100),
},
Wave {
events: vec![
WaveEntry::Mierda { count: 100 },
WaveEntry::Pizza { count: 3 },
WaveEntry::Mierda { count: 100 },
WaveEntry::Biboran { count: 1 },
WaveEntry::Mierda { count: 100 },
],
event_duration: Duration::from_secs(20),
wave_duration: Duration::from_secs(80),
},
Wave {
events: vec![
WaveEntry::Mierda { count: 200 },
WaveEntry::Pizza { count: 3 },
WaveEntry::Pendejo { count: 200 },
WaveEntry::Mierda { count: 200 },
WaveEntry::Pizza { count: 3 },
WaveEntry::Biboran { count: 1 },
WaveEntry::Pendejo { count: 200 },
WaveEntry::Mierda { count: 200 },
WaveEntry::Pizza { count: 3 },
WaveEntry::Biboran { count: 1 },
WaveEntry::Pendejo { count: 200 },
WaveEntry::Biboran { count: 1 },
WaveEntry::Pizza { count: 3 },
],
event_duration: Duration::from_secs(20),
wave_duration: Duration::from_secs(260),
},
// Wave {
// events: vec![
// WaveEntry::Mierda { count: 100 },
// WaveEntry::Pizza { count: 3 },
// WaveEntry::Mierda { count: 100 },
// WaveEntry::Biboran { count: 1 },
// WaveEntry::Mierda { count: 100 },
// ],
// event_duration: Duration::from_secs(20),
// wave_duration: Duration::from_secs(80),
// },
// Wave {
// events: vec![
// WaveEntry::Mierda { count: 200 },
// WaveEntry::Pizza { count: 3 },
// WaveEntry::Pendejo { count: 200 },
// WaveEntry::Mierda { count: 200 },
// WaveEntry::Pizza { count: 3 },
// WaveEntry::Biboran { count: 1 },
// WaveEntry::Pendejo { count: 200 },
// WaveEntry::Mierda { count: 200 },
// WaveEntry::Pizza { count: 3 },
// WaveEntry::Biboran { count: 1 },
// WaveEntry::Pendejo { count: 200 },
// WaveEntry::Biboran { count: 1 },
// WaveEntry::Pizza { count: 3 },
// ],
// event_duration: Duration::from_secs(20),
// wave_duration: Duration::from_secs(260),
// },
]
}
2 changes: 1 addition & 1 deletion src/loading.rs
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ pub struct TextureAssets {
pub struct StaticSpriteAssets {
#[asset(path = "sprites/arrow.png")]
pub arrow: Handle<Image>,
#[asset(path = "sprites/speargun.png")]
#[asset(path = "sprites/speargun-wide.png")]
pub speargun: Handle<Image>,
#[asset(path = "sprites/speargun-arrow.png")]
pub speargun_arrow: Handle<Image>,
Expand Down

0 comments on commit 5758e7f

Please sign in to comment.