-
Notifications
You must be signed in to change notification settings - Fork 0
/
idle-stars.js
100 lines (82 loc) · 2.59 KB
/
idle-stars.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
89
90
91
92
93
94
95
96
97
98
99
100
/**
* Tweak Name: Idle Stars
* Description: Just tests this tweak thing.
* Version: 0.0.1
* Param0: name=idleStarImage & type=image
* Param1: name=idleStarRadius & type=number & min=0 & max=100
* Param2: name=idleStarAnimationTime & type=number & min=100 & max=2000
* Param3: name=idleStarMinInterval & type=number & min=500 & max=10000
* Param4: name=idleStarMaxInterval & type=number & min=500 & max=10000
*/
function setSymbolStarTimeout(symbolSprite) {
var delay=game.options.idleStarMinInterval+
Math.random()*(game.options.idleStarMaxInterval-game.options.idleStarMinInterval);
clearSymbolStarTimeout(symbolSprite);
symbolSprite.starTimeoutId=setTimeout(
onSymbolStarTimeout.bind(null,symbolSprite),
delay
);
}
function clearSymbolStarTimeout(symbolSprite) {
if (symbolSprite.starTimeoutId)
clearTimeout(symbolSprite.starTimeoutId)
symbolSprite.starTimeoutId=null;
}
function onSymbolStarTimeout(symbolSprite) {
symbolSprite.idleStar.visible=true;
var v=Math.random()*2*Math.PI;
var r=Math.random()*game.options.idleStarRadius;
symbolSprite.idleStar.x=r*Math.cos(v);
symbolSprite.idleStar.y=r*Math.sin(v);
symbolSprite.idleStar.scale.x=0;
symbolSprite.idleStar.scale.y=0;
var t = new TWEEN.Tween(symbolSprite.idleStar.scale);
t.to({
x: 1,
y: 1
}, game.options.idleStarAnimationTime/2);
t.easing(TWEEN.Easing.Sinusoidal.Out);
t.start();
setTimeout(function() {
var t2 = new TWEEN.Tween(symbolSprite.idleStar.scale);
t2.to({
x: 0,
y: 0
}, game.options.idleStarAnimationTime/2);
t2.easing(TWEEN.Easing.Sinusoidal.In);
t2.start();
},game.options.idleStarAnimationTime/2);
setSymbolStarTimeout(symbolSprite);
}
game.on("init",function() {
console.log("the game is initialized...");
console.log("image: "+game.options.idleStarImage);
});
game.on("symbolCreated",function(ev) {
var outer=new PIXI.Container();
if (game.options.idleStarImage) {
var inner=PIXI.Sprite.fromFrame(game.options.idleStarImage);
inner.x=-inner.width/2;
inner.y=-inner.height/2;
outer.addChild(inner);
}
ev.symbolSprite.idleStar=outer;
ev.symbolSprite.addChild(ev.symbolSprite.idleStar);
});
game.on("symbolRemoved",function(ev) {
clearSymbolStarTimeout(ev.symbolSprite);
var g=ev.symbolSprite.idleStar;
ev.symbolSprite.removeChild(g);
});
game.on("symbolStateChange",function(ev) {
switch (ev.state) {
case "idle":
setSymbolStarTimeout(ev.symbolSprite);
ev.symbolSprite.idleStar.visible=false;
break;
default:
clearSymbolStarTimeout(ev.symbolSprite);
ev.symbolSprite.idleStar.visible=false;
break;
}
});