This repository has been archived on 2026-03-12. You can view files and clone it, but you cannot make any changes to it's state, such as pushing and creating new issues, pull requests or comments.
codewanderer/main.ts
2021-08-02 22:05:43 +02:00

56 lines
1.5 KiB
TypeScript

import p5 from 'p5';
import { SCREEN_WIDTH, SCREEN_HEIGHT } from './src/constants/screen';
import { DetailScene } from './src/scenes/DetailScene';
import { OverviewScene } from './src/scenes/OverviewScene';
import { Scenes } from './src/scenes/scenes';
import store from './src/store';
import { Companion, CompanionState } from './src/ui/companion';
import { InfoMessage } from './src/ui/info';
import { Intro } from './src/ui/intro';
const sketch = (s: p5) => {
// Scenes
let overviewScene: OverviewScene;
let detailScene: DetailScene;
s.setup = () => {
s.createCanvas(SCREEN_WIDTH, SCREEN_HEIGHT);
s.noCursor();
new Intro();
new Companion();
new InfoMessage();
overviewScene = new OverviewScene();
detailScene = new DetailScene();
};
s.draw = () => {
const { currentScene } = store.getState();
if (currentScene === Scenes.OVERVIEW) {
overviewScene.draw();
} else if (currentScene === Scenes.DETAIL) {
detailScene.draw();
}
};
s.mousePressed = () => {
const { currentScene, companionState, infoMessageShown } = store.getState();
if (
companionState !== CompanionState.ACTIVE &&
!infoMessageShown &&
store.getState().currentIntroStep === 0
) {
if (currentScene === Scenes.OVERVIEW) {
overviewScene.onSceneClick();
} else if (currentScene === Scenes.DETAIL) {
detailScene.onSceneClick();
}
}
};
};
// Setup Sketch
export const mp5 = new p5(sketch);