add script to fix bad tiles

This commit is contained in:
Zutatensuppe 2020-12-24 13:56:14 +01:00
parent 35364c1058
commit 5f890b40f5
3 changed files with 48 additions and 14 deletions

View file

@ -660,6 +660,7 @@ export default {
getFirstOwnedTile, getFirstOwnedTile,
getTileDrawOffset, getTileDrawOffset,
getTileDrawSize, getTileDrawSize,
getFinalTilePos,
getStartTs, getStartTs,
getFinishTs, getFinishTs,
handleInput, handleInput,

27
scripts/fix_tiles.js Normal file
View file

@ -0,0 +1,27 @@
import fs from 'fs'
import GameCommon from '../common/GameCommon.js'
import Game from '../server/Game.js'
function fix_tiles(gameId) {
Game.loadAllGames()
let changed = false
const tiles = GameCommon.getTilesSortedByZIndex(gameId)
for (let tile of tiles) {
if (tile.owner === -1) {
const p = GameCommon.getFinalTilePos(gameId, tile.idx)
if (p.x === tile.pos.x && p.y === tile.pos.y) {
console.log('all good', tile.pos)
} else {
console.log('bad tile pos', tile.pos, 'should be: ', p)
tile.pos = p
GameCommon.setTile(gameId, tile.idx, tile)
changed = true
}
}
}
if (changed) {
Game.persistGame(gameId)
}
}
fix_tiles(process.argv[2])

View file

@ -105,27 +105,33 @@ function handleInput(gameId, playerId, input, ts) {
} }
function persistChangedGames() { function persistChangedGames() {
for (const game of GameCommon.getAllGames()) { for (const gameId of Object.keys(changedGames)) {
if (game.id in changedGames) { persistGame(gameId)
delete changedGames[game.id]
fs.writeFileSync(`${DATA_DIR}/${game.id}.json`, JSON.stringify({
id: game.id,
rng: {
type: game.rng.type,
obj: Rng.serialize(game.rng.obj),
},
puzzle: game.puzzle,
players: game.players,
}))
console.info(`[INFO] persisted game ${game.id}`)
}
} }
} }
function persistGame(gameId) {
const game = GameCommon.get(gameId)
if (game.id in changedGames) {
delete changedGames[game.id]
}
fs.writeFileSync(`${DATA_DIR}/${game.id}.json`, JSON.stringify({
id: game.id,
rng: {
type: game.rng.type,
obj: Rng.serialize(game.rng.obj),
},
puzzle: game.puzzle,
players: game.players,
}))
console.info(`[INFO] persisted game ${game.id}`)
}
export default { export default {
createGameObject, createGameObject,
loadAllGames, loadAllGames,
persistChangedGames, persistChangedGames,
persistGame,
createGame, createGame,
addPlayer, addPlayer,
handleInput, handleInput,