diff --git a/assets/models/head_misc/molotov_cocktail.glb b/assets/models/head_misc/molotov_cocktail.glb new file mode 100644 index 0000000..ec9216e Binary files /dev/null and b/assets/models/head_misc/molotov_cocktail.glb differ diff --git a/assets/sfx/abilities/throw-explosion.ogg b/assets/sfx/abilities/throw-explosion.ogg new file mode 100644 index 0000000..879ae48 Binary files /dev/null and b/assets/sfx/abilities/throw-explosion.ogg differ diff --git a/assets/sfx/abilities/throw.ogg b/assets/sfx/abilities/throw.ogg new file mode 100644 index 0000000..19fd4fc Binary files /dev/null and b/assets/sfx/abilities/throw.ogg differ diff --git a/src/shooting.rs b/src/abilities/gun.rs similarity index 76% rename from src/shooting.rs rename to src/abilities/gun.rs index 7e7675a..50ff525 100644 --- a/src/shooting.rs +++ b/src/abilities/gun.rs @@ -1,13 +1,12 @@ +use super::{Projectile, TriggerState}; use crate::{ GameState, aim::AimState, billboards::Billboard, loading_assets::GameAssets, - npc::Hit, physics_layers::GameLayer, player::{Player, PlayerRig}, sounds::PlaySound, - tb_entities::EnemySpawn, utils::sprite_3d_animation::AnimationTimer, }; use avian3d::prelude::{ @@ -19,18 +18,12 @@ use bevy_sprite3d::{Sprite3dBuilder, Sprite3dParams}; use std::f32::consts::PI; #[derive(Component)] -struct Shot { +struct GunProjectile { time: f32, } const MAX_SHOT_AGES: f32 = 1.; -#[derive(Event, Reflect)] -pub enum TriggerState { - Active, - Inactive, -} - #[derive(Resource)] struct ShotAssets { image: Handle, @@ -41,7 +34,7 @@ pub fn plugin(app: &mut App) { app.add_systems(OnEnter(GameState::Playing), setup); app.add_systems( Update, - (update, shot_collision, enemy_hit, timeout).run_if(in_state(GameState::Playing)), + (update, shot_collision, timeout).run_if(in_state(GameState::Playing)), ); app.add_observer(on_trigger_state); } @@ -61,19 +54,26 @@ fn on_trigger_state( mut commands: Commands, aim: Res, player_rot: Query<&Transform, With>, - player_pos: Query<&Transform, With>, + player: Query<(&Transform, &Player)>, target_transform: Query<&Transform, (Without, Without)>, time: Res