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-03.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 Emitter = require( 'entities/emitter' );
10
var Trigger = require( 'entities/trigger' );
11
var TriggerWire = require( 'effects/trigger-wire' );
12
13
var Material = require( 'config/material' );
14
15
var DEG_TO_RAD = Utils.DEG_TO_RAD;
16
17
var level03Data = require( 'text!../../json/level-03.json' );
18
var level04 = require( 'levels/level-04' );
19
20
return function( game ) {
21
game.clear();
22
23
game.player.x = 0;
24
game.player.y = -40;
25
26
game.background.hueSpread = 20;
27
28
LevelUtils.playerMaterialOn( game );
29
LevelUtils.addTrail( game );
30
LevelUtils.addBackground( game, 75, 44, 12, 1 );
31
LevelUtils.loadData( game, level03Data );
32
33
game.camera.setHeight( 42, {
34
maintainAspectRatio: true
35
});
36
37
// Trash.
38
var trashM = LevelUtils.normalTrash( Material.MATTER );
39
var trashAM = LevelUtils.normalTrash( Material.ANTIMATTER );
40
41
// Emitters.
42
var em0 = new Emitter( 20, -20 );
43
em0.spawnArea = LevelUtils.normalSpawnArea(4);
44
em0.rate = 0.2;
45
em0.lifeTime = 2;
46
em0.speed = 200;
47
em0.angle = -120 * DEG_TO_RAD;
48
49
em0.particle = trashM;
50
em0.properties = LevelUtils.normalTrashProperties( trashM, Material.MATTER );
51
// Reverse angular velocity so its easier to push.
52
em0.properties.body.angularVelocity = -em0.properties.body.angularVelocity;
53
54
em0.start();
55
game.add( em0 );
56
57
var em1 = new Emitter( -20, -20 );
58
em1.spawnArea = LevelUtils.normalSpawnArea(4);
59
em1.rate = 0.2;
60
em1.lifeTime = 2;
61
em1.speed = 200;
62
em1.angle = -60 * DEG_TO_RAD;
63
64
em1.particle = trashAM;
65
em1.properties = LevelUtils.normalTrashProperties( trashAM, Material.ANTIMATTER );
66
67
em1.start();
68
game.add( em1 );
69
70
// Triggers.
71
var trig0 = new Trigger( 20, 20, 3, Material.ANTIMATTER );
72
game.add( trig0 );
73
74
var trig1 = new Trigger( -20, 20, 3 , Material.MATTER );
75
game.add( trig1 );
76
77
// Door.
78
var door = new Door( 0, 40, 3, {
79
callback: function() {
80
level04( game );
81
}
82
});
83
door.triggers.push( trig0 );
84
door.triggers.push( trig1 );
85
game.add( door );
86
87
// Trigger wires.
88
var wire0 = new TriggerWire( trig0, door, {
89
vertices: [
90
0, 0.5,
91
0.5, 0.5,
92
0.5, 1
93
],
94
sourceDirection: TriggerWire.Direction.BOTTOM,
95
targetDirection: TriggerWire.Direction.RIGHT
96
});
97
game.add( wire0 );
98
99
var wire1 = new TriggerWire( trig1, door, {
100
vertices: wire0.vertices.slice(),
101
sourceDirection: TriggerWire.Direction.BOTTOM,
102
targetDirection: TriggerWire.Direction.LEFT
103
});
104
game.add( wire1 );
105
};
106
});
107
108