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 roomPlaced: number;
 | 
			
		||||
    private exitFacing: Facing;
 | 
			
		||||
    private enemies: Array<Enemy>;
 | 
			
		||||
    private player: Vec2;
 | 
			
		||||
 | 
			
		||||
    constructor(JSONFilePath: string, seed: any) {
 | 
			
		||||
        let xhr = new XMLHttpRequest();
 | 
			
		||||
| 
						 | 
				
			
			@ -40,6 +42,8 @@ export default class RandomMapGenerator {
 | 
			
		|||
 | 
			
		||||
        this.map = new TiledTilemapData();
 | 
			
		||||
        this.rooms = new Array();
 | 
			
		||||
        this.enemies = new Array();
 | 
			
		||||
        this.player = new Vec2();
 | 
			
		||||
        let gen = require('random-seed');
 | 
			
		||||
        this.gen = new gen(seed);
 | 
			
		||||
        this.hasExit = false;
 | 
			
		||||
| 
						 | 
				
			
			@ -104,6 +108,14 @@ export default class RandomMapGenerator {
 | 
			
		|||
        return this.map;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    getPlayer(): Vec2 {
 | 
			
		||||
        return this.player;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    getEnemies(): Array<Enemy> {
 | 
			
		||||
        return this.enemies;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private putNextRoom(position: Vec2, facing: Facing): boolean {
 | 
			
		||||
        switch (facing) {
 | 
			
		||||
            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[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 {
 | 
			
		||||
        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.topLayer = [...old.topLayer];
 | 
			
		||||
        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)
 | 
			
		||||
            this.minX = posX;
 | 
			
		||||
        if (posY < this.minY)
 | 
			
		||||
| 
						 | 
				
			
			@ -349,6 +388,12 @@ class Room {
 | 
			
		|||
    bottomRight: Vec2;
 | 
			
		||||
    topLayer: Array<number>;
 | 
			
		||||
    bottomLayer: Array<number>;
 | 
			
		||||
    enemies: Array<Enemy>
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export class Enemy {
 | 
			
		||||
    type: String;
 | 
			
		||||
    position: Vec2;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
enum Facing {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue
	
	Block a user