-
Notifications
You must be signed in to change notification settings - Fork 163
/
Copy pathEngine.js
77 lines (52 loc) · 1.84 KB
/
Engine.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
/**************************************************
** ENGINE CLASS
**************************************************/
var Engine = function(juego, mobile) {
juego.counter_ = 0;
this.dt = 0;
this.now_,
this.last = juego.timestamp_();
this.then_ = juego.timestamp_();
this.frame_ = function(){
//debug start
//w.stats.begin();
mobile.controla_if_mobile_();
if(w.innerWidth < 820){
juego.ancho_total_ = w.innerWidth * 2,
juego.alto_total_ = w.innerHeight * 2;
}
else{
juego.ancho_total_ = w.innerWidth,
juego.alto_total_ = w.innerHeight;
}
juego.canvas_.width = juego.ancho_total_;
juego.canvas_.height = juego.alto_total_;
if(!juego.empezado_){
juego.muestra_menu_(juego.ctx_, juego.modo_seleccionado_);
requestAnimationFrame(this.frame_.bind(this));
return;
}
if(juego.pausa_){
requestAnimationFrame(this.frame_.bind(this));
return;
}
this.now_ = juego.timestamp_();
this.dt = this.dt + Math.min(1, (this.now_ - this.last) / 1000);
while(this.dt > juego.step_) {
this.dt = this.dt - juego.step_;
var elapsed = this.now_ - this.then_;
if (elapsed > juego.fpsInterval_) {
juego.update_(juego.step_);
}
this.then_ = this.now_ - (elapsed % juego.fpsInterval_);
this.last = this.now_;
}
juego.pre_shake_();
juego.render(juego.ctx_, juego.counter_, this.dt);
juego.post_shake_();
juego.counter_++;
//debug start
//w.stats.end();
requestAnimationFrame(this.frame_.bind(this), canvas);
}
}