-
Notifications
You must be signed in to change notification settings - Fork 0
/
displayer.js
74 lines (58 loc) · 2.05 KB
/
displayer.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
/**
* Class Displayer
* Displays the game.
*
* @author Adrian Gaudebert - adrian@gaudebert.fr
* @constructor
*/
tetwis.Displayer = function() {
this.mapElt = null;
this.contentElt = $('#content');
this.delay = 100; // TODO move to the config file (see Game)
this.intervalId = null;
}
tetwis.Displayer.prototype = {
setMap: function(map) {
this.map = map;
this.cellSize = this.map.cellSize;
this.cellSizeCSS = this.cellSize - 1;
},
start: function() {
this.mapElt = $('#map');
this.intervalId = window.setInterval(this.display.bind(this), this.delay);
return this;
},
stop: function() {
window.clearInterval(this.intervalId);
return this;
},
display: function() {
// Reset current map
this.mapElt.empty();
// Displaying map
for (var i = 0, size = this.map.cells.length; i < size; i++) {
var cell = this.map.cells[i];
this.mapElt.append('<div class="cell" style="top: '+ cell.y * this.cellSize +'px; left: '+ cell.x * this.cellSize +'px; background-color: '+ cell.color +'; width: '+this.cellSizeCSS+'px; height: '+this.cellSizeCSS+'px;"></div>');
}
for (var k = 0, nb = this.map.bricks.length; k < nb; k++) {
var currentBrick = this.map.bricks[k];
for (var i = 0, size = currentBrick.cells.length; i < size; i++) {
var cell = currentBrick.cells[i];
this.mapElt.append('<div class="cell" style="top: '+ (currentBrick.y + cell.y) * this.cellSize +'px; left: '+ (currentBrick.x + cell.x) * this.cellSize +'px; background-color: '+ cell.color +'; width: '+this.cellSizeCSS+'px; height: '+this.cellSizeCSS+'px;"></div>');
}
}
return this;
},
displayTemplate: function(templateURI, data, callback) {
this.contentElt.empty();
$.get(templateURI, function(tpl) {
$.tmpl(tpl, data).appendTo(this.contentElt);
if (callback != null) {
callback();
}
}.bind(this));
},
setState: function(state) {
$('#loading-state').text(state);
},
};