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,
|
"height": 4300,
|
||||||
"width": 2
|
"width": 2
|
||||||
},
|
},
|
||||||
"activeFile": "Mission011.tmx",
|
"activeFile": "tiled/02_the_turn.tmx",
|
||||||
"expandedProjectPaths": [
|
"expandedProjectPaths": [
|
||||||
|
"assets/missions",
|
||||||
|
"tiled",
|
||||||
"."
|
"."
|
||||||
],
|
],
|
||||||
"file.lastUsedOpenFilter": "All Files (*)",
|
"file.lastUsedOpenFilter": "All Files (*)",
|
||||||
@ -16,7 +18,7 @@
|
|||||||
"scaleInDock": 0.33,
|
"scaleInDock": 0.33,
|
||||||
"scaleInEditor": 1
|
"scaleInEditor": 1
|
||||||
},
|
},
|
||||||
"/home/koneko/dumping/tiles/TiledTDThree64.tmx": {
|
"C:/home/koneko/dumping/tiles/TiledTDThree64.tmx": {
|
||||||
"scale": 0.187625,
|
"scale": 0.187625,
|
||||||
"selectedLayer": 0,
|
"selectedLayer": 0,
|
||||||
"viewCenter": {
|
"viewCenter": {
|
||||||
@ -36,13 +38,61 @@
|
|||||||
"scale": 0.5,
|
"scale": 0.5,
|
||||||
"selectedLayer": 0,
|
"selectedLayer": 0,
|
||||||
"viewCenter": {
|
"viewCenter": {
|
||||||
"x": 570,
|
"x": 959,
|
||||||
"y": 448
|
"y": 543
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"Tileset.tsx": {
|
"Tileset.tsx": {
|
||||||
"scaleInDock": 0.5,
|
"scaleInDock": 0.5,
|
||||||
"scaleInEditor": 1
|
"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",
|
"last.externalTilesetPath": "/home/koneko/Programing/js/towerdefense/public",
|
||||||
@ -50,17 +100,22 @@
|
|||||||
"map.lastUsedFormat": "tmx",
|
"map.lastUsedFormat": "tmx",
|
||||||
"map.tileHeight": 64,
|
"map.tileHeight": 64,
|
||||||
"map.tileWidth": 64,
|
"map.tileWidth": 64,
|
||||||
"map.width": 30,
|
"map.width": 25,
|
||||||
"openFiles": [
|
"openFiles": [
|
||||||
"Tileset.tsx",
|
"Mission011.tmx",
|
||||||
"Mission011.tmx"
|
"tiled/Mission01.tmx",
|
||||||
|
"tiled/02_the_turn.tmx",
|
||||||
|
"tiled/01_first_steps.tmx"
|
||||||
],
|
],
|
||||||
"project": "maps.tiled-project",
|
"project": "maps.tiled-project",
|
||||||
"recentFiles": [
|
"recentFiles": [
|
||||||
"Tileset.tsx",
|
|
||||||
"Mission011.tmx",
|
"Mission011.tmx",
|
||||||
|
"tiled/Mission01.tmx",
|
||||||
|
"tiled/01_first_steps.tmx",
|
||||||
|
"tiled/02_the_turn.tmx",
|
||||||
|
"Tileset.tsx",
|
||||||
"Mission01.tmx",
|
"Mission01.tmx",
|
||||||
"/home/koneko/dumping/tiles/TiledTDThree64.tmx"
|
"C:/home/koneko/dumping/tiles/TiledTDThree64.tmx"
|
||||||
],
|
],
|
||||||
"tileset.lastUsedFilter": "Tiled tileset files (*.tsx *.xml)"
|
"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 PlusIconTexture: PIXI.Texture;
|
||||||
public static GemAmountIcons: PIXI.Texture[] = [];
|
public static GemAmountIcons: PIXI.Texture[] = [];
|
||||||
|
|
||||||
public static Missions: MissionDefinition[];
|
public static Missions: MissionDefinition[] = [];
|
||||||
public static MissionBackgrounds: PIXI.Texture[] = [];
|
public static MissionBackgrounds: PIXI.Texture[] = [];
|
||||||
public static Towers: TowerDefinition[];
|
public static Towers: TowerDefinition[];
|
||||||
public static Creeps: CreepDefinition[];
|
public static Creeps: CreepDefinition[];
|
||||||
@ -152,7 +152,13 @@ export default class GameAssets {
|
|||||||
|
|
||||||
private static async LoadMissions() {
|
private static async LoadMissions() {
|
||||||
// When adding missions, make sure to keep order.
|
// 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() {
|
private static async LoadTowers() {
|
||||||
@ -172,13 +178,8 @@ export default class GameAssets {
|
|||||||
private static async LoadMission(missionUrl: string) {
|
private static async LoadMission(missionUrl: string) {
|
||||||
const res = await fetch(missionUrl);
|
const res = await fetch(missionUrl);
|
||||||
const mission = await res.json();
|
const mission = await res.json();
|
||||||
await this.LoadBackground(mission.mapImage.url);
|
console.log(`Loading mission: ${missionUrl} [${mission.name} / ${mission.mapImage.url}]`);
|
||||||
return mission;
|
GameAssets.Missions.push(mission);
|
||||||
}
|
GameAssets.MissionBackgrounds.push(await this.Load(mission.mapImage.url));
|
||||||
|
|
||||||
private static async LoadBackground(backgroundUrl: string) {
|
|
||||||
let index = this.MissionBackgrounds.length - 1;
|
|
||||||
if (index == -1) index = 0;
|
|
||||||
this.MissionBackgrounds[index] = await this.Load(backgroundUrl);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -13,12 +13,18 @@ export default class HighScoreDialog extends ModalDialogBase {
|
|||||||
private dialogCaption: PIXI.Text;
|
private dialogCaption: PIXI.Text;
|
||||||
private highScore: HighScoreManager;
|
private highScore: HighScoreManager;
|
||||||
|
|
||||||
constructor(missionName: string, nextMissionAvailable: boolean) {
|
constructor(missionName: string, retryPossible: boolean, nextMissionAvailable: boolean) {
|
||||||
super(
|
super(
|
||||||
nextMissionAvailable
|
[
|
||||||
? [HighScoreDialogButtons.Retry, HighScoreDialogButtons.NextMission, HighScoreDialogButtons.MainMenu]
|
...(retryPossible ? [HighScoreDialogButtons.Retry] : []),
|
||||||
: [HighScoreDialogButtons.Retry, HighScoreDialogButtons.MainMenu],
|
...(nextMissionAvailable ? [HighScoreDialogButtons.NextMission] : []),
|
||||||
nextMissionAvailable ? HighScoreDialogButtons.NextMission : HighScoreDialogButtons.Retry,
|
HighScoreDialogButtons.MainMenu,
|
||||||
|
],
|
||||||
|
retryPossible
|
||||||
|
? HighScoreDialogButtons.Retry
|
||||||
|
: nextMissionAvailable
|
||||||
|
? HighScoreDialogButtons.NextMission
|
||||||
|
: HighScoreDialogButtons.MainMenu,
|
||||||
HighScoreDialogButtons.MainMenu
|
HighScoreDialogButtons.MainMenu
|
||||||
);
|
);
|
||||||
this.highScore = new HighScoreManager(missionName);
|
this.highScore = new HighScoreManager(missionName);
|
||||||
|
@ -247,7 +247,11 @@ export class GameScene extends Scene {
|
|||||||
private async ShowEndgameDialog(lost) {
|
private async ShowEndgameDialog(lost) {
|
||||||
const endGameDialog = new EndGameDialog(this.mission.name, this.MissionStats, lost);
|
const endGameDialog = new EndGameDialog(this.mission.name, this.MissionStats, lost);
|
||||||
await endGameDialog.show();
|
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();
|
const result = await highScore.show();
|
||||||
if (result === HighScoreDialogButtons.MainMenu) {
|
if (result === HighScoreDialogButtons.MainMenu) {
|
||||||
this.ReturnToMain();
|
this.ReturnToMain();
|
||||||
|