98 lines
2.3 KiB
JavaScript
98 lines
2.3 KiB
JavaScript
function main() {
|
|
//-------------------------------------------------------------------------
|
|
// 6. THE GAME LOOP
|
|
//-------------------------------------------------------------------------
|
|
|
|
var counter = 0,
|
|
dt = 0,
|
|
now,
|
|
last = timestamp(),
|
|
fpsmeter = new FPSMeter({
|
|
decimals: 0,
|
|
graph: true,
|
|
theme: 'dark',
|
|
left: '5px',
|
|
})
|
|
|
|
function frame() {
|
|
fpsmeter.tickStart()
|
|
now = timestamp()
|
|
dt = dt + Math.min(1, (now - last) / 1000)
|
|
while (dt > step) {
|
|
dt = dt - step
|
|
|
|
// * Update wird pausiert bei Toggle 'p'.
|
|
if (!paused) {
|
|
update(step)
|
|
}
|
|
}
|
|
|
|
render(ctx, counter, dt, currentLevel)
|
|
|
|
last = now
|
|
counter++
|
|
fpsmeter.tick()
|
|
requestAnimationFrame(frame, canvas)
|
|
}
|
|
|
|
document.addEventListener(
|
|
'keydown',
|
|
function (ev) {
|
|
return onkey(ev, ev.key, true)
|
|
},
|
|
false
|
|
)
|
|
document.addEventListener(
|
|
'keyup',
|
|
function (ev) {
|
|
return onkey(ev, ev.key, false)
|
|
},
|
|
false
|
|
)
|
|
|
|
// * EventListener für Pause-Taste
|
|
window.addEventListener('keydown', function (e) {
|
|
var key = e.key
|
|
if (key === 'p') {
|
|
// p key
|
|
togglePause()
|
|
}
|
|
})
|
|
// * EventListener für DevInfos Toggle
|
|
window.addEventListener('keydown', function (e) {
|
|
var key = e.key
|
|
if (key === 'o') {
|
|
// p key
|
|
toggleDevInfos()
|
|
}
|
|
})
|
|
|
|
// ! Vielleicht kann ich statt des setup() an dieser Stelle auch eine gameStart() Funktion erstellen, die beim erstmaligen Start alles erledigt. Später wird dann ja immer die _initLevel() aufgerufen.
|
|
setup(currentLevel.levelData) // ! Was brauche ich hier, damit das variabel alle Level laden kann?
|
|
|
|
console.log('log monsters ', monsters)
|
|
|
|
frame()
|
|
}
|
|
|
|
// * window onload function
|
|
;(function () {
|
|
//-------------------------------------------------------------------------
|
|
// POLYFILLS
|
|
//-------------------------------------------------------------------------
|
|
|
|
if (!window.requestAnimationFrame) {
|
|
// http://paulirish.com/2011/requestanimationframe-for-smart-animating/
|
|
window.requestAnimationFrame =
|
|
window.webkitRequestAnimationFrame ||
|
|
window.mozRequestAnimationFrame ||
|
|
window.oRequestAnimationFrame ||
|
|
window.msRequestAnimationFrame ||
|
|
function (callback, element) {
|
|
window.setTimeout(callback, 1000 / 60)
|
|
}
|
|
}
|
|
|
|
main()
|
|
})()
|