UNPKG

@real_one_chess_king/game-logic

Version:
66 lines 2.45 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.serializeXY = serializeXY; exports.serializeCoordinate = serializeCoordinate; exports.serializeAffects = serializeAffects; exports.serializeAffect = serializeAffect; exports.serializeMovementAffect = serializeMovementAffect; exports.serializeToCoordinate = serializeToCoordinate; exports.serializeTransformationAffect = serializeTransformationAffect; const affect_types_1 = require("../affect/affect.types"); const coordinateSeparator = "_"; function serializeXY(x, y) { return `${x}${coordinateSeparator}${y}`; } function serializeCoordinate(c) { return serializeXY(c[0], c[1]); } const affectsSeparator = "#"; const serializationOrder = [affect_types_1.AffectType.move, affect_types_1.AffectType.transformation]; function serializeAffects(affects) { const affectsWithChoice = affects.filter((a) => a.userSelected); return affectsWithChoice .sort((a, b) => { return (serializationOrder.indexOf(a.type) - serializationOrder.indexOf(b.type)); }) .map((a) => serializeAffect(a)) .join(affectsSeparator); } function serializeAffect(a) { switch (a.type) { case affect_types_1.AffectType.move: return serializeMovementAffect(a); case affect_types_1.AffectType.transformation: return serializeTransformationAffect(a); default: throw new Error("not found affect serialize"); } } function serializeMovementAffect(a) { return serializeToCoordinate(a.to); } function serializeToCoordinate(to) { return `${to[0]}${coordinateSeparator}${to[1]}`; } function serializeTransformationAffect(a) { return `${a.destPieceType[0]}`; } // export function deserializeAffects(serialized: string): Affects { // return serialized.split(affectsSeparator).map((a) => deserializeAffect(a)); // } // export function parseToKey(key: Hash): TurnChoosableData { // if (key.length > 3) { // const [xy, pieceCode] = key.split("-"); // const [x, y] = xy.split(","); // return [ // Number(x), // Number(y), // postfixToPieceType[pieceCode as keyof typeof postfixToPieceType], // ] as TurnChoosableData; // } // return key.split(",").map(Number) as TurnChoosableData; // } // export function parseKey(key: Hash): Coordinate { // return key.split(",").map(Number) as Coordinate; // } //# sourceMappingURL=moves-tree.utils.js.map