-
Notifications
You must be signed in to change notification settings - Fork 2
/
button.js
36 lines (32 loc) · 1.16 KB
/
button.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
import { Thing } from "./thing.js";
export class Button extends Thing {
constructor(x, y, w, h, text, outline="#000", colour="#fff") {
super(x, y, w, h);
this.text = text;
this.outline = outline;
this.colour = colour;
this.cooldown = 0.0;
}
draw(ctx, drawSprite) {
ctx.fillStyle = this.outline;
ctx.fillRect(this.x, this.y, this.width, this.height);
ctx.fillStyle = this.colour;
ctx.fillRect(this.x + 2, this.y + 2, this.width - 4, this.height - 4);
ctx.fillStyle = this.outline;
ctx.font = "16pt Sans";
ctx.fillText(this.text, this.x + ((this.width / 2) - (ctx.measureText(this.text).width / 2)), this.y + this.height / 2 + 8);
}
update(ratio, keyboard, mouse, func=this.leftClicked, self=this) {
if (mouse.leftClick && this.cooldown == 0.0 && this.collides(mouse)) {
func(self);
this.cooldown = 30.0;
} else if (this.cooldown < 0.0) {
this.cooldown = 0.0;
} else if (this.cooldown > 0.0) {
this.cooldown -= ratio;
}
}
leftClicked() {
console.log("clicked");
}
}