aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/objs/player.lua2
-rw-r--r--src/objs/specks.lua30
2 files changed, 23 insertions, 9 deletions
diff --git a/src/objs/player.lua b/src/objs/player.lua
index caf2afd..66ea379 100644
--- a/src/objs/player.lua
+++ b/src/objs/player.lua
@@ -98,6 +98,8 @@ function new_player(x, y)
add_comp(ent, "Speck_System")
ent.speck_sys.interval = 0.05
+ ent.speck_sys.spawn_amount_max = 10
+
ent.speck_sys.lifetime_max = 0.6
ent.speck_sys.lifetime_min = 0.3
diff --git a/src/objs/specks.lua b/src/objs/specks.lua
index 485a58a..7bd3c78 100644
--- a/src/objs/specks.lua
+++ b/src/objs/specks.lua
@@ -20,6 +20,9 @@ function Speck_Sys.new()
self.free_ids = {}
self.free_ids_size = 0
+ self.spawn_amount_min = 1
+ self.spawn_amount_max = 1
+
self.scale_curve = lerp
self.scale_start_min = 0.8
self.scale_start_max = 1.25
@@ -60,14 +63,11 @@ function Speck_Sys:check_bounce(i)
to_tile_coords(self.data.pos[i].x, self.data.pos[i].y))
end
-function Speck_Sys:update(dt)
+function Speck_Sys:spawn_particles()
local data = self.data
+ local amt = lmath.random(self.spawn_amount_min, self.spawn_amount_max)
- -- particle spawning
- self.spawn_timer = self.spawn_timer - dt
- if self.spawn_timer <= 0 then
- self.spawn_timer = self.interval
-
+ for i = 1, amt do
local id
if self.free_ids_size > 0 then
id = self.free_ids[self.free_ids_size]
@@ -87,9 +87,9 @@ function Speck_Sys:update(dt)
beta = randf_range(-beta, beta)
local rvx = (data.vel[id].x * math.cos(beta))
- - (data.vel[id].y * math.sin(beta))
+ - (data.vel[id].y * math.sin(beta))
local rvy = (data.vel[id].x * math.sin(beta))
- + (data.vel[id].y * math.cos(beta))
+ + (data.vel[id].y * math.cos(beta))
data.vel[id].x = rvx
data.vel[id].y = rvy
@@ -102,6 +102,18 @@ function Speck_Sys:update(dt)
data.scale_end[id] = randf_range(
self.scale_end_min, self.scale_end_max)
end
+end
+
+function Speck_Sys:update(dt)
+ local data = self.data
+
+ -- particle spawning
+ self.spawn_timer = self.spawn_timer - dt
+ if self.spawn_timer <= 0 then
+ self.spawn_timer = self.interval
+
+ self:spawn_particles()
+ end
-- particles processing
for i = 1, data.size do
@@ -154,7 +166,7 @@ function Speck_Sys:draw()
local w, h = self.texture:getDimensions()
lg.draw(
- self.texture, data.pos[i].x, data.pos[i].y, 0, scale, scale, w/2, h/2
+ self.texture, data.pos[i].x, data.pos[i].y, 0, scale, scale, w / 2, h / 2
)
::next_speck_draw::
end