1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283 |
- import { Board } from "../Board.js";
- import { Button } from "../../libraries/components/Button.js";
- export class MenuState {
- constructor(fsm) {
- this.stateMachine = fsm;
- this.boundMouseEvent = {};
- }
- init() {
- this.boundMouseEvent['mousedown'] = this.mouseDown.bind(this);
- this.boundMouseEvent['mousemove'] = this.mouseMove.bind(this);
- for(let key in this.boundMouseEvent) {
- window.addEventListener(key, this.boundMouseEvent[key]);
- }
- this.board = new Board();
- this.board.initDemo();
- this.playButton = new Button(0, 0, 160, 70, "Play");
- this.playButton.hoverFunction((ctx) => {
- ctx.fillStyle = "rgba(255,255,255,0.8)";
- });
- this.playButton.clickFunction(() => {
- this.stateMachine.transitionTo("levelselect");
- });
- this.deleteButton = new Button(0,0, 80, 20, "delete save",
- {textFillStyle: "red", fontSize: 14, fontFamily: "Ariel", textStrokeStyle: null, backgroundFillStyle: null}
- );
- this.deleteButton.clickFunction(() => {
- if(confirm("Are you sure you want to reset your save data? This cannot be undone.")) {
- localStorage.removeItem('ballsort-playerdata');
- window.location.reload();
- }
- })
- }
- draw(ctx, scaledCanvas) {
- this.board.drawDemo(ctx,scaledCanvas);
- let canvasBounds = scaledCanvas.bounds;
- let center = canvasBounds.center;
-
- this.playButton.setPosition(center.x, center.y);
- this.playButton.draw(ctx,scaledCanvas);
- this.deleteButton.setPosition(center.x, canvasBounds.height - 20);
- this.deleteButton.draw(ctx, scaledCanvas);
- ctx.fillStyle = "white";
- ctx.strokeStyle = "black";
- ctx.font = "72px Luckiest Guy";
- ctx.textAlign = "center";
- ctx.lineWidth = 4;
- ctx.fillText(`Ballsort`, center.x, center.y - 82);
- ctx.strokeText(`Ballsort`, center.x, center.y - 82);
- }
- update(delta) {
- }
- mouseDown(event) {
- this.playButton.mouseDown(event);
- this.deleteButton.mouseDown(event);
- }
- mouseMove(event) {
- document.body.style.cursor = "default";
- this.playButton.mouseMove(event);
- this.deleteButton.mouseMove(event);
- }
- enter() {
- this.init();
- }
- leave() {
- for(let key in this.boundMouseEvent) {
- window.removeEventListener(key, this.boundMouseEvent[key]);
- }
- }
- }
|