functional, speed controlled by expansionRate
This commit is contained in:
76
src/main.lua
76
src/main.lua
@@ -1,83 +1,17 @@
|
||||
local lg = love.graphics
|
||||
local lm = love.math
|
||||
|
||||
local particularRandomization = lm.newRandomGenerator(os.time())
|
||||
local currentMaxPosition = 2
|
||||
local maxVelocity = 2
|
||||
local lifetimes = {}
|
||||
local particularLifetimes = lm.newRandomGenerator(os.time()*2)
|
||||
local currentMaxType = 2
|
||||
local maxLifetime = 10
|
||||
local Universe = require "Universe"
|
||||
--local Particle = require "Particle"
|
||||
|
||||
local function particular()
|
||||
local self = {}
|
||||
local universe = Universe()
|
||||
|
||||
self.x = particularRandomization:random(currentMaxPosition)
|
||||
self.y = particularRandomization:random(currentMaxPosition)
|
||||
self.vx = particularRandomization:random(maxVelocity)
|
||||
self.vy = particularRandomization:random(maxVelocity)
|
||||
|
||||
self.type = particularRandomization:random(currentMaxType)
|
||||
if self.type > #lifetimes then
|
||||
for i=#lifetimes,self.type do
|
||||
lifetimes[i] = particularLifetimes:random(maxLifetime)
|
||||
end
|
||||
end
|
||||
self.lifetime = lifetimes[self.type]
|
||||
|
||||
return self
|
||||
end
|
||||
|
||||
local particles = {}
|
||||
|
||||
local generationTiming = lm.newRandomGenerator(os.time()+100)
|
||||
local nextGeneration = generationTiming:random()
|
||||
local generationTimingCurrentTime = 0
|
||||
|
||||
local maxTypeIncrementTimer = 0
|
||||
local maxTypeIncrementInterval = 100
|
||||
function love.update(dt)
|
||||
currentMaxPosition = currentMaxPosition + dt
|
||||
|
||||
maxTypeIncrementTimer = maxTypeIncrementTimer + dt
|
||||
while maxTypeIncrementTimer >= maxTypeIncrementInterval do
|
||||
maxTypeIncrementTimer = maxTypeIncrementTimer - maxTypeIncrementInterval
|
||||
currentMaxType = currentMaxType + 1
|
||||
end
|
||||
|
||||
generationTimingCurrentTime = generationTimingCurrentTime + dt
|
||||
while generationTimingCurrentTime >= nextGeneration do
|
||||
generationTimingCurrentTime = generationTimingCurrentTime - nextGeneration
|
||||
nextGeneration = generationTiming:random()
|
||||
table.insert(particles, particular())
|
||||
end
|
||||
|
||||
local deletes = {}
|
||||
--for i=1
|
||||
for k, p in pairs(particles) do
|
||||
p.x = p.vx * dt
|
||||
p.y = p.vy * dt
|
||||
p.lifetime = p.lifetime - dt
|
||||
if p.lifetime <= 0 then
|
||||
table.insert(deletes, k)
|
||||
end
|
||||
end
|
||||
for _, p in ipairs(deletes) do
|
||||
particles[p] = nil
|
||||
end
|
||||
universe:update(dt)
|
||||
end
|
||||
|
||||
--lg.setColor(255, 255, 255, 255)
|
||||
function love.draw()
|
||||
--for i=1,#particles do
|
||||
-- lg.point(particles[i].x, particles[i].y)
|
||||
--end
|
||||
for _, p in pairs(particles) do
|
||||
--lg.point(p.x, p.y)
|
||||
lg.circle("fill", p.x, p.y, 1)
|
||||
end
|
||||
|
||||
lg.circle("line", lg.getWidth()/2, lg.getHeight()/2, currentMaxPosition)
|
||||
universe:draw()
|
||||
end
|
||||
|
||||
function love.keypressed(key)
|
||||
|
Reference in New Issue
Block a user