CS-Coursework/websites/Typing/ui_elements/timemenu.js

61 lines
1.9 KiB
JavaScript
Raw Normal View History

2022-11-28 11:04:49 +00:00
/**
* @file This file provides a time menu class for editing the length of a test
* @author Arlo Filley
*
* TODO:
* - implement visual changes (borders, etc)
* - replace with methods with getters and setters
* - highlight which option the user has chosen in some way
*/
/**
* this class displays a dropdown menu for the user where
* they can edit the duration of a test
*/
2022-11-04 12:18:45 +00:00
class TimeMenu {
constructor() {
2022-11-18 14:51:05 +00:00
this.buttons = [
2022-12-01 14:41:14 +00:00
new Button(100, 230, 100, 30, "15s"),
new Button(100, 260, 100, 30, "30s"),
new Button(100, 290, 100, 30, "45s"),
new Button(100, 320, 100, 30, "60s"),
2022-11-18 14:51:05 +00:00
];
2022-11-28 11:04:49 +00:00
this.topButton = this.buttons[0];
2022-11-18 14:51:05 +00:00
this.dropdown = false;
}
draw() {
if (this.dropdown) {
for (let i = 0; i < this.buttons.length; i++) {
2022-11-28 11:04:49 +00:00
this.buttons[i].draw()
}
if (this.buttons[0].isPressed() && user.time != 15) {
user.time = 15;
2022-12-01 14:41:14 +00:00
this.topButton = new Button(100, 230, 100, 30, "15s");
2022-11-28 11:04:49 +00:00
this.dropdown = false;
} else if (this.buttons[1].isPressed()) {
user.time = 30;
2022-12-01 14:41:14 +00:00
this.topButton = new Button(100, 230, 100, 30, "30s");
2022-11-28 11:04:49 +00:00
this.dropdown = false;
} else if (this.buttons[2].isPressed()) {
user.time = 45;
2022-12-01 14:41:14 +00:00
this.topButton = new Button(100, 230, 100, 30, "45s");
2022-11-28 11:04:49 +00:00
this.dropdown = false;
} else if (this.buttons[3].isPressed()) {
user.time = 60;
2022-12-01 14:41:14 +00:00
this.topButton = new Button(100, 230, 100, 30, "60s");
2022-11-28 11:04:49 +00:00
this.dropdown = false;
2022-11-18 14:51:05 +00:00
}
2022-11-28 11:04:49 +00:00
} else {
this.topButton.draw();
}
2022-11-04 12:18:45 +00:00
2022-11-28 11:04:49 +00:00
if (this.topButton.isPressed()) {
2022-11-18 14:51:05 +00:00
this.dropdown = true;
} else if (mouseIsPressed) {
this.dropdown = false;
2022-11-28 11:04:49 +00:00
}
2022-11-04 12:18:45 +00:00
}
}