initial commit
This commit is contained in:
+97
@@ -0,0 +1,97 @@
|
||||
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()
|
||||
})()
|
||||
Reference in New Issue
Block a user