-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathmap.js
More file actions
123 lines (115 loc) · 2.58 KB
/
map.js
File metadata and controls
123 lines (115 loc) · 2.58 KB
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
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
var Map = function (game) {
var m = this;
m.g = game;
m.d = m.data;
m.rooms = {};
m.r = 'sector01_room01';
m.init();
};
Map.prototype.data = {
rooms: [
'sector01_room01',
'sector01_room02',
'sector01_room03',
'sector01_room04',
'sector01_room05',
'sector01_room06',
'sector01_room07',
'sector01_room08',
'debug'
],
tilesets: [
'collision',
'debug',
'yellow',
'corridor1',
'srx'
],
backgrounds: [
'debug_bg',
'brown',
'pipecorridor',
'sr388cave',
'greenpassage'
],
animatedBackgrounds: {
browntank: {
frames: [0,1,2,3],
fps: 4,
width: 512,
height: 256
}
},
sprites: [
'door',
]
};
Map.prototype.init = function () {
var m = this;
for (var i = m.d.rooms.length - 1; i >= 0; i--) {
m.rooms[m.d.rooms[i]] = new Room(m.g, m.d.rooms[i]);
if (m.d.rooms[i] == m.r) {
m.r = m.rooms[m.d.rooms[i]];
}
}
return m;
};
Map.prototype.eachRoom = function (action) {
var m = this;
for (room in m.rooms) {
if (m.rooms.hasOwnProperty(room)) {
m.rooms[room][action]();
}
}
return m;
};
Map.prototype.loadAssets = function (type) {
var m = this,
asset;
if (type == 'animatedBackgrounds') {
for (asset in m.d[type]) {
if (m.d[type].hasOwnProperty(asset)) {
m.g.load.spritesheet(
asset,
'assets/' + type + '/' + asset +'.png',
m.d[type][asset].width,
m.d[type][asset].height
);
}
}
} else {
for (var i = m.d[type].length - 1; i >= 0; i--) {
m.g.load.image(
m.d[type][i],
'assets/' + type + '/' + m.d[type][i] +'.png'
);
}
}
return m;
};
Map.prototype.preload = function () {
var m = this;
m.eachRoom('preload')
.loadAssets('tilesets')
.loadAssets('backgrounds')
.loadAssets('animatedBackgrounds')
.loadAssets('sprites');
return m;
};
Map.prototype.create = function (door) {
var m = this;
m.r.create(door);
return m;
};
Map.prototype.update = function () {
var m = this;
m.r.update();
return m;
};
Map.prototype.useDoorTo = function (room, door) {
var m = this;
m.r.destroy();
m.r = m.rooms[room];
m.create(door);
return m;
};