make geisha curver, add fan
fix CurverProjectile replcation
This commit is contained in:
@@ -4,7 +4,7 @@
|
|||||||
/*02*/(key:"chicago gangster", ability:Gun, aps:7.4, ammo:25, range:60, damage:12),
|
/*02*/(key:"chicago gangster", ability:Gun, aps:7.4, ammo:25, range:60, damage:12),
|
||||||
/*03*/(key:"commando", ability:Gun, aps:7.4, ammo:26, range:60, damage:12),
|
/*03*/(key:"commando", ability:Gun, aps:7.4, ammo:26, range:60, damage:12),
|
||||||
/*04*/(key:"field medic", ability:Medic, aps:20),
|
/*04*/(key:"field medic", ability:Medic, aps:20),
|
||||||
/*05*/(key:"geisha", ability:None),
|
/*05*/(key:"geisha", ability:Curver, range:60, ammo:10, damage:25, projectile:"fan"),
|
||||||
/*06*/(key:"goblin", ability:Arrow, aps:2, ammo:5, range:90, damage:50),
|
/*06*/(key:"goblin", ability:Arrow, aps:2, ammo:5, range:90, damage:50),
|
||||||
/*07*/(key:"green grocer", ability:Curver, range:60, ammo:10, damage:25, projectile:"carrot"),
|
/*07*/(key:"green grocer", ability:Curver, range:60, ammo:10, damage:25, projectile:"carrot"),
|
||||||
/*08*/(key:"highland hammer thrower", ability:Thrown, aps:2, ammo:10, damage:25, range:80, projectile:"hammer", interrupt_shoot:false),
|
/*08*/(key:"highland hammer thrower", ability:Thrown, aps:2, ammo:10, damage:25, range:80, projectile:"hammer", interrupt_shoot:false),
|
||||||
|
|||||||
BIN
assets/models/projectiles/fan.glb
Normal file
BIN
assets/models/projectiles/fan.glb
Normal file
Binary file not shown.
@@ -11,17 +11,21 @@ use crate::{
|
|||||||
use avian3d::prelude::*;
|
use avian3d::prelude::*;
|
||||||
use bevy::prelude::*;
|
use bevy::prelude::*;
|
||||||
use bevy_replicon::prelude::{Replicated, SendMode, ServerTriggerExt, ToClients};
|
use bevy_replicon::prelude::{Replicated, SendMode, ServerTriggerExt, ToClients};
|
||||||
|
use serde::{Deserialize, Serialize};
|
||||||
use std::f32::consts::PI;
|
use std::f32::consts::PI;
|
||||||
|
|
||||||
const MAX_SHOT_AGES: f32 = 15.;
|
const MAX_SHOT_AGES: f32 = 15.;
|
||||||
|
|
||||||
#[derive(Component)]
|
#[derive(Component, Reflect, Deserialize, Serialize)]
|
||||||
struct CurverProjectile {
|
#[reflect(Component)]
|
||||||
|
pub struct CurverProjectile {
|
||||||
time: f32,
|
time: f32,
|
||||||
damage: u32,
|
damage: u32,
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn plugin(app: &mut App) {
|
pub fn plugin(app: &mut App) {
|
||||||
|
app.register_type::<CurverProjectile>();
|
||||||
|
|
||||||
app.add_systems(
|
app.add_systems(
|
||||||
Update,
|
Update,
|
||||||
(shot_collision, enemy_hit).run_if(in_state(GameState::Playing)),
|
(shot_collision, enemy_hit).run_if(in_state(GameState::Playing)),
|
||||||
@@ -31,10 +35,10 @@ pub fn plugin(app: &mut App) {
|
|||||||
(update, timeout).run_if(in_state(GameState::Playing)),
|
(update, timeout).run_if(in_state(GameState::Playing)),
|
||||||
);
|
);
|
||||||
|
|
||||||
global_observer!(app, on_trigger_missile);
|
global_observer!(app, on_trigger_curver);
|
||||||
}
|
}
|
||||||
|
|
||||||
fn on_trigger_missile(
|
fn on_trigger_curver(
|
||||||
trigger: On<TriggerCurver>,
|
trigger: On<TriggerCurver>,
|
||||||
mut commands: Commands,
|
mut commands: Commands,
|
||||||
query_transform: Query<&Transform>,
|
query_transform: Query<&Transform>,
|
||||||
@@ -75,10 +79,12 @@ fn on_trigger_missile(
|
|||||||
Visibility::default(),
|
Visibility::default(),
|
||||||
transform,
|
transform,
|
||||||
Replicated,
|
Replicated,
|
||||||
|
//TODO: put in client only system
|
||||||
children![(
|
children![(
|
||||||
Transform::from_rotation(Quat::from_rotation_x(PI / 2.).inverse()),
|
Transform::from_rotation(Quat::from_rotation_x(PI / 2.).inverse()),
|
||||||
AutoRotation(Quat::from_rotation_x(0.4) * Quat::from_rotation_z(0.3)),
|
AutoRotation(Quat::from_rotation_x(0.4) * Quat::from_rotation_z(0.3)),
|
||||||
GltfSceneRoot::Projectile(head.projectile.clone()),
|
GltfSceneRoot::Projectile(head.projectile.clone()),
|
||||||
|
Replicated,
|
||||||
),],
|
),],
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
use crate::{
|
use crate::{
|
||||||
GameState,
|
GameState,
|
||||||
abilities::{BuildExplosionSprite, healing::Healing},
|
abilities::{BuildExplosionSprite, curver::CurverProjectile, healing::Healing},
|
||||||
animation::AnimationFlags,
|
animation::AnimationFlags,
|
||||||
backpack::{Backpack, backpack_ui::BackpackUiState},
|
backpack::{Backpack, backpack_ui::BackpackUiState},
|
||||||
camera::{CameraArmRotation, CameraTarget},
|
camera::{CameraArmRotation, CameraTarget},
|
||||||
@@ -83,6 +83,7 @@ pub fn plugin(app: &mut App) {
|
|||||||
.replicate::<AnimatedCharacter>()
|
.replicate::<AnimatedCharacter>()
|
||||||
.replicate::<AnimationFlags>()
|
.replicate::<AnimationFlags>()
|
||||||
.replicate_once::<AutoRotation>()
|
.replicate_once::<AutoRotation>()
|
||||||
|
.replicate_once::<CurverProjectile>()
|
||||||
.replicate::<Backpack>()
|
.replicate::<Backpack>()
|
||||||
.replicate::<BackpackUiState>()
|
.replicate::<BackpackUiState>()
|
||||||
.replicate::<Billboard>()
|
.replicate::<Billboard>()
|
||||||
|
|||||||
Reference in New Issue
Block a user