69 lines
1.4 KiB
Lua
69 lines
1.4 KiB
Lua
|
require "field"
|
||
|
|
||
|
game={}
|
||
|
game.field=field(40,20)
|
||
|
game.player=player
|
||
|
game.ticker=ticker(0.125)
|
||
|
game.currentTrack={}
|
||
|
game.trackRunning=false
|
||
|
game.useTrack=true
|
||
|
game.events={} -- events are tables that contain recurring (bool), i (period or counter), and func
|
||
|
|
||
|
|
||
|
|
||
|
function game.update(dt)
|
||
|
if game.useTrack then
|
||
|
if not game.trackRunning and c.music:tell()>=c.info.startTime then
|
||
|
game.ticker:calibrate(love.timer.getTime()-(game.currentTrack.music:tell()-game.currentTrack.info.startTime))
|
||
|
game.trackRunning=true
|
||
|
end -- if calibration
|
||
|
end -- if usetrack
|
||
|
local ticked=game.ticker:update(dt)
|
||
|
player.update(dt)
|
||
|
game.field:update(dt)
|
||
|
end -- update
|
||
|
|
||
|
function game.loadTrack(t)
|
||
|
game.currentTrack=t
|
||
|
game.ticker.tickTime=t.timeStep
|
||
|
t.music:setVolume(t.info.volumeBase)
|
||
|
game.trackRunning=false
|
||
|
end -- loadtrack
|
||
|
|
||
|
function game.init()
|
||
|
table.insert(game.field.contents, enemyBasic(5,20))
|
||
|
function game.ticker:tick()
|
||
|
for k,event in pairs(game.events) do
|
||
|
local adjustedTicks=game.ticker.ticks-1+(event.shift or 0)
|
||
|
if event.recurring then
|
||
|
if adjustedTicks%event.i==0 then
|
||
|
event.func()
|
||
|
end -- if fire recurring event
|
||
|
else
|
||
|
event.i=event.i-1
|
||
|
if event.i==0 then
|
||
|
event.func()
|
||
|
event=nil
|
||
|
end -- if fire one-shot event
|
||
|
end -- if recurring
|
||
|
end -- for events
|
||
|
end
|
||
|
local click={
|
||
|
i=2,
|
||
|
recurring=true,
|
||
|
func=function()
|
||
|
aud.meh:stop()
|
||
|
aud.meh:play()
|
||
|
end
|
||
|
}
|
||
|
local beep={
|
||
|
i=4,
|
||
|
recurring=true,
|
||
|
func=function()
|
||
|
aud.beep:stop()
|
||
|
aud.beep:play()
|
||
|
end
|
||
|
}
|
||
|
-- game.events.click=click
|
||
|
-- game.events.beep=beep
|
||
|
end
|