/
score_system.js
69 lines (59 loc) · 1.91 KB
/
score_system.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
var scoreSystem = function(ecs, eventManager) {
var my = {};
var add = function(score) {
my.score += score;
update();
};
var completedGame = function() {
var level = +eventManager.vent.trigger("SYSTEM:LEVEL:GET_CURRENT_NUMBER").number;
my.score = level * 1000000 - my.score;
update();
};
var reset = function() {
my.score = 0;
update();
};
var show = function() {
my.isScoreVisible = true;
update();
}
var hide = function() {
my.isScoreVisible = false;
update();
}
var getScore = function() {
this.score = my.score;
}
var saveScore = function() {
if (typeof my.score != "undefined")
localStorage.setItem('score', JSON.stringify(my.score));
}
var loadScore = function() {
var score = localStorage.getItem('score');
if (score && score !== "undefined")
my.score = JSON.parse(score);
else
my.score = 0;
update();
}
var update = function() {
ecs.runSystem(
[componentTypeEnum.SCORE],
function(entity) {
entity.components[componentTypeEnum.SCORE].score = my.score || 0;
entity.components[componentTypeEnum.SCORE].isVisible = my.isScoreVisible;
});
saveScore();
eventManager.vent.trigger("SYSTEM:BOUNDS:UPDATE");
}
var initialiseEvents = function() {
eventManager.vent.on("SYSTEM:SCORE:ADD", add);
eventManager.vent.on("SYSTEM:LOGIC:GRID_COMPLETED", completedGame);
eventManager.vent.on("SYSTEM:SCORE:RESET", reset);
eventManager.vent.on("SYSTEM:SCORE:SHOW", show);
eventManager.vent.on("SYSTEM:SCORE:HIDE", hide);
eventManager.vent.on("SYSTEM:SCORE:LOAD", loadScore);
eventManager.vent.on("SYSTEM:SCORE:GET", getScore);
};
initialiseEvents();
};