43 lines
1.5 KiB
TypeScript
43 lines
1.5 KiB
TypeScript
import { GameEngine } from '../src/game/engine.ts'
|
|
import { store } from '../src/game/store.ts'
|
|
|
|
const eng = new GameEngine()
|
|
eng.startGame('normal')
|
|
|
|
// irgendein blockierendes Hindernis finden
|
|
const blocked = [...eng.blockedCells]
|
|
console.log('blockierte Zellen:', blocked.length)
|
|
const [tx, ty] = blocked[0].split(',').map(Number)
|
|
const item = eng.obstacleAt(tx, ty)!
|
|
console.log('Hindernis:', item.type, 'auf', tx, ty, '| canPlace davor:', eng.canPlace(tx, ty))
|
|
|
|
// per Klick auswählen (Klick auf Zellmitte); store wird in step() synchronisiert
|
|
eng.click(tx * 48 + 24, ty * 48 + 24)
|
|
eng.step(0)
|
|
console.log('Panel offen:', store.obstacle !== null, '| Typ:', store.obstacle?.type, '| Kosten:', store.obstacle?.cost)
|
|
|
|
// zu wenig Gold -> Ablehnung
|
|
eng.money = 10
|
|
eng.removeSelectedObstacle()
|
|
console.log('abgelehnt bei 10 Gold: Panel noch offen =', store.obstacle !== null, '| Gold =', eng.money)
|
|
|
|
// genug Gold -> Entfernen klappt
|
|
eng.money = 500
|
|
eng.removeSelectedObstacle()
|
|
eng.step(0)
|
|
console.log(
|
|
'entfernt: Panel zu =', store.obstacle === null,
|
|
'| Gold -' + (500 - eng.money),
|
|
'| canPlace danach:', eng.canPlace(tx, ty),
|
|
'| Dekor weg:', eng.obstacleAt(tx, ty) === undefined,
|
|
)
|
|
|
|
// Turm auf freigewordener Zelle bauen
|
|
console.log('Turmbau auf Zelle:', eng.placeTower('arrow', tx, ty))
|
|
|
|
// Neustart stellt Hindernisse wieder her
|
|
eng.startGame('normal')
|
|
console.log(
|
|
'nach Neustart wieder blockiert:', eng.blockedCells.has(tx + ',' + ty),
|
|
'| Anzahl wie vorher:', eng.blockedCells.size === blocked.length,
|
|
)
|