From 9cdeee04d81caf6145d95518a1ef4be1df83e08b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Juhani=20Krekel=C3=A4?= Date: Sat, 3 Jun 2023 21:52:58 +0300 Subject: [PATCH] Limit the number of unreflected missiles on-screen --- bundle/main.lua | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/bundle/main.lua b/bundle/main.lua index 77c167a..674bb7b 100644 --- a/bundle/main.lua +++ b/bundle/main.lua @@ -11,6 +11,9 @@ local missile_trail_fade = 0.4 local missile_trail_min_visibility = 0.03 local missile_trail_length = math.log(missile_trail_min_visibility, missile_trail_fade) +local unreflected_missiles = 0 +local unreflected_missiles_max = 5 + local cities = {} local city_radius = 0.05 @@ -20,7 +23,7 @@ local explosion_duration = 0.4 local enemies = {} local enemy_radius = 0.025 -local enemy_min_shoot = 5 +local enemy_min_shoot = 2 local enemy_max_shoot = 20 local window_width = nil @@ -114,6 +117,7 @@ function spawnMissile(x, y, target_x, target_y, speed) trail_length = 0, alive = true }) + unreflected_missiles = unreflected_missiles + 1 end function spawnExplosion(x, y) @@ -162,7 +166,10 @@ function updateMissiles(dt) -- Collision with the paddle missile.y = paddle_top missile.dy = -missile.dy - missile.reflected = true + if not missile.reflected then + missile.reflected = true + unreflected_missiles = unreflected_missiles - 1 + end end for _, city in ipairs(cities) do @@ -280,8 +287,10 @@ function updateEnemies(dt) enemy.until_shoot = enemy.until_shoot - dt if enemy.until_shoot < 0 then enemy.until_shoot = enemy_min_shoot + math.random() * (enemy_max_shoot - enemy_min_shoot) - local target = cities[math.random(1, #cities)] - spawnMissile(enemy.x, enemy.y, target.x, target.y, 0.2) + if unreflected_missiles < unreflected_missiles_max then + local target = cities[math.random(1, #cities)] + spawnMissile(enemy.x, enemy.y, target.x, target.y, 0.2) + end end if not enemy.alive then