diff --git a/assets/advanced-enemies.png b/assets/advanced-enemies.png new file mode 100644 index 0000000..65efce5 Binary files /dev/null and b/assets/advanced-enemies.png differ diff --git a/assets/advanced-enemies.psd b/assets/advanced-enemies.psd new file mode 100644 index 0000000..9e8735b Binary files /dev/null and b/assets/advanced-enemies.psd differ diff --git a/src/levels/level.js b/src/levels/level.js index 0cc8a89..a320133 100644 --- a/src/levels/level.js +++ b/src/levels/level.js @@ -23,6 +23,10 @@ export class Level extends Phaser.Scene { frameWidth: 50, frameHeight: 50 }); + this.load.spritesheet('advanced-enemies', 'assets/advanced-enemies.png', { + frameWidth: 150, + frameHeight: 150 + }); this.load.spritesheet('towers', 'assets/towers.png', { frameHeight: 150, frameWidth: 150 diff --git a/src/support/enemies.js b/src/support/enemies.js index 6df558f..7e03c88 100644 --- a/src/support/enemies.js +++ b/src/support/enemies.js @@ -33,11 +33,19 @@ export class Enemies { const enemy = this.scene.add.sprite(spawnX, spawnY, ENEMIES_CONFIG[this.type].spriteSheet, ENEMIES_CONFIG[this.type].spriteStart); // Create Animations - this.createAnim('side', ENEMIES_CONFIG[this.type].spriteStart, ENEMIES_CONFIG[this.type].spriteStart+2); - this.createAnim('up', ENEMIES_CONFIG[this.type].spriteStart+6, ENEMIES_CONFIG[this.type].spriteStart+7); - this.createAnim('down', ENEMIES_CONFIG[this.type].spriteStart+3, ENEMIES_CONFIG[this.type].spriteStart+5); - this.createAnim('die', ENEMIES_CONFIG[this.type].spriteStart+8, ENEMIES_CONFIG[this.type].spriteStart+9, 0); - + if (this.type.indexOf('basic') === 0) { + this.createAnim('side', ENEMIES_CONFIG[this.type].spriteStart, ENEMIES_CONFIG[this.type].spriteStart+2); + this.createAnim('up', ENEMIES_CONFIG[this.type].spriteStart+6, ENEMIES_CONFIG[this.type].spriteStart+8); + this.createAnim('down', ENEMIES_CONFIG[this.type].spriteStart+3, ENEMIES_CONFIG[this.type].spriteStart+5); + this.createAnim('die', ENEMIES_CONFIG[this.type].spriteStart+8, ENEMIES_CONFIG[this.type].spriteStart+9, 0); + } + if (this.type.indexOf('advanced') === 0) { + this.createAnim('side', ENEMIES_CONFIG[this.type].spriteStart+3, ENEMIES_CONFIG[this.type].spriteStart+5); + this.createAnim('up', ENEMIES_CONFIG[this.type].spriteStart+6, ENEMIES_CONFIG[this.type].spriteStart+7); + this.createAnim('down', ENEMIES_CONFIG[this.type].spriteStart, ENEMIES_CONFIG[this.type].spriteStart+2); + this.createAnim('die', ENEMIES_CONFIG[this.type].spriteStart+8, ENEMIES_CONFIG[this.type].spriteStart+9, 0); + } + // Generate unique ID for enemy const uniqueId = Phaser.Math.Between(100000, 999999); diff --git a/src/support/enemiesConfig.js b/src/support/enemiesConfig.js index 355a05d..b7e1c46 100644 --- a/src/support/enemiesConfig.js +++ b/src/support/enemiesConfig.js @@ -31,5 +31,27 @@ export const ENEMIES_CONFIG = { 'spriteSheet': 'basic-enemies', 'dropLow': 8, 'dropHigh': 16 + }, + 'advanced1': { + 'spread': 0, + 'health': 1200, + 'fullHealth': 1200, + 'speedLow': 50, + 'speedHigh': 60, + 'spriteStart': 0, + 'spriteSheet': 'advanced-enemies', + 'dropLow': 12, + 'dropHigh': 20 + }, + 'advanced2': { + 'spread': 0, + 'health': 1800, + 'fullHealth': 1800, + 'speedLow': 45, + 'speedHigh': 55, + 'spriteStart': 10, + 'spriteSheet': 'advanced-enemies', + 'dropLow': 15, + 'dropHigh': 25 } } \ No newline at end of file diff --git a/src/support/waveManager.js b/src/support/waveManager.js index 276169b..fda92c1 100644 --- a/src/support/waveManager.js +++ b/src/support/waveManager.js @@ -179,6 +179,12 @@ export class WaveManager { const enemy = new Enemies(this.scene, type, this.spawnX, this.spawnY, this.path); } } + if (this.scheduleInfo.hasOwnProperty(`advanced${i}`)) { + let type = `advanced${i}`; + for (let e = 0; e < this.scheduleInfo[type]; e++) { + const enemy = new Enemies(this.scene, type, this.spawnX, this.spawnY, this.path); + } + } } }