aboutsummaryrefslogtreecommitdiffstats
path: root/src/client.rs
diff options
context:
space:
mode:
authorLibravatar Alexander Foremny <aforemny@posteo.de>2024-03-19 14:13:16 +0100
committerLibravatar Alexander Foremny <aforemny@posteo.de>2024-03-19 15:12:22 +0100
commit2d21d709901c96b05d7f0169dd9d1207436c658c (patch)
tree8f1a094c46e96e13a0a5395ba69c0eb402555133 /src/client.rs
parent2e39423d11a6cd1e25b54c30d9afd22e8eff9dfe (diff)
feat: area of effect
Diffstat (limited to 'src/client.rs')
-rw-r--r--src/client.rs27
1 files changed, 27 insertions, 0 deletions
diff --git a/src/client.rs b/src/client.rs
index 8da77dc..7e0cebf 100644
--- a/src/client.rs
+++ b/src/client.rs
@@ -2,6 +2,7 @@ use crate::client::network::*;
use crate::protocol::*;
use crate::shared::ability::*;
use crate::shared::activation::*;
+use crate::shared::area_of_effect::*;
use crate::shared::champion::*;
use crate::shared::cooldown::*;
use crate::shared::health::*;
@@ -76,6 +77,7 @@ impl Plugin for ClientPlugin {
(
render_players.after(move_players),
render_projectiles.after(move_projectiles),
+ render_area_of_effects,
render_health,
),
)
@@ -226,6 +228,31 @@ fn render_projectiles(
}
}
+fn render_area_of_effects(
+ mut commands: Commands,
+ mut materials: ResMut<Assets<ColorMaterial>>,
+ mut meshes: ResMut<Assets<Mesh>>,
+ area_of_effects: Query<(Entity, &AreaOfEffect), Added<AreaOfEffect>>,
+) {
+ for (entity, area_of_effect) in area_of_effects.iter() {
+ if area_of_effect.duration.is_none() {
+ continue;
+ }
+ commands.entity(entity).insert(MaterialMesh2dBundle {
+ mesh: Mesh2dHandle(meshes.add(Circle {
+ radius: area_of_effect.radius,
+ })),
+ material: materials.add(Color::BLACK),
+ transform: Transform::from_xyz(
+ area_of_effect.position.x,
+ area_of_effect.position.y,
+ 1.,
+ ),
+ ..Default::default()
+ });
+ }
+}
+
fn move_projectiles(mut projectiles: Query<(&mut Transform, &Projectile), Changed<Projectile>>) {
for (mut transform, projectile) in projectiles.iter_mut() {
let Some(position) = (match projectile.type_ {