1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- import { GameState } from "./states/GameState.js";
- import { MenuState } from "./states/MenuState.js";
- import { FiniteStateMachine } from "../libraries/FiniteStateMachine.js";
- import { AsyncDataReader } from "../libraries/AsyncDataReader.js";
- import { LevelSelectState } from "./states/LevelSelectState.js";
- export class Game {
- constructor() {
- this.stateMachine = new FiniteStateMachine();
- this.stateMachine.registerState("game", new GameState(this.stateMachine))
- this.stateMachine.registerState("menu", new MenuState(this.stateMachine))
- this.stateMachine.registerState("levelselect", new LevelSelectState(this.stateMachine))
- }
- async init() {
-
- await this.loadLevelData();
- await this.loadPlayerData();
-
- this.stateMachine.setCurrentState("menu");
- this.stateMachine.getCurrentState().init();
- }
- async loadLevelData() {
- let levelData = await new AsyncDataReader().readJson("./js/game/leveldata/levels.json");
- this.stateMachine.getState("game").setLevelData(levelData);
- this.stateMachine.getState("levelselect").setLevelData(levelData);
- return levelData;
- }
- async loadPlayerData() {
- let playerData = localStorage.getItem("ballsort-playerdata");
- if(!playerData) {
- playerData = {level: 1};
- localStorage.setItem('ballsort-playerdata', JSON.stringify(playerData));
- } else {
- playerData = JSON.parse(playerData);
- }
- this.stateMachine.getState("game").setPlayerData(playerData);
- this.stateMachine.getState("levelselect").setPlayerData(playerData);
- return playerData;
- }
- draw(ctx, scaledCanvas) {
- this.stateMachine.getCurrentState().draw(ctx, scaledCanvas);
- }
- update(delta) {
- this.stateMachine.getCurrentState().update(delta);
- }
- }
|