Merge branch 'master' of https://github.com/kellypeng44/ShatteredSword
This commit is contained in:
commit
d9b81428f4
|
@ -23,6 +23,8 @@ export default class RandomMapGenerator {
|
||||||
private minRoom: number;
|
private minRoom: number;
|
||||||
private roomPlaced: number;
|
private roomPlaced: number;
|
||||||
private exitFacing: Facing;
|
private exitFacing: Facing;
|
||||||
|
private enemies: Array<Enemy>;
|
||||||
|
private player: Vec2;
|
||||||
|
|
||||||
constructor(JSONFilePath: string, seed: any) {
|
constructor(JSONFilePath: string, seed: any) {
|
||||||
let xhr = new XMLHttpRequest();
|
let xhr = new XMLHttpRequest();
|
||||||
|
@ -40,6 +42,8 @@ export default class RandomMapGenerator {
|
||||||
|
|
||||||
this.map = new TiledTilemapData();
|
this.map = new TiledTilemapData();
|
||||||
this.rooms = new Array();
|
this.rooms = new Array();
|
||||||
|
this.enemies = new Array();
|
||||||
|
this.player = new Vec2();
|
||||||
let gen = require('random-seed');
|
let gen = require('random-seed');
|
||||||
this.gen = new gen(seed);
|
this.gen = new gen(seed);
|
||||||
this.hasExit = false;
|
this.hasExit = false;
|
||||||
|
@ -104,6 +108,14 @@ export default class RandomMapGenerator {
|
||||||
return this.map;
|
return this.map;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
getPlayer(): Vec2 {
|
||||||
|
return this.player;
|
||||||
|
}
|
||||||
|
|
||||||
|
getEnemies(): Array<Enemy> {
|
||||||
|
return this.enemies;
|
||||||
|
}
|
||||||
|
|
||||||
private putNextRoom(position: Vec2, facing: Facing): boolean {
|
private putNextRoom(position: Vec2, facing: Facing): boolean {
|
||||||
switch (facing) {
|
switch (facing) {
|
||||||
case Facing.LEFT:
|
case Facing.LEFT:
|
||||||
|
@ -245,8 +257,17 @@ export default class RandomMapGenerator {
|
||||||
this.map.layers[0].data[(room.topLeft.y + i) * width + room.topLeft.x + j] = room.bottomLayer[i * roomWidth + j];
|
this.map.layers[0].data[(room.topLeft.y + i) * width + room.topLeft.x + j] = room.bottomLayer[i * roomWidth + j];
|
||||||
this.map.layers[1].data[(room.topLeft.y + i) * width + room.topLeft.x + j] = room.topLayer[i * roomWidth + j];
|
this.map.layers[1].data[(room.topLeft.y + i) * width + room.topLeft.x + j] = room.topLayer[i * roomWidth + j];
|
||||||
}
|
}
|
||||||
|
if (room.enemies)
|
||||||
|
for (let index = 0; index < room.enemies.length; index++) {
|
||||||
|
const enemy = room.enemies[index];
|
||||||
|
enemy.position.x -= this.minX;
|
||||||
|
enemy.position.y -= this.minY;
|
||||||
|
this.enemies.push(enemy);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
this.player.x -= this.minX;
|
||||||
|
this.player.y -= this.minY;
|
||||||
|
}
|
||||||
|
|
||||||
private isValidRoom(topLeft: Vec2, bottomRight: Vec2): boolean {
|
private isValidRoom(topLeft: Vec2, bottomRight: Vec2): boolean {
|
||||||
for (let index = 0; index < this.rooms.length; index++) {
|
for (let index = 0; index < this.rooms.length; index++) {
|
||||||
|
@ -332,6 +353,24 @@ export default class RandomMapGenerator {
|
||||||
room.bottomRight = new Vec2(posX + old.width - 1, posY + old.height - 1);
|
room.bottomRight = new Vec2(posX + old.width - 1, posY + old.height - 1);
|
||||||
room.topLayer = [...old.topLayer];
|
room.topLayer = [...old.topLayer];
|
||||||
room.bottomLayer = [...old.bottomLayer];
|
room.bottomLayer = [...old.bottomLayer];
|
||||||
|
room.enemies = new Array();
|
||||||
|
if (old.sprites) {
|
||||||
|
for (let index = 0; index < old.sprites.length; index++) {
|
||||||
|
const sprite = old.sprites[index];
|
||||||
|
if (sprite.type === 'player') {
|
||||||
|
this.player.x = sprite.x;
|
||||||
|
this.player.y = sprite.y;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if (this.gen.random() <= sprite.possibility) {
|
||||||
|
let tmp = new Enemy();
|
||||||
|
tmp.type = sprite.type;
|
||||||
|
tmp.position = new Vec2(posX + sprite.x, posY + sprite.y);
|
||||||
|
room.enemies.push(tmp);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
if (posX < this.minX)
|
if (posX < this.minX)
|
||||||
this.minX = posX;
|
this.minX = posX;
|
||||||
if (posY < this.minY)
|
if (posY < this.minY)
|
||||||
|
@ -349,6 +388,12 @@ class Room {
|
||||||
bottomRight: Vec2;
|
bottomRight: Vec2;
|
||||||
topLayer: Array<number>;
|
topLayer: Array<number>;
|
||||||
bottomLayer: Array<number>;
|
bottomLayer: Array<number>;
|
||||||
|
enemies: Array<Enemy>
|
||||||
|
}
|
||||||
|
|
||||||
|
export class Enemy {
|
||||||
|
type: String;
|
||||||
|
position: Vec2;
|
||||||
}
|
}
|
||||||
|
|
||||||
enum Facing {
|
enum Facing {
|
||||||
|
|
Loading…
Reference in New Issue
Block a user