Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
FogNetwork
GitHub Repository: FogNetwork/Tsunami
Path: blob/main/public/games/files/garbage-collector/js/levels/level-01.js
1036 views
1
/*globals define*/
2
define(function( require ) {
3
'use strict';
4
5
var Utils = require( 'utils' );
6
var LevelUtils = require( 'levels/utils-level' );
7
8
var Door = require( 'entities/door' );
9
var Laser = require( 'entities/laser' );
10
var Emitter = require( 'entities/emitter' );
11
var TractorBeam = require( 'entities/tractor-beam' );
12
var Trigger = require( 'entities/trigger' );
13
var TriggerWire = require( 'effects/trigger-wire' );
14
15
var Material = require( 'config/material' );
16
17
var DEG_TO_RAD = Utils.DEG_TO_RAD;
18
19
var level01Data = require( 'text!../../json/level-01.json' );
20
var level02 = require( 'levels/level-02' );
21
22
return function( game ) {
23
game.clear();
24
25
game.player.x = -63;
26
game.player.y = 12;
27
28
game.font = 'bold 36pt "Helvetica Neue", Helvetica, Arial, sans-serif';
29
var controlsText = 'WASD ←↑→↓ touch';
30
game.text = controlsText;
31
32
var checkMovement = setInterval(function() {
33
if ( ( game.player.vx || game.player.vy ) ) {
34
game.text = '';
35
clearInterval( checkMovement );
36
}
37
38
if ( game.text !== controlsText ) {
39
clearInterval( checkMovement );
40
}
41
}, 200 );
42
43
LevelUtils.playerMaterialOff( game );
44
LevelUtils.addTrail( game );
45
LevelUtils.addBackground( game, 128, 96, 64, 1 );
46
LevelUtils.loadData( game, level01Data );
47
48
game.camera.setHeight( 32, {
49
maintainAspectRatio: true
50
});
51
52
var tractorBeam = new TractorBeam( -55, 14, 40, 14, {
53
particleCount: 15,
54
particleHeight: 8
55
});
56
tractorBeam.angle = -25 * DEG_TO_RAD;
57
tractorBeam.force = 3000;
58
game.add( tractorBeam );
59
60
// Initial laser.
61
var laser0 = new Laser( -17, 46, Material.ANTIMATTER );
62
laser0.angle = 60 * DEG_TO_RAD;
63
game.add( laser0 );
64
65
// Laser web.
66
var laser1 = new Laser( 19, 47, Material.MATTER );
67
laser1.angle = 120 * DEG_TO_RAD;
68
game.add( laser1 );
69
70
var laser2 = new Laser( 35, 33, Material.ANTIMATTER );
71
laser2.angle = 160 * DEG_TO_RAD;
72
game.add( laser2 );
73
74
var laser3 = new Laser( 14, 16, Material.ANTIMATTER );
75
laser3.angle = -60 * DEG_TO_RAD;
76
game.add( laser3 );
77
78
var laser4 = new Laser( 22, 10, Material.MATTER );
79
laser4.angle = -50 * DEG_TO_RAD;
80
game.add( laser4 );
81
82
// Trash.
83
var trashAM = LevelUtils.normalTrash( Material.ANTIMATTER );
84
85
// Emitters.
86
var em0 = new Emitter( 35, -15 );
87
em0.spawnArea = LevelUtils.normalSpawnArea(4);
88
em0.rate = 0.4;
89
em0.lifeTime = 3;
90
em0.speed = 100;
91
em0.angle = -110 * DEG_TO_RAD;
92
93
em0.particle = trashAM;
94
em0.properties = LevelUtils.normalTrashProperties( trashAM, Material.ANTIMATTER );
95
96
em0.start( 500 );
97
game.add( em0 );
98
99
// Lasers to destroy upflow from emitter.
100
var laser5 = new Laser( 48, -15, Material.ANTIMATTER );
101
laser5.angle = 160 * DEG_TO_RAD;
102
game.add( laser5 );
103
104
var laser6 = new Laser( 28, -26, Material.ANTIMATTER );
105
laser6.angle = 5 * DEG_TO_RAD;
106
game.add( laser6 );
107
108
// End emitter.
109
var em1 = new Emitter( -2, -42 );
110
em1.spawnArea = LevelUtils.normalSpawnArea(4);
111
em1.rate = 0.2;
112
em1.lifeTime = 2.5;
113
em1.speed = 20;
114
em1.angle = -80 * DEG_TO_RAD;
115
116
em1.particle = trashAM;
117
em1.properties = LevelUtils.normalTrashProperties( trashAM, Material.ANTIMATTER );
118
em1.properties.fixture.density = 1;
119
120
em1.start( 1500 );
121
game.add( em1 );
122
123
// Tractor beam leading to trigger.
124
var tB1 = new TractorBeam( 35, -34, 20, 5 );
125
tB1.angle = -176 * DEG_TO_RAD;
126
tB1.force = 3000;
127
game.add( tB1 );
128
129
// Trigger.
130
var trig0 = new Trigger( -15, -29, 3, Material.ANTIMATTER, {
131
duration: 0.5
132
});
133
game.add( trig0 );
134
135
// Door.
136
var door = new Door( -3, -19, 3, {
137
duration: 1.2,
138
callback: function() {
139
level02( game );
140
}
141
});
142
door.triggers.push( trig0 );
143
game.add( door );
144
145
// Trigger Wire.
146
var triggerWire = new TriggerWire( trig0, door, {
147
vertices: [
148
0, 0.5,
149
1, 0.5
150
],
151
sourceDirection: TriggerWire.Direction.BOTTOM,
152
targetDirection: TriggerWire.Direction.TOP
153
});
154
game.add( triggerWire );
155
};
156
});
157
158