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-04.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 level04Data = require( 'text!../../json/level-04.json' );
20
var levelEnd = require( 'levels/level-end' );
21
22
return function( game ) {
23
game.clear();
24
25
game.player.x = -54;
26
game.player.y = -35;
27
28
game.background.hueSpread = 10;
29
game.background.lightnessSpread = 15;
30
31
LevelUtils.playerMaterialOn( game );
32
LevelUtils.addTrail( game );
33
LevelUtils.addBackground( game, 75, 34, 12, 1 );
34
LevelUtils.loadData( game, level04Data );
35
36
game.camera.setHeight( 33, {
37
maintainAspectRatio: true
38
});
39
40
// Lasers.
41
var laser0 = new Laser( -57, 7, Material.ANTIMATTER );
42
laser0.angle = -60 * DEG_TO_RAD;
43
game.add( laser0 );
44
45
var laser1 = new Laser( -4, -18, Material.MATTER );
46
game.add( laser1 );
47
48
// Tractor beam.
49
var tractorBeam = new TractorBeam( -55, 22, 20, 5 );
50
tractorBeam.angle = -80 * DEG_TO_RAD;
51
tractorBeam.force = 2000;
52
game.add( tractorBeam );
53
54
// Trash.
55
var trashM = LevelUtils.normalTrash( Material.MATTER );
56
var trashAM = LevelUtils.normalTrash( Material.ANTIMATTER );
57
58
// Emitters.
59
var em0 = new Emitter( -37, -9 );
60
em0.spawnArea = LevelUtils.normalSpawnArea(4);
61
em0.rate = 0.8;
62
em0.lifeTime = 9;
63
em0.speed = 200;
64
em0.angle = -90 * DEG_TO_RAD;
65
66
em0.particle = trashAM;
67
em0.properties = LevelUtils.normalTrashProperties( trashAM, Material.ANTIMATTER );
68
em0.properties.fixture.restitution = 0.5;
69
70
em0.start();
71
game.add( em0 );
72
73
var em1 = new Emitter( 40, -36 );
74
em1.spawnArea = LevelUtils.normalSpawnArea(4);
75
em1.rate = 0.6;
76
em1.lifeTime = 2;
77
em1.speed = 200;
78
em1.angle = -90 * DEG_TO_RAD;
79
80
em1.particle = trashM;
81
em1.properties = LevelUtils.normalTrashProperties( trashM, Material.MATTER );
82
83
em1.start();
84
game.add( em1 );
85
86
87
// Triggers.
88
var trig0 = new Trigger( -20, 35, 3, Material.ANTIMATTER );
89
game.add( trig0 );
90
91
92
var trig1 = new Trigger( 43, -8, 3, Material.MATTER );
93
game.add( trig1 );
94
95
// Door.
96
var door = new Door( 57, 25, 3, {
97
callback: function() {
98
levelEnd( game );
99
}
100
});
101
door.triggers.push( trig0 );
102
door.triggers.push( trig1 );
103
game.add( door );
104
105
// Trigger wires.
106
var wire0 = new TriggerWire( trig0, door, {
107
vertices: [
108
0.5, 0,
109
0.5, 0.5,
110
0.5, 1
111
],
112
sourceDirection: TriggerWire.Direction.RIGHT,
113
targetDirection: TriggerWire.Direction.LEFT
114
});
115
game.add( wire0 );
116
117
var wire1 = new TriggerWire( trig1, door, {
118
vertices: [
119
0, 0.5,
120
0.5, 0.5,
121
0.5, 1
122
],
123
sourceDirection: TriggerWire.Direction.BOTTOM,
124
targetDirection: TriggerWire.Direction.TOP
125
});
126
game.add( wire1 );
127
};
128
});
129
130