UNPKG

@real_one_chess_king/game-logic

Version:
57 lines 2 kB
import { AffectType, } from "../affect/affect.types"; const coordinateSeparator = "_"; export function serializeXY(x, y) { return `${x}${coordinateSeparator}${y}`; } export function serializeCoordinate(c) { return serializeXY(c[0], c[1]); } const affectsSeparator = "#"; const serializationOrder = [AffectType.move, AffectType.transformation]; export 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); } export function serializeAffect(a) { switch (a.type) { case AffectType.move: return serializeMovementAffect(a); case AffectType.transformation: return serializeTransformationAffect(a); default: throw new Error("not found affect serialize"); } } export function serializeMovementAffect(a) { return serializeToCoordinate(a.to); } export function serializeToCoordinate(to) { return `${to[0]}${coordinateSeparator}${to[1]}`; } export 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