Implement basic scene manager with ability to switch between scenes
This commit is contained in:
parent
9063b45180
commit
f9079e4823
7 changed files with 75 additions and 21 deletions
|
|
@ -2,17 +2,19 @@ import { mp5 } from '../../main';
|
|||
import { Player } from '../Player';
|
||||
import { colors } from '../constants/colors';
|
||||
import { Edge } from '../Edge';
|
||||
import { SceneManager } from './SceneManager';
|
||||
import { Scenes } from './scenes';
|
||||
|
||||
export class OverviewScene {
|
||||
player: Player;
|
||||
edgeData: Array<{ x: number; y: number; r: number }>;
|
||||
edgeData: Array<{ x: number; y: number; r: number; scene: Scenes }>;
|
||||
edges: Edge[];
|
||||
|
||||
constructor() {
|
||||
this.edgeData = [
|
||||
{ x: 100, y: 100, r: 50 },
|
||||
{ x: 900, y: 400, r: 100 },
|
||||
{ x: 300, y: 600, r: 75 },
|
||||
{ x: 100, y: 100, r: 50, scene: Scenes.LEGACY },
|
||||
{ x: 900, y: 400, r: 100, scene: Scenes.LEGACY },
|
||||
{ x: 300, y: 600, r: 75, scene: Scenes.LEGACY },
|
||||
];
|
||||
this.edges = this.edgeData.map((edge) => new Edge(edge.x, edge.y, edge.r));
|
||||
this.player = new Player();
|
||||
|
|
@ -26,12 +28,11 @@ export class OverviewScene {
|
|||
this.player.move();
|
||||
}
|
||||
|
||||
public onSceneClick() {
|
||||
console.log('Click on scene');
|
||||
this.edges.forEach((edgeShape, i) => {
|
||||
const dist = mp5.dist(mp5.mouseX, mp5.mouseY, edgeShape.x, edgeShape.y);
|
||||
if (dist < edgeShape.r) {
|
||||
console.log(`Click on edge ${i}`);
|
||||
public onSceneClick(sm: SceneManager) {
|
||||
this.edgeData.forEach((edge, i) => {
|
||||
const dist = mp5.dist(mp5.mouseX, mp5.mouseY, edge.x, edge.y);
|
||||
if (dist < edge.r) {
|
||||
sm.changeSceneTo(edge.scene);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
|
|
|||
Reference in a new issue