Working on missions
BIN
public/assets/maps/01_first_steps.png
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
public/assets/maps/02_the_turn.png
Normal file
After Width: | Height: | Size: 19 KiB |
BIN
public/assets/maps/03_fork_in_the_road.png
Normal file
After Width: | Height: | Size: 20 KiB |
BIN
public/assets/maps/04_crossroads.png
Normal file
After Width: | Height: | Size: 18 KiB |
BIN
public/assets/maps/05_the_maze.png
Normal file
After Width: | Height: | Size: 26 KiB |
BIN
public/assets/maps/06_multiple_fronts.png
Normal file
After Width: | Height: | Size: 24 KiB |
Before Width: | Height: | Size: 120 KiB After Width: | Height: | Size: 116 KiB |
76
public/assets/missions/01_first_steps.json
Normal file
@ -0,0 +1,76 @@
|
||||
{
|
||||
"name": "First Steps",
|
||||
"description": "Welcome to your first defense mission. Protect the exit from basic invaders.",
|
||||
"mapImage": {
|
||||
"url": "/assets/maps/01_first_steps.png"
|
||||
},
|
||||
"gameMap": {
|
||||
"rows": 17,
|
||||
"columns": 25,
|
||||
"cells": [
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
|
||||
],
|
||||
"paths": [
|
||||
[
|
||||
[8, 0],
|
||||
[8, 1],
|
||||
[8, 2],
|
||||
[8, 3],
|
||||
[8, 4],
|
||||
[8, 5],
|
||||
[8, 6],
|
||||
[8, 7],
|
||||
[8, 8],
|
||||
[8, 9],
|
||||
[8, 10],
|
||||
[8, 11],
|
||||
[8, 12],
|
||||
[8, 13],
|
||||
[8, 14],
|
||||
[8, 15],
|
||||
[8, 16],
|
||||
[8, 17],
|
||||
[8, 18],
|
||||
[8, 19],
|
||||
[8, 20],
|
||||
[8, 21],
|
||||
[8, 22],
|
||||
[8, 23],
|
||||
[8, 24]
|
||||
]
|
||||
]
|
||||
},
|
||||
"rounds": [
|
||||
{
|
||||
"waves": [
|
||||
{
|
||||
"firstCreepSpawnTick": 500,
|
||||
"spawnIntervalTicks": 1000,
|
||||
"creeps": [0, 0, 0]
|
||||
},
|
||||
{
|
||||
"firstCreepSpawnTick": 4000,
|
||||
"spawnIntervalTicks": 1000,
|
||||
"creeps": [0, 0, 0, 0]
|
||||
}
|
||||
],
|
||||
"offeredGems": [0, 1]
|
||||
}
|
||||
]
|
||||
}
|
99
public/assets/missions/02_the_turn.json
Normal file
@ -0,0 +1,99 @@
|
||||
{
|
||||
"name": "The Turn",
|
||||
"description": "A winding path presents new defensive challenges. Watch out for quick enemies!",
|
||||
"mapImage": {
|
||||
"url": "/assets/maps/02_the_turn.png"
|
||||
},
|
||||
"gameMap": {
|
||||
"rows": 17,
|
||||
"columns": 25,
|
||||
"cells": [
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
|
||||
],
|
||||
"paths": [
|
||||
[
|
||||
[4, 0],
|
||||
[4, 1],
|
||||
[4, 2],
|
||||
[4, 3],
|
||||
[4, 4],
|
||||
[4, 5],
|
||||
[4, 6],
|
||||
[4, 7],
|
||||
[4, 8],
|
||||
[5, 8],
|
||||
[6, 8],
|
||||
[7, 8],
|
||||
[8, 8],
|
||||
[9, 8],
|
||||
[10, 8],
|
||||
[11, 8],
|
||||
[12, 8],
|
||||
[12, 9],
|
||||
[12, 10],
|
||||
[12, 11],
|
||||
[12, 12],
|
||||
[12, 13],
|
||||
[12, 14],
|
||||
[12, 15],
|
||||
[12, 16],
|
||||
[12, 17],
|
||||
[12, 18],
|
||||
[12, 19],
|
||||
[12, 20],
|
||||
[12, 21],
|
||||
[12, 22],
|
||||
[12, 23],
|
||||
[12, 24]
|
||||
]
|
||||
]
|
||||
},
|
||||
"rounds": [
|
||||
{
|
||||
"waves": [
|
||||
{
|
||||
"firstCreepSpawnTick": 500,
|
||||
"spawnIntervalTicks": 1000,
|
||||
"creeps": [0, 0, 0, 0]
|
||||
},
|
||||
{
|
||||
"firstCreepSpawnTick": 5000,
|
||||
"spawnIntervalTicks": 800,
|
||||
"creeps": [1, 1, 1]
|
||||
}
|
||||
],
|
||||
"offeredGems": [0, 1]
|
||||
},
|
||||
{
|
||||
"waves": [
|
||||
{
|
||||
"firstCreepSpawnTick": 500,
|
||||
"spawnIntervalTicks": 800,
|
||||
"creeps": [0, 1, 0, 1, 0]
|
||||
},
|
||||
{
|
||||
"firstCreepSpawnTick": 5000,
|
||||
"spawnIntervalTicks": 600,
|
||||
"creeps": [1, 1, 1, 1]
|
||||
}
|
||||
],
|
||||
"offeredGems": [0, 1, 2]
|
||||
}
|
||||
]
|
||||
}
|
141
public/assets/missions/03_fork_in_the_road.json
Normal file
@ -0,0 +1,141 @@
|
||||
{
|
||||
"name": "Fork in the Road",
|
||||
"description": "Multiple paths and heavily armored tank units test your defensive strategy.",
|
||||
"mapImage": {
|
||||
"url": "/assets/maps/03_fork_in_the_road.png"
|
||||
},
|
||||
"gameMap": {
|
||||
"rows": 17,
|
||||
"columns": 25,
|
||||
"cells": [
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
|
||||
],
|
||||
"paths": [
|
||||
[
|
||||
[8, 0],
|
||||
[8, 1],
|
||||
[8, 2],
|
||||
[8, 3],
|
||||
[8, 4],
|
||||
[8, 5],
|
||||
[8, 6],
|
||||
[8, 7],
|
||||
[8, 8],
|
||||
[7, 8],
|
||||
[6, 8],
|
||||
[5, 8],
|
||||
[4, 8],
|
||||
[4, 9],
|
||||
[4, 10],
|
||||
[4, 11],
|
||||
[4, 12],
|
||||
[4, 13],
|
||||
[4, 14],
|
||||
[4, 15],
|
||||
[4, 16],
|
||||
[4, 17],
|
||||
[4, 18],
|
||||
[4, 19],
|
||||
[4, 20],
|
||||
[4, 21],
|
||||
[4, 22],
|
||||
[4, 23],
|
||||
[4, 24]
|
||||
],
|
||||
[
|
||||
[8, 0],
|
||||
[8, 1],
|
||||
[8, 2],
|
||||
[8, 3],
|
||||
[8, 4],
|
||||
[8, 5],
|
||||
[8, 6],
|
||||
[8, 7],
|
||||
[8, 8],
|
||||
[9, 8],
|
||||
[10, 8],
|
||||
[11, 8],
|
||||
[12, 8],
|
||||
[12, 9],
|
||||
[12, 10],
|
||||
[12, 11],
|
||||
[12, 12],
|
||||
[12, 13],
|
||||
[12, 14],
|
||||
[12, 15],
|
||||
[12, 16],
|
||||
[12, 17],
|
||||
[12, 18],
|
||||
[12, 19],
|
||||
[12, 20],
|
||||
[12, 21],
|
||||
[12, 22],
|
||||
[12, 23],
|
||||
[12, 24]
|
||||
]
|
||||
]
|
||||
},
|
||||
"rounds": [
|
||||
{
|
||||
"waves": [
|
||||
{
|
||||
"firstCreepSpawnTick": 500,
|
||||
"spawnIntervalTicks": 1000,
|
||||
"creeps": [0, 0, 0, 0, 0]
|
||||
},
|
||||
{
|
||||
"firstCreepSpawnTick": 6000,
|
||||
"spawnIntervalTicks": 800,
|
||||
"creeps": [1, 1, 1, 1]
|
||||
}
|
||||
],
|
||||
"offeredGems": [0, 1, 2]
|
||||
},
|
||||
{
|
||||
"waves": [
|
||||
{
|
||||
"firstCreepSpawnTick": 500,
|
||||
"spawnIntervalTicks": 900,
|
||||
"creeps": [2, 0, 0, 2]
|
||||
},
|
||||
{
|
||||
"firstCreepSpawnTick": 5000,
|
||||
"spawnIntervalTicks": 700,
|
||||
"creeps": [1, 1, 2, 1, 1]
|
||||
}
|
||||
],
|
||||
"offeredGems": [0, 1, 2, 3]
|
||||
},
|
||||
{
|
||||
"waves": [
|
||||
{
|
||||
"firstCreepSpawnTick": 500,
|
||||
"spawnIntervalTicks": 800,
|
||||
"creeps": [2, 1, 0, 2, 1, 0]
|
||||
},
|
||||
{
|
||||
"firstCreepSpawnTick": 6000,
|
||||
"spawnIntervalTicks": 600,
|
||||
"creeps": [2, 2, 1, 1, 2, 2]
|
||||
}
|
||||
],
|
||||
"offeredGems": [0, 1, 2, 3]
|
||||
}
|
||||
]
|
||||
}
|
191
public/assets/missions/04_crossroads.json
Normal file
@ -0,0 +1,191 @@
|
||||
{
|
||||
"name": "Crossroads",
|
||||
"description": "Multiple entry points and intersecting paths require careful tower placement and strategy.",
|
||||
"mapImage": {
|
||||
"url": "/assets/maps/04_crossroads.png"
|
||||
},
|
||||
"gameMap": {
|
||||
"rows": 17,
|
||||
"columns": 25,
|
||||
"cells": [
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
|
||||
],
|
||||
"paths": [
|
||||
[
|
||||
[0, 4],
|
||||
[1, 4],
|
||||
[2, 4],
|
||||
[3, 4],
|
||||
[4, 4],
|
||||
[5, 4],
|
||||
[6, 4],
|
||||
[7, 4],
|
||||
[8, 4],
|
||||
[9, 4],
|
||||
[10, 4],
|
||||
[11, 4],
|
||||
[12, 4],
|
||||
[13, 4],
|
||||
[14, 4],
|
||||
[15, 4],
|
||||
[16, 4],
|
||||
[16, 5],
|
||||
[16, 6],
|
||||
[16, 7],
|
||||
[16, 8],
|
||||
[16, 9],
|
||||
[16, 10],
|
||||
[16, 11],
|
||||
[16, 12],
|
||||
[16, 13],
|
||||
[16, 14],
|
||||
[16, 15],
|
||||
[16, 16],
|
||||
[16, 17],
|
||||
[16, 18],
|
||||
[16, 19],
|
||||
[16, 20],
|
||||
[16, 21],
|
||||
[16, 22],
|
||||
[16, 23],
|
||||
[16, 24]
|
||||
],
|
||||
[
|
||||
[4, 0],
|
||||
[4, 1],
|
||||
[4, 2],
|
||||
[4, 3],
|
||||
[4, 4],
|
||||
[4, 5],
|
||||
[4, 6],
|
||||
[4, 7],
|
||||
[4, 8],
|
||||
[4, 9],
|
||||
[4, 10],
|
||||
[4, 11],
|
||||
[4, 12],
|
||||
[4, 13],
|
||||
[4, 14],
|
||||
[4, 15],
|
||||
[4, 16],
|
||||
[4, 17],
|
||||
[4, 18],
|
||||
[4, 19],
|
||||
[4, 20],
|
||||
[4, 21],
|
||||
[4, 22],
|
||||
[4, 23],
|
||||
[4, 24]
|
||||
],
|
||||
[
|
||||
[0, 12],
|
||||
[1, 12],
|
||||
[2, 12],
|
||||
[3, 12],
|
||||
[4, 12],
|
||||
[5, 12],
|
||||
[6, 12],
|
||||
[7, 12],
|
||||
[8, 12],
|
||||
[9, 12],
|
||||
[10, 12],
|
||||
[11, 12],
|
||||
[12, 12],
|
||||
[13, 12],
|
||||
[14, 12],
|
||||
[15, 12],
|
||||
[16, 12],
|
||||
[16, 13],
|
||||
[16, 14],
|
||||
[16, 15],
|
||||
[16, 16],
|
||||
[16, 17],
|
||||
[16, 18],
|
||||
[16, 19],
|
||||
[16, 20],
|
||||
[16, 21],
|
||||
[16, 22],
|
||||
[16, 23],
|
||||
[16, 24]
|
||||
]
|
||||
]
|
||||
},
|
||||
"rounds": [
|
||||
{
|
||||
"waves": [
|
||||
{
|
||||
"firstCreepSpawnTick": 500,
|
||||
"spawnIntervalTicks": 1000,
|
||||
"creeps": [0, 0, 1, 0, 0]
|
||||
},
|
||||
{
|
||||
"firstCreepSpawnTick": 6000,
|
||||
"spawnIntervalTicks": 800,
|
||||
"creeps": [1, 1, 2, 1, 1]
|
||||
}
|
||||
],
|
||||
"offeredGems": [0, 1, 2]
|
||||
},
|
||||
{
|
||||
"waves": [
|
||||
{
|
||||
"firstCreepSpawnTick": 500,
|
||||
"spawnIntervalTicks": 800,
|
||||
"creeps": [2, 0, 2, 0, 2, 0]
|
||||
},
|
||||
{
|
||||
"firstCreepSpawnTick": 5000,
|
||||
"spawnIntervalTicks": 600,
|
||||
"creeps": [1, 2, 1, 2, 1, 2]
|
||||
}
|
||||
],
|
||||
"offeredGems": [0, 1, 2, 3]
|
||||
},
|
||||
{
|
||||
"waves": [
|
||||
{
|
||||
"firstCreepSpawnTick": 500,
|
||||
"spawnIntervalTicks": 700,
|
||||
"creeps": [2, 1, 0, 2, 1, 0, 2]
|
||||
},
|
||||
{
|
||||
"firstCreepSpawnTick": 6000,
|
||||
"spawnIntervalTicks": 500,
|
||||
"creeps": [2, 2, 1, 1, 2, 2, 1]
|
||||
}
|
||||
],
|
||||
"offeredGems": [0, 1, 2, 3]
|
||||
},
|
||||
{
|
||||
"waves": [
|
||||
{
|
||||
"firstCreepSpawnTick": 500,
|
||||
"spawnIntervalTicks": 600,
|
||||
"creeps": [2, 2, 2, 1, 1, 1, 0, 0]
|
||||
},
|
||||
{
|
||||
"firstCreepSpawnTick": 7000,
|
||||
"spawnIntervalTicks": 400,
|
||||
"creeps": [2, 2, 2, 2, 1, 1, 1, 1]
|
||||
}
|
||||
],
|
||||
"offeredGems": [0, 1, 2, 3]
|
||||
}
|
||||
]
|
||||
}
|
202
public/assets/missions/05_the_maze.json
Normal file
@ -0,0 +1,202 @@
|
||||
{
|
||||
"name": "The Maze",
|
||||
"description": "A complex network of paths requires masterful tower placement and timing.",
|
||||
"mapImage": {
|
||||
"url": "/assets/maps/05_the_maze.png"
|
||||
},
|
||||
"gameMap": {
|
||||
"rows": 17,
|
||||
"columns": 25,
|
||||
"cells": [
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
|
||||
],
|
||||
"paths": [
|
||||
[
|
||||
[0, 3],
|
||||
[1, 3],
|
||||
[2, 3],
|
||||
[3, 3],
|
||||
[4, 3],
|
||||
[4, 4],
|
||||
[4, 5],
|
||||
[4, 6],
|
||||
[4, 7],
|
||||
[4, 8],
|
||||
[4, 9],
|
||||
[4, 10],
|
||||
[4, 11],
|
||||
[4, 12],
|
||||
[5, 12],
|
||||
[6, 12],
|
||||
[7, 12],
|
||||
[8, 12],
|
||||
[8, 13],
|
||||
[8, 14],
|
||||
[8, 15],
|
||||
[8, 16],
|
||||
[8, 17],
|
||||
[8, 18],
|
||||
[8, 19],
|
||||
[8, 20],
|
||||
[8, 21],
|
||||
[8, 22],
|
||||
[8, 23],
|
||||
[8, 24]
|
||||
],
|
||||
[
|
||||
[0, 8],
|
||||
[1, 8],
|
||||
[2, 8],
|
||||
[3, 8],
|
||||
[4, 8],
|
||||
[5, 8],
|
||||
[6, 8],
|
||||
[7, 8],
|
||||
[8, 8],
|
||||
[9, 8],
|
||||
[10, 8],
|
||||
[11, 8],
|
||||
[12, 8],
|
||||
[12, 9],
|
||||
[12, 10],
|
||||
[12, 11],
|
||||
[12, 12],
|
||||
[12, 13],
|
||||
[12, 14],
|
||||
[12, 15],
|
||||
[12, 16],
|
||||
[12, 17],
|
||||
[12, 18],
|
||||
[12, 19],
|
||||
[12, 20],
|
||||
[12, 21],
|
||||
[12, 22],
|
||||
[12, 23],
|
||||
[12, 24]
|
||||
],
|
||||
[
|
||||
[0, 13],
|
||||
[1, 13],
|
||||
[2, 13],
|
||||
[3, 13],
|
||||
[4, 13],
|
||||
[4, 14],
|
||||
[4, 15],
|
||||
[4, 16],
|
||||
[4, 17],
|
||||
[4, 18],
|
||||
[4, 19],
|
||||
[4, 20],
|
||||
[5, 20],
|
||||
[6, 20],
|
||||
[7, 20],
|
||||
[8, 20],
|
||||
[9, 20],
|
||||
[10, 20],
|
||||
[11, 20],
|
||||
[12, 20],
|
||||
[13, 20],
|
||||
[14, 20],
|
||||
[15, 20],
|
||||
[16, 20],
|
||||
[16, 21],
|
||||
[16, 22],
|
||||
[16, 23],
|
||||
[16, 24]
|
||||
]
|
||||
]
|
||||
},
|
||||
"rounds": [
|
||||
{
|
||||
"waves": [
|
||||
{
|
||||
"firstCreepSpawnTick": 500,
|
||||
"spawnIntervalTicks": 800,
|
||||
"creeps": [0, 1, 0, 1, 0, 1]
|
||||
},
|
||||
{
|
||||
"firstCreepSpawnTick": 5000,
|
||||
"spawnIntervalTicks": 600,
|
||||
"creeps": [1, 1, 2, 1, 1, 2]
|
||||
}
|
||||
],
|
||||
"offeredGems": [0, 1, 2, 3]
|
||||
},
|
||||
{
|
||||
"waves": [
|
||||
{
|
||||
"firstCreepSpawnTick": 500,
|
||||
"spawnIntervalTicks": 700,
|
||||
"creeps": [2, 0, 2, 1, 2, 0, 2]
|
||||
},
|
||||
{
|
||||
"firstCreepSpawnTick": 6000,
|
||||
"spawnIntervalTicks": 500,
|
||||
"creeps": [2, 1, 2, 1, 2, 1, 2]
|
||||
}
|
||||
],
|
||||
"offeredGems": [0, 1, 2, 3]
|
||||
},
|
||||
{
|
||||
"waves": [
|
||||
{
|
||||
"firstCreepSpawnTick": 500,
|
||||
"spawnIntervalTicks": 600,
|
||||
"creeps": [2, 2, 1, 1, 0, 2, 2, 1]
|
||||
},
|
||||
{
|
||||
"firstCreepSpawnTick": 6000,
|
||||
"spawnIntervalTicks": 400,
|
||||
"creeps": [2, 2, 2, 1, 1, 1, 2, 2]
|
||||
}
|
||||
],
|
||||
"offeredGems": [0, 1, 2, 3]
|
||||
},
|
||||
{
|
||||
"waves": [
|
||||
{
|
||||
"firstCreepSpawnTick": 500,
|
||||
"spawnIntervalTicks": 500,
|
||||
"creeps": [2, 2, 1, 1, 2, 2, 1, 1, 2]
|
||||
},
|
||||
{
|
||||
"firstCreepSpawnTick": 7000,
|
||||
"spawnIntervalTicks": 300,
|
||||
"creeps": [2, 2, 2, 1, 1, 1, 2, 2, 2]
|
||||
}
|
||||
],
|
||||
"offeredGems": [0, 1, 2, 3]
|
||||
},
|
||||
{
|
||||
"waves": [
|
||||
{
|
||||
"firstCreepSpawnTick": 500,
|
||||
"spawnIntervalTicks": 400,
|
||||
"creeps": [2, 2, 2, 2, 1, 1, 1, 1, 2, 2]
|
||||
},
|
||||
{
|
||||
"firstCreepSpawnTick": 8000,
|
||||
"spawnIntervalTicks": 250,
|
||||
"creeps": [2, 2, 2, 2, 2, 1, 1, 1, 1, 1]
|
||||
}
|
||||
],
|
||||
"offeredGems": [0, 1, 2, 3]
|
||||
}
|
||||
]
|
||||
}
|
221
public/assets/missions/06_multiple_fronts.json
Normal file
@ -0,0 +1,221 @@
|
||||
{
|
||||
"name": "Multi-Defense",
|
||||
"description": "Multiple exits must be defended simultaneously against increasingly difficult waves.",
|
||||
"mapImage": {
|
||||
"url": "/assets/maps/06_multiple_fronts.png"
|
||||
},
|
||||
"gameMap": {
|
||||
"rows": 17,
|
||||
"columns": 25,
|
||||
"cells": [
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],
|
||||
[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]
|
||||
],
|
||||
"paths": [
|
||||
[
|
||||
[8, 0],
|
||||
[8, 1],
|
||||
[8, 2],
|
||||
[8, 3],
|
||||
[8, 4],
|
||||
[8, 5],
|
||||
[8, 6],
|
||||
[8, 7],
|
||||
[8, 8],
|
||||
[7, 8],
|
||||
[6, 8],
|
||||
[5, 8],
|
||||
[4, 8],
|
||||
[4, 9],
|
||||
[4, 10],
|
||||
[4, 11],
|
||||
[4, 12],
|
||||
[4, 13],
|
||||
[4, 14],
|
||||
[4, 15],
|
||||
[4, 16],
|
||||
[4, 17],
|
||||
[4, 18],
|
||||
[4, 19],
|
||||
[4, 20],
|
||||
[4, 21],
|
||||
[4, 22],
|
||||
[4, 23],
|
||||
[4, 24]
|
||||
],
|
||||
[
|
||||
[8, 0],
|
||||
[8, 1],
|
||||
[8, 2],
|
||||
[8, 3],
|
||||
[8, 4],
|
||||
[8, 5],
|
||||
[8, 6],
|
||||
[8, 7],
|
||||
[8, 8],
|
||||
[9, 8],
|
||||
[10, 8],
|
||||
[11, 8],
|
||||
[12, 8],
|
||||
[12, 9],
|
||||
[12, 10],
|
||||
[12, 11],
|
||||
[12, 12],
|
||||
[12, 13],
|
||||
[12, 14],
|
||||
[12, 15],
|
||||
[12, 16],
|
||||
[12, 17],
|
||||
[12, 18],
|
||||
[12, 19],
|
||||
[12, 20],
|
||||
[12, 21],
|
||||
[12, 22],
|
||||
[12, 23],
|
||||
[12, 24]
|
||||
],
|
||||
[
|
||||
[0, 8],
|
||||
[1, 8],
|
||||
[2, 8],
|
||||
[3, 8],
|
||||
[4, 8],
|
||||
[5, 8],
|
||||
[6, 8],
|
||||
[7, 8],
|
||||
[8, 8],
|
||||
[9, 8],
|
||||
[10, 8],
|
||||
[11, 8],
|
||||
[12, 8],
|
||||
[13, 8],
|
||||
[14, 8],
|
||||
[15, 8],
|
||||
[16, 8],
|
||||
[16, 9],
|
||||
[16, 10],
|
||||
[16, 11],
|
||||
[16, 12],
|
||||
[16, 13],
|
||||
[16, 14],
|
||||
[16, 15],
|
||||
[16, 16],
|
||||
[16, 17],
|
||||
[16, 18],
|
||||
[16, 19],
|
||||
[16, 20],
|
||||
[16, 21],
|
||||
[16, 22],
|
||||
[16, 23],
|
||||
[16, 24]
|
||||
]
|
||||
]
|
||||
},
|
||||
"rounds": [
|
||||
{
|
||||
"waves": [
|
||||
{
|
||||
"firstCreepSpawnTick": 500,
|
||||
"spawnIntervalTicks": 700,
|
||||
"creeps": [0, 1, 0, 1, 0, 1, 0]
|
||||
},
|
||||
{
|
||||
"firstCreepSpawnTick": 5000,
|
||||
"spawnIntervalTicks": 500,
|
||||
"creeps": [1, 1, 2, 1, 1, 2, 1]
|
||||
}
|
||||
],
|
||||
"offeredGems": [0, 1, 2, 3]
|
||||
},
|
||||
{
|
||||
"waves": [
|
||||
{
|
||||
"firstCreepSpawnTick": 500,
|
||||
"spawnIntervalTicks": 600,
|
||||
"creeps": [2, 1, 2, 1, 2, 1, 2, 1]
|
||||
},
|
||||
{
|
||||
"firstCreepSpawnTick": 6000,
|
||||
"spawnIntervalTicks": 400,
|
||||
"creeps": [2, 2, 1, 1, 2, 2, 1, 1]
|
||||
}
|
||||
],
|
||||
"offeredGems": [0, 1, 2, 3]
|
||||
},
|
||||
{
|
||||
"waves": [
|
||||
{
|
||||
"firstCreepSpawnTick": 500,
|
||||
"spawnIntervalTicks": 500,
|
||||
"creeps": [2, 2, 1, 1, 2, 2, 1, 1, 2]
|
||||
},
|
||||
{
|
||||
"firstCreepSpawnTick": 6000,
|
||||
"spawnIntervalTicks": 300,
|
||||
"creeps": [2, 2, 2, 1, 1, 1, 2, 2, 2]
|
||||
}
|
||||
],
|
||||
"offeredGems": [0, 1, 2, 3]
|
||||
},
|
||||
{
|
||||
"waves": [
|
||||
{
|
||||
"firstCreepSpawnTick": 500,
|
||||
"spawnIntervalTicks": 400,
|
||||
"creeps": [2, 2, 2, 1, 1, 1, 2, 2, 2, 1]
|
||||
},
|
||||
{
|
||||
"firstCreepSpawnTick": 7000,
|
||||
"spawnIntervalTicks": 250,
|
||||
"creeps": [2, 2, 2, 2, 1, 1, 1, 1, 2, 2]
|
||||
}
|
||||
],
|
||||
"offeredGems": [0, 1, 2, 3]
|
||||
},
|
||||
{
|
||||
"waves": [
|
||||
{
|
||||
"firstCreepSpawnTick": 500,
|
||||
"spawnIntervalTicks": 300,
|
||||
"creeps": [2, 2, 2, 2, 1, 1, 1, 1, 2, 2, 2]
|
||||
},
|
||||
{
|
||||
"firstCreepSpawnTick": 7000,
|
||||
"spawnIntervalTicks": 200,
|
||||
"creeps": [2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 2]
|
||||
}
|
||||
],
|
||||
"offeredGems": [0, 1, 2, 3]
|
||||
},
|
||||
{
|
||||
"waves": [
|
||||
{
|
||||
"firstCreepSpawnTick": 500,
|
||||
"spawnIntervalTicks": 250,
|
||||
"creeps": [2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 2, 2]
|
||||
},
|
||||
{
|
||||
"firstCreepSpawnTick": 8000,
|
||||
"spawnIntervalTicks": 150,
|
||||
"creeps": [2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1]
|
||||
}
|
||||
],
|
||||
"offeredGems": [0, 1, 2, 3]
|
||||
}
|
||||
]
|
||||
}
|
@ -3,8 +3,10 @@
|
||||
"height": 4300,
|
||||
"width": 2
|
||||
},
|
||||
"activeFile": "Mission011.tmx",
|
||||
"activeFile": "tiled/02_the_turn.tmx",
|
||||
"expandedProjectPaths": [
|
||||
"assets/missions",
|
||||
"tiled",
|
||||
"."
|
||||
],
|
||||
"file.lastUsedOpenFilter": "All Files (*)",
|
||||
@ -16,7 +18,7 @@
|
||||
"scaleInDock": 0.33,
|
||||
"scaleInEditor": 1
|
||||
},
|
||||
"/home/koneko/dumping/tiles/TiledTDThree64.tmx": {
|
||||
"C:/home/koneko/dumping/tiles/TiledTDThree64.tmx": {
|
||||
"scale": 0.187625,
|
||||
"selectedLayer": 0,
|
||||
"viewCenter": {
|
||||
@ -36,13 +38,61 @@
|
||||
"scale": 0.5,
|
||||
"selectedLayer": 0,
|
||||
"viewCenter": {
|
||||
"x": 570,
|
||||
"y": 448
|
||||
"x": 959,
|
||||
"y": 543
|
||||
}
|
||||
},
|
||||
"Tileset.tsx": {
|
||||
"scaleInDock": 0.5,
|
||||
"scaleInEditor": 1
|
||||
},
|
||||
"tiled/01_first_steps.tmx": {
|
||||
"scale": 1.6494375,
|
||||
"selectedLayer": 0,
|
||||
"viewCenter": {
|
||||
"x": 799.9696866355956,
|
||||
"y": 544.1248910613466
|
||||
}
|
||||
},
|
||||
"tiled/02_the_turn.tmx": {
|
||||
"scale": 1.6494375,
|
||||
"selectedLayer": 0,
|
||||
"viewCenter": {
|
||||
"x": 799.9696866355956,
|
||||
"y": 544.1248910613466
|
||||
}
|
||||
},
|
||||
"tiled/03_fork_in_the_road.tmx": {
|
||||
"scale": 1.6494375,
|
||||
"selectedLayer": 0,
|
||||
"viewCenter": {
|
||||
"x": 799.9696866355956,
|
||||
"y": 544.1248910613466
|
||||
}
|
||||
},
|
||||
"tiled/04_crossroads.tmx": {
|
||||
"scale": 1.6494375,
|
||||
"selectedLayer": 0,
|
||||
"viewCenter": {
|
||||
"x": 799.9696866355956,
|
||||
"y": 544.1248910613466
|
||||
}
|
||||
},
|
||||
"tiled/05_the_maze.tmx": {
|
||||
"scale": 1.6494375,
|
||||
"selectedLayer": 0,
|
||||
"viewCenter": {
|
||||
"x": 799.9696866355956,
|
||||
"y": 544.1248910613466
|
||||
}
|
||||
},
|
||||
"tiled/Mission01.tmx": {
|
||||
"scale": 0.5,
|
||||
"selectedLayer": 0,
|
||||
"viewCenter": {
|
||||
"x": 799,
|
||||
"y": 543
|
||||
}
|
||||
}
|
||||
},
|
||||
"last.externalTilesetPath": "/home/koneko/Programing/js/towerdefense/public",
|
||||
@ -50,17 +100,22 @@
|
||||
"map.lastUsedFormat": "tmx",
|
||||
"map.tileHeight": 64,
|
||||
"map.tileWidth": 64,
|
||||
"map.width": 30,
|
||||
"map.width": 25,
|
||||
"openFiles": [
|
||||
"Tileset.tsx",
|
||||
"Mission011.tmx"
|
||||
"Mission011.tmx",
|
||||
"tiled/Mission01.tmx",
|
||||
"tiled/02_the_turn.tmx",
|
||||
"tiled/01_first_steps.tmx"
|
||||
],
|
||||
"project": "maps.tiled-project",
|
||||
"recentFiles": [
|
||||
"Tileset.tsx",
|
||||
"Mission011.tmx",
|
||||
"tiled/Mission01.tmx",
|
||||
"tiled/01_first_steps.tmx",
|
||||
"tiled/02_the_turn.tmx",
|
||||
"Tileset.tsx",
|
||||
"Mission01.tmx",
|
||||
"/home/koneko/dumping/tiles/TiledTDThree64.tmx"
|
||||
"C:/home/koneko/dumping/tiles/TiledTDThree64.tmx"
|
||||
],
|
||||
"tileset.lastUsedFilter": "Tiled tileset files (*.tsx *.xml)"
|
||||
}
|
||||
|
25
public/tiled/01_first_steps.tmx
Normal file
@ -0,0 +1,25 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<map version="1.10" tiledversion="1.11.2" orientation="orthogonal" renderorder="right-down" width="25" height="17" tilewidth="64" tileheight="64" infinite="0" nextlayerid="2" nextobjectid="1">
|
||||
<tileset firstgid="1" source="../Tileset.tsx"/>
|
||||
<layer id="1" name="Tile Layer 1" width="25" height="17">
|
||||
<data encoding="csv">
|
||||
15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
|
||||
15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
|
||||
15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
|
||||
15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
|
||||
15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
|
||||
15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
|
||||
15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
|
||||
15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
|
||||
18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
|
||||
15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
|
||||
15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
|
||||
15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
|
||||
15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
|
||||
15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
|
||||
15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
|
||||
15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
|
||||
15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15
|
||||
</data>
|
||||
</layer>
|
||||
</map>
|
25
public/tiled/02_the_turn.tmx
Normal file
@ -0,0 +1,25 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<map version="1.10" tiledversion="1.11.2" orientation="orthogonal" renderorder="right-down" width="25" height="17" tilewidth="64" tileheight="64" infinite="0" nextlayerid="2" nextobjectid="1">
|
||||
<tileset firstgid="1" source="../Tileset.tsx"/>
|
||||
<layer id="1" name="Tile Layer 1" width="25" height="17">
|
||||
<data encoding="csv">
|
||||
15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
|
||||
15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
|
||||
15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
|
||||
15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
|
||||
18,18,18,18,18,18,18,18,18,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
|
||||
15,15,15,15,15,15,15,15,18,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
|
||||
15,15,15,15,15,15,15,15,18,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
|
||||
15,15,15,15,15,15,15,15,18,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
|
||||
15,15,15,15,15,15,15,15,18,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
|
||||
15,15,15,15,15,15,15,15,18,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
|
||||
15,15,15,15,15,15,15,15,18,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
|
||||
15,15,15,15,15,15,15,15,18,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
|
||||
15,15,15,15,15,15,15,15,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
|
||||
15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
|
||||
15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
|
||||
15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
|
||||
15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15
|
||||
</data>
|
||||
</layer>
|
||||
</map>
|
25
public/tiled/03_fork_in_the_road.tmx
Normal file
@ -0,0 +1,25 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<map version="1.10" tiledversion="1.11.2" orientation="orthogonal" renderorder="right-down" width="25" height="17" tilewidth="64" tileheight="64" infinite="0" nextlayerid="2" nextobjectid="1">
|
||||
<tileset firstgid="1" source="../Tileset.tsx"/>
|
||||
<layer id="1" name="Tile Layer 1" width="25" height="17">
|
||||
<data encoding="csv">
|
||||
15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
|
||||
15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
|
||||
15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
|
||||
15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
|
||||
15,15,15,15,15,15,15,15,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
|
||||
15,15,15,15,15,15,15,15,18,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
|
||||
15,15,15,15,15,15,15,15,18,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
|
||||
15,15,15,15,15,15,15,15,18,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
|
||||
18,18,18,18,18,18,18,18,18,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
|
||||
15,15,15,15,15,15,15,15,18,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
|
||||
15,15,15,15,15,15,15,15,18,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
|
||||
15,15,15,15,15,15,15,15,18,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
|
||||
15,15,15,15,15,15,15,15,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
|
||||
15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
|
||||
15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
|
||||
15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
|
||||
15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15
|
||||
</data>
|
||||
</layer>
|
||||
</map>
|
25
public/tiled/04_crossroads.tmx
Normal file
@ -0,0 +1,25 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<map version="1.10" tiledversion="1.11.2" orientation="orthogonal" renderorder="right-down" width="25" height="17" tilewidth="64" tileheight="64" infinite="0" nextlayerid="2" nextobjectid="1">
|
||||
<tileset firstgid="1" source="../Tileset.tsx"/>
|
||||
<layer id="1" name="Tile Layer 1" width="25" height="17">
|
||||
<data encoding="csv">
|
||||
15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
|
||||
15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
|
||||
15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
|
||||
15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
|
||||
18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
|
||||
15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
|
||||
15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
|
||||
15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
|
||||
15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
|
||||
15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
|
||||
15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
|
||||
15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
|
||||
18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
|
||||
15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,18,15,15,15,15,15,15,15,15,
|
||||
15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,18,15,15,15,15,15,15,15,15,
|
||||
15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,18,15,15,15,15,15,15,15,15,
|
||||
15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,18,18,18,18,18,18,18,18,18
|
||||
</data>
|
||||
</layer>
|
||||
</map>
|
25
public/tiled/05_the_maze.tmx
Normal file
@ -0,0 +1,25 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<map version="1.10" tiledversion="1.11.2" orientation="orthogonal" renderorder="right-down" width="25" height="17" tilewidth="64" tileheight="64" infinite="0" nextlayerid="2" nextobjectid="1">
|
||||
<tileset firstgid="1" source="../Tileset.tsx"/>
|
||||
<layer id="1" name="Tile Layer 1" width="25" height="17">
|
||||
<data encoding="csv">
|
||||
15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
|
||||
15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
|
||||
15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
|
||||
18,18,18,18,18,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
|
||||
15,15,15,15,18,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
|
||||
15,15,15,15,18,15,15,15,15,15,15,15,18,15,15,15,15,15,15,15,15,15,15,15,15,
|
||||
15,15,15,15,18,15,15,15,15,15,15,15,18,15,15,15,15,15,15,15,15,15,15,15,15,
|
||||
15,15,15,15,18,15,15,15,15,15,15,15,18,15,15,15,15,15,15,15,15,15,15,15,15,
|
||||
18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
|
||||
15,15,15,15,15,15,15,15,15,15,15,15,18,15,15,15,15,15,15,15,15,15,15,15,15,
|
||||
15,15,15,15,15,15,15,15,15,15,15,15,18,15,15,15,15,15,15,15,15,15,15,15,15,
|
||||
15,15,15,15,15,15,15,15,15,15,15,15,18,15,15,15,15,15,15,15,15,15,15,15,15,
|
||||
15,15,15,15,18,15,15,15,15,15,15,15,18,15,15,15,15,15,15,15,15,15,15,15,15,
|
||||
18,18,18,18,18,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
|
||||
15,15,15,15,18,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
|
||||
15,15,15,15,18,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,18,18,18,18,18,
|
||||
15,15,15,15,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,15,15,15,15
|
||||
</data>
|
||||
</layer>
|
||||
</map>
|
25
public/tiled/06_multiple_fronts.tmx
Normal file
@ -0,0 +1,25 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<map version="1.10" tiledversion="1.11.2" orientation="orthogonal" renderorder="right-down" width="25" height="17" tilewidth="64" tileheight="64" infinite="0" nextlayerid="2" nextobjectid="1">
|
||||
<tileset firstgid="1" source="../Tileset.tsx"/>
|
||||
<layer id="1" name="Tile Layer 1" width="25" height="17">
|
||||
<data encoding="csv">
|
||||
15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
|
||||
15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
|
||||
15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
|
||||
15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
|
||||
15,15,15,15,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
|
||||
15,15,15,15,15,15,15,15,18,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
|
||||
15,15,15,15,15,15,15,15,18,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
|
||||
15,15,15,15,15,15,15,15,18,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
|
||||
18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,
|
||||
15,15,15,15,15,15,15,15,15,15,15,15,18,15,15,15,15,15,15,15,15,15,15,15,15,
|
||||
15,15,15,15,15,15,15,15,15,15,15,15,18,15,15,15,15,15,15,15,15,15,15,15,15,
|
||||
15,15,15,15,15,15,15,15,15,15,15,15,18,15,15,15,15,15,15,15,15,15,15,15,15,
|
||||
15,15,15,15,15,15,15,15,15,15,15,15,18,15,15,15,15,15,15,15,15,15,15,15,15,
|
||||
15,15,15,15,15,15,15,15,15,15,15,15,18,15,15,15,15,15,15,15,15,15,15,15,15,
|
||||
15,15,15,15,15,15,15,15,15,15,15,15,18,15,15,15,15,15,15,15,15,15,15,15,15,
|
||||
15,15,15,15,15,15,15,15,15,15,15,15,18,15,15,15,18,18,18,18,18,18,18,18,18,
|
||||
15,15,15,15,15,15,15,15,15,15,15,15,18,15,15,15,18,15,15,15,15,15,15,15,15
|
||||
</data>
|
||||
</layer>
|
||||
</map>
|
25
public/tiled/Mission01.tmx
Normal file
@ -0,0 +1,25 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<map version="1.10" tiledversion="1.11.2" orientation="orthogonal" renderorder="right-down" width="25" height="17" tilewidth="64" tileheight="64" infinite="0" nextlayerid="2" nextobjectid="1">
|
||||
<tileset firstgid="1" source="../Tileset.tsx"/>
|
||||
<layer id="1" name="Tile Layer 1" width="25" height="17">
|
||||
<data encoding="csv">
|
||||
15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
|
||||
15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
|
||||
15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,
|
||||
4,4,4,4,4,4,4,4,4,4,4,4,4,5,15,15,15,15,15,15,15,15,15,15,15,
|
||||
18,18,18,18,18,18,18,18,18,18,18,18,18,19,15,15,15,15,15,3,4,4,4,4,4,
|
||||
32,32,32,32,32,32,32,32,32,32,32,7,18,19,15,15,15,15,15,17,18,18,18,18,18,
|
||||
15,15,15,15,15,15,15,15,15,15,15,17,18,19,15,15,15,15,15,17,18,6,32,32,32,
|
||||
15,15,15,15,15,15,15,15,15,15,15,17,18,19,15,15,15,15,15,17,18,19,15,15,15,
|
||||
15,15,15,15,15,15,15,15,15,15,15,17,18,19,15,15,15,15,15,17,18,19,15,15,15,
|
||||
15,15,3,4,4,4,4,4,4,4,4,21,18,19,15,15,15,15,15,17,18,19,15,15,15,
|
||||
15,15,17,18,18,18,18,18,18,18,18,18,18,19,15,15,15,15,15,17,18,19,15,15,15,
|
||||
15,15,17,18,6,32,32,32,32,32,32,32,32,33,15,15,15,15,15,17,18,19,15,15,15,
|
||||
15,15,17,18,19,15,15,15,15,15,15,15,15,15,15,15,15,15,15,17,18,19,15,15,15,
|
||||
15,15,17,18,20,4,4,4,4,4,4,4,4,4,4,4,4,4,4,21,18,19,15,15,15,
|
||||
15,15,17,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,19,15,15,15,
|
||||
15,15,31,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,32,33,15,15,15,
|
||||
15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15
|
||||
</data>
|
||||
</layer>
|
||||
</map>
|
@ -35,7 +35,7 @@ export default class GameAssets {
|
||||
public static PlusIconTexture: PIXI.Texture;
|
||||
public static GemAmountIcons: PIXI.Texture[] = [];
|
||||
|
||||
public static Missions: MissionDefinition[];
|
||||
public static Missions: MissionDefinition[] = [];
|
||||
public static MissionBackgrounds: PIXI.Texture[] = [];
|
||||
public static Towers: TowerDefinition[];
|
||||
public static Creeps: CreepDefinition[];
|
||||
@ -152,7 +152,13 @@ export default class GameAssets {
|
||||
|
||||
private static async LoadMissions() {
|
||||
// When adding missions, make sure to keep order.
|
||||
GameAssets.Missions = [await this.LoadMission('./assets/missions/mission_01.json')];
|
||||
await this.LoadMission('./assets/missions/mission_01.json');
|
||||
await this.LoadMission('./assets/missions/01_first_steps.json');
|
||||
await this.LoadMission('./assets/missions/02_the_turn.json');
|
||||
await this.LoadMission('./assets/missions/03_fork_in_the_road.json');
|
||||
await this.LoadMission('./assets/missions/04_crossroads.json');
|
||||
await this.LoadMission('./assets/missions/05_the_maze.json');
|
||||
await this.LoadMission('./assets/missions/06_multiple_fronts.json');
|
||||
}
|
||||
|
||||
private static async LoadTowers() {
|
||||
@ -172,13 +178,8 @@ export default class GameAssets {
|
||||
private static async LoadMission(missionUrl: string) {
|
||||
const res = await fetch(missionUrl);
|
||||
const mission = await res.json();
|
||||
await this.LoadBackground(mission.mapImage.url);
|
||||
return mission;
|
||||
}
|
||||
|
||||
private static async LoadBackground(backgroundUrl: string) {
|
||||
let index = this.MissionBackgrounds.length - 1;
|
||||
if (index == -1) index = 0;
|
||||
this.MissionBackgrounds[index] = await this.Load(backgroundUrl);
|
||||
console.log(`Loading mission: ${missionUrl} [${mission.name} / ${mission.mapImage.url}]`);
|
||||
GameAssets.Missions.push(mission);
|
||||
GameAssets.MissionBackgrounds.push(await this.Load(mission.mapImage.url));
|
||||
}
|
||||
}
|
||||
|
@ -13,12 +13,18 @@ export default class HighScoreDialog extends ModalDialogBase {
|
||||
private dialogCaption: PIXI.Text;
|
||||
private highScore: HighScoreManager;
|
||||
|
||||
constructor(missionName: string, nextMissionAvailable: boolean) {
|
||||
constructor(missionName: string, retryPossible: boolean, nextMissionAvailable: boolean) {
|
||||
super(
|
||||
nextMissionAvailable
|
||||
? [HighScoreDialogButtons.Retry, HighScoreDialogButtons.NextMission, HighScoreDialogButtons.MainMenu]
|
||||
: [HighScoreDialogButtons.Retry, HighScoreDialogButtons.MainMenu],
|
||||
nextMissionAvailable ? HighScoreDialogButtons.NextMission : HighScoreDialogButtons.Retry,
|
||||
[
|
||||
...(retryPossible ? [HighScoreDialogButtons.Retry] : []),
|
||||
...(nextMissionAvailable ? [HighScoreDialogButtons.NextMission] : []),
|
||||
HighScoreDialogButtons.MainMenu,
|
||||
],
|
||||
retryPossible
|
||||
? HighScoreDialogButtons.Retry
|
||||
: nextMissionAvailable
|
||||
? HighScoreDialogButtons.NextMission
|
||||
: HighScoreDialogButtons.MainMenu,
|
||||
HighScoreDialogButtons.MainMenu
|
||||
);
|
||||
this.highScore = new HighScoreManager(missionName);
|
||||
|
@ -247,7 +247,11 @@ export class GameScene extends Scene {
|
||||
private async ShowEndgameDialog(lost) {
|
||||
const endGameDialog = new EndGameDialog(this.mission.name, this.MissionStats, lost);
|
||||
await endGameDialog.show();
|
||||
const highScore = new HighScoreDialog(this.mission.name, this.missionIndex + 1 < GameAssets.Missions.length);
|
||||
const highScore = new HighScoreDialog(
|
||||
this.mission.name,
|
||||
lost,
|
||||
!lost && this.missionIndex + 1 < GameAssets.Missions.length
|
||||
);
|
||||
const result = await highScore.show();
|
||||
if (result === HighScoreDialogButtons.MainMenu) {
|
||||
this.ReturnToMain();
|
||||
|