From 91419fb01ef5dcdc06d9f6774d16d3ccca1e4b57 Mon Sep 17 00:00:00 2001 From: Alexander Foremny Date: Thu, 21 Mar 2024 15:36:05 +0100 Subject: feat: towers --- src/server.rs | 87 ++++++++++++++++++++++++++++++++++++++++++++++++++--------- 1 file changed, 74 insertions(+), 13 deletions(-) (limited to 'src/server.rs') diff --git a/src/server.rs b/src/server.rs index 5ac07c0..4da2253 100644 --- a/src/server.rs +++ b/src/server.rs @@ -9,11 +9,13 @@ use crate::shared::champion::*; use crate::shared::cooldown::*; use crate::shared::health::*; use crate::shared::health_event::*; +use crate::shared::immovable::*; use crate::shared::imperative::*; use crate::shared::player::*; use crate::shared::projectile::*; +use crate::shared::shape::*; use crate::shared::stats::*; -use crate::shared::*; +use crate::shared::tower::*; use bevy::prelude::*; use bevy::utils::*; use lightyear::prelude::*; @@ -88,14 +90,18 @@ impl Plugin for ServerPlugin { ) .add_systems(FixedUpdate, cooldown_decrement) .add_systems(FixedUpdate, (buffs_despawn, buffs_tick).chain()) - .add_systems(FixedUpdate, player_input); + .add_systems(FixedUpdate, player_input) + .add_systems(FixedUpdate, tower_ai); } } fn setup(mut commands: Commands, mut entity_map: ResMut) { - let client_id = 1; let entity = commands.spawn(PlayerBundle::new(1, Vec2::ZERO, Color::GRAY)); - entity_map.0.insert(client_id, entity.id()); + entity_map.0.insert(1, entity.id()); + let entity = commands.spawn(TowerBundle::new(2, Vec2::new(0., 100.), Color::RED)); + entity_map.0.insert(2, entity.id()); + let entity = commands.spawn(TowerBundle::new(3, Vec2::new(0., -100.), Color::BLUE)); + entity_map.0.insert(3, entity.id()); } fn connects( @@ -216,8 +222,9 @@ fn move_along_direction(position: Vec2, direction: Vec2, distance: f32) -> Vec2 fn imperative_attack_approach( entity_map: Res, - mut players: Query<(&PlayerId, &mut Imperative, &EffectiveStats)>, + mut players: Query<(&PlayerId, &mut Imperative, &EffectiveStats), Without>, mut positions: Query<&mut PlayerPosition>, + shapes: Query<&Shape>, time: Res