From a906d198422904eac8356ff3c1b5fded53149086 Mon Sep 17 00:00:00 2001 From: Renge Date: Sat, 7 May 2022 20:53:32 -0400 Subject: [PATCH] fix: add Forest --- src/shattered_sword/Scenes/Forest.ts | 75 ++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 src/shattered_sword/Scenes/Forest.ts diff --git a/src/shattered_sword/Scenes/Forest.ts b/src/shattered_sword/Scenes/Forest.ts new file mode 100644 index 0000000..392423f --- /dev/null +++ b/src/shattered_sword/Scenes/Forest.ts @@ -0,0 +1,75 @@ +import Vec2 from "../../Wolfie2D/DataTypes/Vec2"; +import RandomMapGenerator from "../Tools/RandomMapGenerator"; +import GameLevel from "./GameLevel"; +import SnakeAI from "../AI/SnakeAI"; +import Porcelain from "./Porcelain"; +import InputWrapper from "../Tools/InputWrapper"; + +export default class Forest extends GameLevel { + loadScene(): void { + super.loadScene(); + this.rmg = new RandomMapGenerator("shattered_sword_assets/jsons/forest_template.json", InputWrapper.randomSeed); + this.map = this.rmg.getMap(); + this.load.tilemapFromObject("map", this.map); + + //load enemies + this.load.spritesheet("Snake","shattered_sword_assets/spritesheets/Snake.json"); + + //can load enemy sprite here + //sprites obtained from cse380 sprite wesbite + this.load.spritesheet("remus_werewolf","shattered_sword_assets/spritesheets/remus_werewolf.json"); + this.load.spritesheet("black_pudding","shattered_sword_assets/spritesheets/black_pudding.json"); + + //load music here + } + + updateScene(deltaT: number): void { + super.updateScene(deltaT); + + //spawn snake() + if(Math.random() < .0001 && this.gameStarted){ + console.log("RANDOM SNAKE!"); + this.addEnemy("Snake", this.player.position.clone().add(new Vec2(0,-320)), SnakeAI, { + player: this.player, + health: 50, + tilemap: "Main", + size: new Vec2(14,10), + offset : new Vec2(0, 22), + exp: 50, + }) + } + } + + protected goToNextLevel(): void { + this.viewport.setZoomLevel(1); + let sceneOptions = { + physics: { + groupNames: ["ground", "player", "enemies"], + collisions: + [ + [0, 1, 1], + [1, 0, 0], + [1, 0, 0] + ] + } + } + this.sceneManager.changeToScene(Porcelain, {}, sceneOptions); + } + + protected playStartStory(): void { + if (!this.touchedStartCheckPoint) { + this.touchedStartCheckPoint = true; + this.storyLoader("shattered_sword_assets/jsons/level1story.json"); + this.startTimer(); + } + } + + protected playEndStory() { + if (!this.touchedEndCheckPoint) { + this.touchedEndCheckPoint = true; + this.storyLoader("shattered_sword_assets/jsons/story.json"); + this.endTimer(); + this.levelEnded = true; + } + } +} \ No newline at end of file