46 lines
1.5 KiB
TypeScript
46 lines
1.5 KiB
TypeScript
import Scene from "../../Scene/Scene";
|
|
import Vec2 from "../../DataTypes/Vec2";
|
|
import PlayerController from "../Player/PlayerController";
|
|
import { GraphicType } from "../../Nodes/Graphics/GraphicTypes";
|
|
import { UIElementType } from "../../Nodes/UIElements/UIElementTypes";
|
|
import Color from "../../Utils/Color";
|
|
import PathfinderController from "./Pathfinder/PathfinderController";
|
|
|
|
export default class PathfindingScene extends Scene {
|
|
|
|
loadScene(){
|
|
this.load.tilemap("interior", "/assets/tilemaps/Interior.json");
|
|
}
|
|
|
|
startScene(){
|
|
this.add.tilemap("interior");
|
|
|
|
// Add a layer for the game objects
|
|
this.addLayer("main");
|
|
|
|
// Add the player
|
|
let player = this.add.graphic(GraphicType.RECT, "main", {position: new Vec2(500, 500), size: new Vec2(64, 64)});
|
|
player.addPhysics();
|
|
player.addAI(PlayerController, {playerType: "topdown", speed: 400});
|
|
|
|
// Set the viewport to follow the player
|
|
this.viewport.setBounds(0, 0, 40*64, 40*64);
|
|
this.viewport.follow(player);
|
|
this.viewport.enableZoom();
|
|
|
|
// Add a navigator
|
|
let nav = this.add.graphic(GraphicType.RECT, "main", {position: new Vec2(700, 400), size: new Vec2(64, 64)});
|
|
nav.setColor(Color.BLUE);
|
|
nav.addPhysics();
|
|
nav.addAI(PathfinderController, {player: player});
|
|
|
|
// Add a layer for the ui
|
|
this.addUILayer("uiLayer");
|
|
|
|
// Add a button that triggers the navigator
|
|
let btn = this.add.uiElement(UIElementType.BUTTON, "uiLayer", {position: new Vec2(400, 20), text: "Navigate"});
|
|
btn.size = new Vec2(120, 35);
|
|
btn.setBackgroundColor(Color.BLUE);
|
|
btn.onClickEventId = "navigate";
|
|
}
|
|
} |