Add Level 3 with new terrain, updated tower stats, and comprehensive wave configurations
This commit introduces Level 3 with: - New terrain assets (terrain2.png) and tilemap configuration - Updated tower statistics for level 2 and 3 in towerConfig.js - Complete wave scheduling for level 3 in waveConfig.js - Dynamic asset loading based on current level in level.js
This commit is contained in:
parent
7112571a2b
commit
f843aee85f
|
|
@ -0,0 +1,116 @@
|
||||||
|
{ "compressionlevel":-1,
|
||||||
|
"height":14,
|
||||||
|
"infinite":false,
|
||||||
|
"layers":[
|
||||||
|
{
|
||||||
|
"data":[7, 7, 11, 7, 7, 7, 7, 7, 7, 7, 7, 2, 2, 0, 0, 0,
|
||||||
|
7, 7, 11, 7, 11, 11, 11, 11, 11, 7, 7, 2, 2, 0, 0, 0,
|
||||||
|
7, 7, 11, 7, 7, 7, 7, 7, 11, 7, 7, 2, 2, 0, 0, 0,
|
||||||
|
7, 7, 11, 11, 7, 7, 7, 7, 11, 7, 7, 2, 2, 0, 0, 0,
|
||||||
|
12, 12, 12, 11, 12, 12, 12, 12, 11, 12, 12, 2, 2, 0, 0, 0,
|
||||||
|
2, 2, 2, 3221225478, 2, 2, 2, 2, 3221225478, 2, 2, 2, 2, 0, 0, 0,
|
||||||
|
2, 2, 2, 1, 2, 2, 2, 2, 1, 2, 2, 2, 2, 0, 0, 0,
|
||||||
|
2, 1, 1, 1, 2, 2, 2, 2, 1, 2, 2, 2, 2, 0, 0, 0,
|
||||||
|
2, 1, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 0, 0, 0,
|
||||||
|
2, 6, 2, 2, 2, 2, 2, 2, 6, 2, 2, 2, 2, 0, 0, 0,
|
||||||
|
7, 11, 7, 7, 7, 7, 7, 7, 11, 7, 7, 2, 2, 0, 0, 0,
|
||||||
|
7, 11, 7, 7, 7, 7, 7, 7, 11, 7, 7, 2, 2, 0, 0, 0,
|
||||||
|
7, 11, 11, 11, 11, 11, 11, 11, 11, 7, 7, 2, 2, 0, 0, 0,
|
||||||
|
7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 2, 2, 0, 0, 0],
|
||||||
|
"height":14,
|
||||||
|
"id":1,
|
||||||
|
"name":"main",
|
||||||
|
"opacity":1,
|
||||||
|
"type":"tilelayer",
|
||||||
|
"visible":true,
|
||||||
|
"width":16,
|
||||||
|
"x":0,
|
||||||
|
"y":0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"data":[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 16, 0, 16, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 16, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0,
|
||||||
|
16, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
|
||||||
|
0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
|
||||||
|
"height":14,
|
||||||
|
"id":2,
|
||||||
|
"name":"platforms",
|
||||||
|
"opacity":1,
|
||||||
|
"type":"tilelayer",
|
||||||
|
"visible":true,
|
||||||
|
"width":16,
|
||||||
|
"x":0,
|
||||||
|
"y":0
|
||||||
|
}],
|
||||||
|
"nextlayerid":3,
|
||||||
|
"nextobjectid":1,
|
||||||
|
"orientation":"orthogonal",
|
||||||
|
"renderorder":"right-down",
|
||||||
|
"tiledversion":"1.11.2",
|
||||||
|
"tileheight":200,
|
||||||
|
"tilesets":[
|
||||||
|
{
|
||||||
|
"columns":5,
|
||||||
|
"firstgid":1,
|
||||||
|
"image":"terrain2.png",
|
||||||
|
"imageheight":1000,
|
||||||
|
"imagewidth":1000,
|
||||||
|
"margin":0,
|
||||||
|
"name":"terrain2",
|
||||||
|
"spacing":0,
|
||||||
|
"tilecount":25,
|
||||||
|
"tileheight":200,
|
||||||
|
"tiles":[
|
||||||
|
{
|
||||||
|
"id":1,
|
||||||
|
"properties":[
|
||||||
|
{
|
||||||
|
"name":"collides",
|
||||||
|
"type":"bool",
|
||||||
|
"value":true
|
||||||
|
}]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id":3,
|
||||||
|
"properties":[
|
||||||
|
{
|
||||||
|
"name":"collides",
|
||||||
|
"type":"bool",
|
||||||
|
"value":true
|
||||||
|
}]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id":6,
|
||||||
|
"properties":[
|
||||||
|
{
|
||||||
|
"name":"collides",
|
||||||
|
"type":"bool",
|
||||||
|
"value":true
|
||||||
|
}]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id":11,
|
||||||
|
"properties":[
|
||||||
|
{
|
||||||
|
"name":"collides",
|
||||||
|
"type":"bool",
|
||||||
|
"value":true
|
||||||
|
}]
|
||||||
|
}],
|
||||||
|
"tilewidth":200
|
||||||
|
}],
|
||||||
|
"tilewidth":200,
|
||||||
|
"type":"map",
|
||||||
|
"version":"1.10",
|
||||||
|
"width":16
|
||||||
|
}
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 509 KiB |
Binary file not shown.
|
|
@ -0,0 +1,65 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<map version="1.10" tiledversion="1.11.2" orientation="orthogonal" renderorder="right-down" width="16" height="14" tilewidth="200" tileheight="200" infinite="0" nextlayerid="3" nextobjectid="1">
|
||||||
|
<editorsettings>
|
||||||
|
<export target="../level3.tmj" format="json"/>
|
||||||
|
</editorsettings>
|
||||||
|
<tileset firstgid="1" name="terrain2" tilewidth="200" tileheight="200" tilecount="25" columns="5">
|
||||||
|
<image source="../terrain2.png" width="1000" height="1000"/>
|
||||||
|
<tile id="1">
|
||||||
|
<properties>
|
||||||
|
<property name="collides" type="bool" value="true"/>
|
||||||
|
</properties>
|
||||||
|
</tile>
|
||||||
|
<tile id="3">
|
||||||
|
<properties>
|
||||||
|
<property name="collides" type="bool" value="true"/>
|
||||||
|
</properties>
|
||||||
|
</tile>
|
||||||
|
<tile id="6">
|
||||||
|
<properties>
|
||||||
|
<property name="collides" type="bool" value="true"/>
|
||||||
|
</properties>
|
||||||
|
</tile>
|
||||||
|
<tile id="11">
|
||||||
|
<properties>
|
||||||
|
<property name="collides" type="bool" value="true"/>
|
||||||
|
</properties>
|
||||||
|
</tile>
|
||||||
|
</tileset>
|
||||||
|
<layer id="1" name="main" width="16" height="14">
|
||||||
|
<data encoding="csv">
|
||||||
|
7,7,11,7,7,7,7,7,7,7,7,2,2,0,0,0,
|
||||||
|
7,7,11,7,11,11,11,11,11,7,7,2,2,0,0,0,
|
||||||
|
7,7,11,7,7,7,7,7,11,7,7,2,2,0,0,0,
|
||||||
|
7,7,11,11,7,7,7,7,11,7,7,2,2,0,0,0,
|
||||||
|
12,12,12,11,12,12,12,12,11,12,12,2,2,0,0,0,
|
||||||
|
2,2,2,3221225478,2,2,2,2,3221225478,2,2,2,2,0,0,0,
|
||||||
|
2,2,2,1,2,2,2,2,1,2,2,2,2,0,0,0,
|
||||||
|
2,1,1,1,2,2,2,2,1,2,2,2,2,0,0,0,
|
||||||
|
2,1,2,2,2,2,2,2,1,2,2,2,2,0,0,0,
|
||||||
|
2,6,2,2,2,2,2,2,6,2,2,2,2,0,0,0,
|
||||||
|
7,11,7,7,7,7,7,7,11,7,7,2,2,0,0,0,
|
||||||
|
7,11,7,7,7,7,7,7,11,7,7,2,2,0,0,0,
|
||||||
|
7,11,11,11,11,11,11,11,11,7,7,2,2,0,0,0,
|
||||||
|
7,7,7,7,7,7,7,7,7,7,7,2,2,0,0,0
|
||||||
|
</data>
|
||||||
|
</layer>
|
||||||
|
<layer id="2" name="platforms" width="16" height="14">
|
||||||
|
<data encoding="csv">
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,16,0,16,0,0,0,16,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,16,0,0,0,0,16,0,0,0,0,0,0,
|
||||||
|
16,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
|
||||||
|
0,0,16,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||||
|
</data>
|
||||||
|
</layer>
|
||||||
|
</map>
|
||||||
|
|
@ -9,6 +9,11 @@ export class Level extends Phaser.Scene {
|
||||||
this.level = 1;
|
this.level = 1;
|
||||||
this.wave = 1;
|
this.wave = 1;
|
||||||
this.gold = 150;
|
this.gold = 150;
|
||||||
|
this.terrain = {
|
||||||
|
1: 'terrain',
|
||||||
|
2: 'terrain',
|
||||||
|
3: 'terrain2',
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
init(data) {
|
init(data) {
|
||||||
|
|
@ -20,7 +25,7 @@ export class Level extends Phaser.Scene {
|
||||||
|
|
||||||
preload() {
|
preload() {
|
||||||
this.load.tilemapTiledJSON(`level${this.level}`, `assets/level${this.level}.json`);
|
this.load.tilemapTiledJSON(`level${this.level}`, `assets/level${this.level}.json`);
|
||||||
this.load.image('terrain', 'assets/terrain.png');
|
this.load.image(`${this.terrain[this.level]}`, `assets/${this.terrain[this.level]}.png`);
|
||||||
this.load.spritesheet('ammo', 'assets/ammo.png', {
|
this.load.spritesheet('ammo', 'assets/ammo.png', {
|
||||||
frameWidth: 50,
|
frameWidth: 50,
|
||||||
frameHeight: 50
|
frameHeight: 50
|
||||||
|
|
@ -63,7 +68,7 @@ export class Level extends Phaser.Scene {
|
||||||
|
|
||||||
create() {
|
create() {
|
||||||
this.levelMap = this.make.tilemap({ key: `level${this.level}` });
|
this.levelMap = this.make.tilemap({ key: `level${this.level}` });
|
||||||
const terrainTiles = this.levelMap.addTilesetImage('terrain', 'terrain');
|
const terrainTiles = this.levelMap.addTilesetImage(`${this.terrain[this.level]}`, `${this.terrain[this.level]}`);
|
||||||
this.mainLayer = this.levelMap.createLayer('main', terrainTiles)
|
this.mainLayer = this.levelMap.createLayer('main', terrainTiles)
|
||||||
.setCollisionByProperty({ collides: true });
|
.setCollisionByProperty({ collides: true });
|
||||||
this.platformsLayer = this.levelMap.createLayer('platforms', terrainTiles);
|
this.platformsLayer = this.levelMap.createLayer('platforms', terrainTiles);
|
||||||
|
|
|
||||||
|
|
@ -157,21 +157,21 @@ export const TOWERS_CONFIG = {
|
||||||
},
|
},
|
||||||
'level2': {
|
'level2': {
|
||||||
'cost': 1000,
|
'cost': 1000,
|
||||||
'dmgLow': 40,
|
'dmgLow': 55,
|
||||||
'dmgHigh': 50,
|
'dmgHigh': 65,
|
||||||
'rate': 8000,
|
'rate': 9000,
|
||||||
'duration': 2000,
|
'duration': 2000,
|
||||||
'range': 800,
|
'range': 900,
|
||||||
'aoe': 210,
|
'aoe': 210,
|
||||||
'anim': 'none'
|
'anim': 'none'
|
||||||
},
|
},
|
||||||
'level3': {
|
'level3': {
|
||||||
'cost': 2000,
|
'cost': 2000,
|
||||||
'dmgLow': 50,
|
'dmgLow': 80,
|
||||||
'dmgHigh': 60,
|
'dmgHigh': 90,
|
||||||
'rate': 5000,
|
'rate': 7000,
|
||||||
'duration': 2000,
|
'duration': 2000,
|
||||||
'range': 800,
|
'range': 1000,
|
||||||
'aoe': 225,
|
'aoe': 225,
|
||||||
'anim': 'none'
|
'anim': 'none'
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -478,5 +478,245 @@ export const WAVE_CONFIG = {
|
||||||
basic4: 20
|
basic4: 20
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
// Level
|
||||||
|
3: {
|
||||||
|
//Spawn Point
|
||||||
|
spawnX: 2,
|
||||||
|
spawnY: 0,
|
||||||
|
endX: 4,
|
||||||
|
endY: 1,
|
||||||
|
// Wave
|
||||||
|
1: {
|
||||||
|
// Schedule
|
||||||
|
1: {
|
||||||
|
begin: 0,
|
||||||
|
basic1: 5,
|
||||||
|
},
|
||||||
|
2: {
|
||||||
|
begin: 15,
|
||||||
|
basic1: 8,
|
||||||
|
},
|
||||||
|
3: {
|
||||||
|
begin: 30,
|
||||||
|
basic1: 10,
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// Wave
|
||||||
|
2: {
|
||||||
|
// Schedule
|
||||||
|
1: {
|
||||||
|
begin: 0,
|
||||||
|
basic1: 8,
|
||||||
|
basic2: 1
|
||||||
|
},
|
||||||
|
2: {
|
||||||
|
begin: 15,
|
||||||
|
basic1: 5,
|
||||||
|
basic2: 2
|
||||||
|
},
|
||||||
|
3: {
|
||||||
|
begin: 30,
|
||||||
|
basic1: 5,
|
||||||
|
basic2: 4
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// Wave
|
||||||
|
3: {
|
||||||
|
// Schedule
|
||||||
|
1: {
|
||||||
|
begin: 0,
|
||||||
|
basic2: 5
|
||||||
|
},
|
||||||
|
2: {
|
||||||
|
begin: 15,
|
||||||
|
basic2: 6
|
||||||
|
},
|
||||||
|
3: {
|
||||||
|
begin: 30,
|
||||||
|
basic2: 8,
|
||||||
|
basic3: 1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
// Wave
|
||||||
|
4: {
|
||||||
|
// Schedule
|
||||||
|
1: {
|
||||||
|
begin: 0,
|
||||||
|
basic1: 10,
|
||||||
|
basic3: 2,
|
||||||
|
},
|
||||||
|
2: {
|
||||||
|
begin: 15,
|
||||||
|
basic1: 8,
|
||||||
|
basic2: 3,
|
||||||
|
basic3: 2
|
||||||
|
},
|
||||||
|
3: {
|
||||||
|
begin: 30,
|
||||||
|
basic3: 4
|
||||||
|
}
|
||||||
|
},
|
||||||
|
//Wave
|
||||||
|
5: {
|
||||||
|
//Schedule
|
||||||
|
1: {
|
||||||
|
begin: 0,
|
||||||
|
basic1: 10,
|
||||||
|
basic2: 2,
|
||||||
|
basic3: 1
|
||||||
|
},
|
||||||
|
2: {
|
||||||
|
begin: 15,
|
||||||
|
advanced1: 1,
|
||||||
|
},
|
||||||
|
3: {
|
||||||
|
begin: 25,
|
||||||
|
basic1: 8,
|
||||||
|
basic2: 3,
|
||||||
|
basic3: 2
|
||||||
|
},
|
||||||
|
4: {
|
||||||
|
begin: 35,
|
||||||
|
basic1: 25
|
||||||
|
},
|
||||||
|
5: {
|
||||||
|
begin: 40,
|
||||||
|
advanced1: 1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
//Wave
|
||||||
|
6: {
|
||||||
|
//Schedule
|
||||||
|
1: {
|
||||||
|
begin: 0,
|
||||||
|
basic2: 10,
|
||||||
|
advanced2: 1
|
||||||
|
},
|
||||||
|
2: {
|
||||||
|
begin: 15,
|
||||||
|
basic1: 20,
|
||||||
|
},
|
||||||
|
3: {
|
||||||
|
begin: 25,
|
||||||
|
basic3: 6,
|
||||||
|
advanced1: 1
|
||||||
|
},
|
||||||
|
4: {
|
||||||
|
begin: 35,
|
||||||
|
advanced2: 1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
//Wave
|
||||||
|
7: {
|
||||||
|
//Schedule
|
||||||
|
1: {
|
||||||
|
begin: 0,
|
||||||
|
medium1: 5,
|
||||||
|
basic3: 5
|
||||||
|
},
|
||||||
|
2: {
|
||||||
|
begin: 15,
|
||||||
|
basic2: 10,
|
||||||
|
basic4: 2,
|
||||||
|
advanced1: 1
|
||||||
|
},
|
||||||
|
3: {
|
||||||
|
begin: 25,
|
||||||
|
medium1: 6,
|
||||||
|
medium2: 2
|
||||||
|
},
|
||||||
|
4: {
|
||||||
|
begin: 35,
|
||||||
|
advanced2: 1
|
||||||
|
}
|
||||||
|
},
|
||||||
|
//Wave
|
||||||
|
8: {
|
||||||
|
//Schedule
|
||||||
|
1: {
|
||||||
|
begin: 0,
|
||||||
|
advanced2: 1,
|
||||||
|
basic4: 20
|
||||||
|
},
|
||||||
|
2: {
|
||||||
|
begin: 25,
|
||||||
|
basic2: 10,
|
||||||
|
medium2: 6,
|
||||||
|
},
|
||||||
|
3: {
|
||||||
|
begin: 35,
|
||||||
|
medium2: 5,
|
||||||
|
basic4: 15
|
||||||
|
},
|
||||||
|
4: {
|
||||||
|
begin: 45,
|
||||||
|
advanced1: 1,
|
||||||
|
basic3: 10
|
||||||
|
}
|
||||||
|
},
|
||||||
|
//Wave
|
||||||
|
9: {
|
||||||
|
//Schedule
|
||||||
|
1: {
|
||||||
|
begin: 0,
|
||||||
|
advanced3: 1,
|
||||||
|
medium1: 4,
|
||||||
|
basic4: 6
|
||||||
|
},
|
||||||
|
2: {
|
||||||
|
begin: 25,
|
||||||
|
basic3: 10,
|
||||||
|
medium2: 6,
|
||||||
|
},
|
||||||
|
3: {
|
||||||
|
begin: 40,
|
||||||
|
advanced3: 2,
|
||||||
|
basic4: 15
|
||||||
|
},
|
||||||
|
4: {
|
||||||
|
begin: 55,
|
||||||
|
medium1: 4,
|
||||||
|
medium2: 4,
|
||||||
|
basic4: 20
|
||||||
|
}
|
||||||
|
},
|
||||||
|
//Wave
|
||||||
|
10: {
|
||||||
|
//Schedule
|
||||||
|
1: {
|
||||||
|
begin: 0,
|
||||||
|
advanced3: 2,
|
||||||
|
advanced1: 2,
|
||||||
|
medium1: 4,
|
||||||
|
basic4: 4,
|
||||||
|
basic3: 4
|
||||||
|
},
|
||||||
|
2: {
|
||||||
|
begin: 25,
|
||||||
|
advanced2: 2,
|
||||||
|
medium2: 4,
|
||||||
|
basic2: 10
|
||||||
|
},
|
||||||
|
3: {
|
||||||
|
begin: 45,
|
||||||
|
advanced3: 4,
|
||||||
|
basic4: 20
|
||||||
|
},
|
||||||
|
4: {
|
||||||
|
begin: 50,
|
||||||
|
advanced1: 1,
|
||||||
|
advanced2: 1,
|
||||||
|
basic3: 10,
|
||||||
|
medium1: 20,
|
||||||
|
medium2: 10
|
||||||
|
},
|
||||||
|
4: {
|
||||||
|
begin: 60,
|
||||||
|
medium1: 10,
|
||||||
|
medium2: 10,
|
||||||
|
basic4: 20
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Loading…
Reference in New Issue