diff --git a/dist/shattered_sword_assets/jsons/forest_template.json b/dist/shattered_sword_assets/jsons/forest_template.json index 3d53331..383d6c8 100644 --- a/dist/shattered_sword_assets/jsons/forest_template.json +++ b/dist/shattered_sword_assets/jsons/forest_template.json @@ -51,7 +51,8 @@ "y": 10, "possibility": 1 } - ] + ], + "checkPoint": [5, 19, 5, 5] }, "exit": { "width": 30, diff --git a/src/shattered_sword/Scenes/GameLevel.ts b/src/shattered_sword/Scenes/GameLevel.ts index 1696741..d64de6b 100644 --- a/src/shattered_sword/Scenes/GameLevel.ts +++ b/src/shattered_sword/Scenes/GameLevel.ts @@ -173,6 +173,8 @@ export default class GameLevel extends Scene { this.startpos = this.rmg.getPlayer().scale(32); + + //call super after extending story with scene @@ -190,6 +192,9 @@ export default class GameLevel extends Scene { //subscribe to relevant events this.subscribeToEvents(); this.addUI(); + + const checkPoint = this.rmg.getCheckPoint(); + this.addLevelEnd(new Vec2(checkPoint[0], checkPoint[1]), new Vec2(checkPoint[2], checkPoint[3])); // Create an enemies array // Send the player and enemies to the battle manager @@ -900,6 +905,13 @@ export default class GameLevel extends Scene { } + protected addLevelEnd(startingTile: Vec2, size: Vec2): void { + this.levelEndArea = this.add.graphic(GraphicType.RECT, "primary", {position: startingTile.scale(32), size: size.scale(32)}); + this.levelEndArea.addPhysics(undefined, undefined, false, true); + // this.levelEndArea.setTrigger("player", somelevelendevent, null); + this.levelEndArea.color = new Color(0, 0, 0, 0); + } + /** * damages the player if they collide with an enemy diff --git a/src/shattered_sword/Tools/RandomMapGenerator.ts b/src/shattered_sword/Tools/RandomMapGenerator.ts index d31b8dc..de2e48d 100644 --- a/src/shattered_sword/Tools/RandomMapGenerator.ts +++ b/src/shattered_sword/Tools/RandomMapGenerator.ts @@ -25,6 +25,7 @@ export default class RandomMapGenerator { private exitFacing: Facing; private enemies: Array; private player: Vec2; + private checkPoint: [number, number, number, number]; constructor(JSONFilePath: string, seed: any) { let xhr = new XMLHttpRequest(); @@ -44,6 +45,7 @@ export default class RandomMapGenerator { this.rooms = new Array(); this.enemies = new Array(); this.player = new Vec2(); + this.checkPoint = [0,0,0,0]; let gen = require('random-seed'); this.gen = new gen(seed); this.hasExit = false; @@ -115,6 +117,10 @@ export default class RandomMapGenerator { return new Vec2(this.player.x - this.minX, this.player.y - this.minY); } + getCheckPoint(): [number, number, number, number] { + return [this.checkPoint[0] - this.minX, this.checkPoint[1] - this.minY, this.checkPoint[2], this.checkPoint[3]]; + } + getEnemies(): Array { return this.enemies; } @@ -372,6 +378,11 @@ export default class RandomMapGenerator { } } } + if (old.checkPoint) { + this.checkPoint = [...old.checkPoint]; + this.checkPoint[0] += posX; + this.checkPoint[1] += posY; + } if (posX < this.minX) this.minX = posX; if (posY < this.minY)