-
Notifications
You must be signed in to change notification settings - Fork 0
/
level-generator.js
104 lines (89 loc) · 4.34 KB
/
level-generator.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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
(function() {
if (typeof Asteroids === "undefined"){
window.Asteroids = {};
}
var LevelGenerator = Asteroids.LevelGenerator = function (options) {
this.game = options.game
}
LevelGenerator.LEVEL_OBJECTS = {
initial: [
{objectType: "asteroid", pos: [870, 840], radius: 20, vel: [4, 0], image: "moon"},
{objectType: "planet", pos: [850,465] , radius:154, planetType: 'earth'}
],
level1: [
{objectType: "planet", pos: [850,755], radius:92, planetType: 'red'},
{objectType: "planet", pos: [850,135], radius:92, planetType: 'red'},
{objectType: "planet", pos: [1040,285], radius:92, planetType: 'red'},
{objectType: "planet", pos: [1040,600], radius:92, planetType: 'red'},
{objectType: "planet", pos: [1330,655], radius:92, planetType: 'green'},
{objectType: "zone", topLeft: [0, 0], bottomRight: [300, 900], zoneType: 'starting'}
],
level2: [
{objectType: "planet", pos: [860,465] , radius:156, planetType: 'red'},
{objectType: "planet", pos: [1420,465] , radius:118, planetType: 'green'},
{objectType: "zone", topLeft: [0, 0], bottomRight: [300, 900], zoneType: 'starting'}
],
level3: [
{objectType: "planet", pos: [150,835] , radius:84, planetType: 'purple'},
{objectType: "planet", pos: [150,595] , radius:84, planetType: 'purple'},
{objectType: "planet", pos: [150,355] , radius:84, planetType: 'purple'},
{objectType: "planet", pos: [150,115] , radius:84, planetType: 'purple'},
{objectType: "planet", pos: [710,475] , radius:84, planetType: 'red'},
{objectType: "planet", pos: [920,475] , radius:84, planetType: 'red'},
{objectType: "planet", pos: [1130,475] , radius:84, planetType: 'red'},
{objectType: "planet", pos: [1340,475] , radius:84, planetType: 'red'},
{objectType: "planet", pos: [1550,475] , radius:84, planetType: 'red'},
{objectType: "planet", pos: [1550,265] , radius:84, planetType: 'green'},
{objectType: "zone", topLeft: [1300, 560], bottomRight: [1700, 900], zoneType: 'starting'}
],
level4: [
{objectType: "planet", pos: [850,135] , radius:106, planetType: 'purple', antigravity: true},
{objectType: "planet", pos: [850,775] , radius:106, planetType: 'purple', antigravity: true},
{objectType: "planet", pos: [370,455] , radius:106, planetType: 'red'},
{objectType: "planet", pos: [1330,455] , radius:106, planetType: 'green'},
{objectType: "asteroid", pos: [850, 295], radius:30, vel: [0, 0], image: "moon"},
{objectType: "zone", topLeft: [0, 0], bottomRight: [300, 900], zoneType: 'starting'}
],
level5: [
{objectType: "planet", pos: [290,735] , radius:60, planetType: 'red'},
{objectType: "planet", pos: [560,735] , radius:60, planetType: 'red'},
{objectType: "planet", pos: [830,735] , radius:60, planetType: 'red'},
{objectType: "planet", pos: [1100,735] , radius:60, planetType: 'red'},
{objectType: "planet", pos: [1280,555] , radius:60, planetType: 'red'},
{objectType: "planet", pos: [1280,285] , radius:60, planetType: 'red'},
{objectType: "planet", pos: [1460,105] , radius:60, planetType: 'green'},
{objectType: "planet", pos: [20,735] , radius:60, planetType: 'red'},
{objectType: "zone", topLeft: [0, 800], bottomRight: [300, 900], zoneType: 'starting'}
]
};
LevelGenerator.NEXT_LEVELS = {
level1: "level2",
level2: "level3",
level3: "level4",
level4: "level5",
level5: "end"
};
LevelGenerator.prototype.generateLevel = function (levelName) {
this.currentLevel = levelName;
if (levelName === "end") { this.endGame(); return; }
LevelGenerator.LEVEL_OBJECTS[levelName].forEach(function (object) {
if (object.objectType === "asteroid") {
this.game.objectFromOptions(object);
} else if (object.objectType === "planet") {
this.game.planetFromOptions(object);
} else if (object.objectType === "zone") {
this.game.zoneFromOptions(object);
}
}.bind(this));
};
LevelGenerator.prototype.nextLevel = function () {
this.generateLevel(LevelGenerator.NEXT_LEVELS[this.currentLevel])
};
LevelGenerator.prototype.endGame = function () {
$('body').append( $('#win-modal').html() );
$(".m-background").click( function () {
$('.m-background').remove();
$('.m-content').remove();
});
};
})();