Skip to the content

Houseki宝石

Run five native gem and stone engines, play measured challenges and lessons, and save deterministic games.

Houseki (宝石) is Japanese for a gem or precious stone. About the name

Contents

Reference · Gem Swap

GameStatustype

A compact native status derived from the authoritative state for a host’s labels.

Import it

import type { GameStatus } from "@johnmorrisdotca/houseki/gem-swap";

Definition

interface GameStatus {
    readonly phase: GamePhase;
    readonly score: number;
    readonly moves: number;
    readonly legalMoveCount: number;
    readonly usedFallback: boolean;
    readonly availableToolCount: number;
    readonly inventory: ToolInventory;
    readonly toolProgress: number;
    readonly toolAwardCursor: number;
    readonly assisted: boolean;
    readonly blackHoleCharges: 0 | 1;
    readonly blackHoleProgress: number;
    readonly blackHole: BlackHolePortal | null;
    readonly mode: GameMode;
    readonly outcome: GameOutcome;
    readonly remainingMoves: number | null;
    readonly elapsedMs: number;
    readonly remainingMs: number | null;
    readonly goals: readonly Goal[];
    readonly goalProgress: readonly {
        readonly kind: Goal['kind'];
        readonly current: number;
        readonly target: number;
        readonly colour?: GemColour;
        readonly complete: boolean;
    }[];
    readonly bestChain: number;
}

Members

NameTypeDescription
phaseGamePhase
scorenumber
movesnumber
legalMoveCountnumber
usedFallbackboolean
availableToolCountnumber
inventoryReadonly<Record<OrdinaryToolKind, number>>
toolProgressnumber
toolAwardCursornumber
assistedboolean
blackHoleCharges0 | 1
blackHoleProgressnumber
blackHoleBlackHolePortal | null
modeGameMode
outcomeGameOutcome
remainingMovesnumber | null
elapsedMsnumber
remainingMsnumber | null
goalsreadonly Goal[]
goalProgressreadonly { readonly kind: Goal["kind"]; readonly current: number; readonly target: number; readonly colour?: GemColour; readonly complete: boolean; }[]
bestChainnumber

Examples

import { createGame, statusOf } from "@johnmorrisdotca/houseki/gem-swap";
import type { GameStatus } from "@johnmorrisdotca/houseki/gem-swap";

const state=createGame({seed:"docs"});
const value: GameStatus = statusOf(state);
console.log(value == null ? value : typeof value === "object" ? Object.keys(value).slice(0,6) : value);
[
  'phase',
  'score',
  'moves',
  'legalMoveCount',
  'usedFallback',
  'availableToolCount'
]

What it prints (run when this page was built)

View sourceEdit on GitHubMade from the source of @johnmorrisdotca/houseki 0.4.2.