forked from AtomicGameEngine/AtomicGameEngine
/
CapitalShip.js
88 lines (60 loc) · 1.87 KB
/
CapitalShip.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
'atomic component';
exports.component = function(self) {
var game = Atomic.game;
var node = self.node;
var scene = SpaceGame.myscene;
self.allowShoot = true;
self.shootDelta = 0;
self.health = 10;
self.onHit = function(pos) {
var expNode = scene.createChild("Explosion");
var exp = expNode.createJSComponent("Components/Explosion.js", {
spawnPosition: node.worldPosition2D
});
exp.node.scale2D = [2.0, 2.0];
self.health--;
if (!self.health) {
die();
SpaceGame.win();
}
}
function die() {
SpaceGame.capitalShipDestroyed();
for (var i = 0; i < 16; i++) {
var pos = node.position2D;
pos[0] += SpaceGame.random(-2, 2);
pos[1] += SpaceGame.random(-2, 2);
var expNode = scene.createChild("Explosion");
var exp = expNode.createJSComponent("Components/Explosion.js", {
spawnPosition: node.worldPosition2D
});
var randomSize = SpaceGame.random(4, 8);
exp.node.scale2D = [randomSize, randomSize];
}
}
// using start to initialize the script component
self.start = function() {
// install AI
var ai = node.createJSComponent("Components/AI.js");
ai.canMove = true;
var spaceSheet = game.getSpriteSheet("Sprites/spacegame_sheet.xml");
// add a sprite component to our node
var sprite2D = self.sprite2D = node.createComponent("StaticSprite2D");
sprite2D.blendMode = Atomic.BLEND_ALPHA;
sprite2D.sprite = spaceSheet.getSprite("spaceship_locust");
sprite2D.alpha = 0.0;
node.position2D = [-4, SpaceGame.halfHeight - 1];
node.roll(180);
}
// update function called per frame with delta time
self.update = function(timeStep) {
// fade in
var alpha = self.sprite2D.alpha;
if (alpha < 1) {
alpha += timeStep * 1.5;
if (alpha > 1)
alpha = 1;
self.sprite2D.alpha = alpha;
}
}
}