forked from Sheepolution/tetrong
-
Notifications
You must be signed in to change notification settings - Fork 0
/
ball.js
127 lines (103 loc) · 2.53 KB
/
ball.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
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
Ball = baa.entity.extend("Ball");
Ball.init = function () {
Ball.super.init(this);
this.setImage("images/ball.png");
this.x = 200;
this.y = 72;
this.bounce.x = 1;
this.bounce.y = 1;
this.velocity.x = -100;
this.velocity.y = 100;
this.beep = baa.audio.newSource("audio/pong_beep.ogg");
this.peep = baa.audio.newSource("audio/pong_peep.ogg");
this.plop = baa.audio.newSource("audio/pong_plop.ogg");
// this.beep.setVolume(0);
// this.peep.setVolume(0);
// this.plop.setVolume(0);
this.beep.setPitch(1.4);
this.seperatePriority = 0;
this.timerManager = baa.timeManager.new(this);
this.teleTimer = this.timerManager.newTimer(5,true,function (self) {
return self.x > 300 || self.x < 96;
},"reset");
// this.angles = []
}
Ball.update = function () {
Ball.super.update(this);
this.teleTimer.update();
if (this.x < 300 && this.x > 96) {
this.teleTimer.reset();
// print(dt);
};
if (this.bottom() > 144) {
this.velocity.y = -Math.abs(this.velocity.y);
this.bottom(144);
this.plop.play();
}
if (this.top() < 0) {
this.velocity.y = Math.abs(this.velocity.y);
this.top(0);
this.plop.play();
}
if (Play.inst.inMenu || Play.inst.gameover) {
if (this.x < 96) {
this.x = 96;
this.plop.play();
this.velocity.x = Math.abs(this.velocity.x);
}
else if (this.x > 300 ) {
this.x = 300 ;
this.plop.play();
this.velocity.x = -Math.abs(this.velocity.x);
}
}
else {
if (this.x < -10) {
// this.peep.play();
this.reset();
Play.inst.score2.setScore(1,true);
}
else if (this.x > 400) {
// this.peep.play();
this.reset();
Play.inst.score1.setScore(1,true);
}
if (Play.inst.singleplayer) {
if (this.x < 200) {
this.x = 200;
this.plop.play();
this.velocity.x = Math.abs(this.velocity.x);
}
}
else if (Play.inst.gridLeft.gameover) {
if (this.x < 96) {
this.x = 96;
this.plop.play();
this.velocity.x = Math.abs(this.velocity.x);
}
}
if (Play.inst.gridRight.gameover) {
if (this.x > 300 ) {
this.x = 300 ;
this.plop.play();
this.velocity.x = -Math.abs(this.velocity.x);
}
}
}
}
Ball.reset = function () {
this.x = 200;
this.y = 72;
this.velocity.x = baa.utils.choose([70,80,90,100,110,120,130]) * baa.utils.choose([-1,1]);
this.velocity.y = (200 - Math.abs(this.velocity.x)) * baa.utils.choose([-1,1]);
}
// Ball.onOverlap = function (e) {
// if (this.velocity.x > 0) {
// this.right(e.left());
// this.velocity.x *= -1;
// }
// if (this.velocity.x < 0) {
// this.left(e.right());
// this.velocity.x *= -1;
// }
// }