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 · Stone Collapse

UndoFrametype

Data sufficient to restore the complete game immediately before a committed move.

Import it

import type { UndoFrame } from "@johnmorrisdotca/houseki/stone-collapse";

Definition

interface UndoFrame {
    readonly board: readonly (Stone | null)[];
    readonly score: number;
    readonly moves: number;
    readonly removed: number;
    readonly randomState: number;
    readonly nextId: number;
    readonly usedFallback: boolean;
    readonly finishAdjustmentApplied: boolean;
    readonly selectedId: number | null;
    readonly selectedIds: readonly number[];
    readonly previewScore: number;
    readonly witnessIndex: number;
    readonly inventory: ToolInventory;
    readonly toolProgress: number;
    readonly toolAwardCursor: 0 | 1;
    readonly selectedTool: StoredTool | null;
    readonly toolTarget: number | null;
    readonly toolPreview: readonly number[];
}

Members

NameTypeDescription
boardreadonly (Stone | null)[]
scorenumber
movesnumber
removednumber
randomStatenumber
nextIdnumber
usedFallbackboolean
finishAdjustmentAppliedboolean
selectedIdnumber | null
selectedIdsreadonly number[]
previewScorenumber
witnessIndexnumber
inventoryToolInventory
toolProgressnumber
toolAwardCursor0 | 1
selectedToolStoredTool | null
toolTargetnumber | null
toolPreviewreadonly number[]

Examples

import { createGame } from "@johnmorrisdotca/houseki/stone-collapse";
import type { UndoFrame } from "@johnmorrisdotca/houseki/stone-collapse";

const state=createGame({seed:"docs"});
const value: UndoFrame = {board:state.board,score:0,moves:0,removed:0,randomState:state.randomState,nextId:state.nextId,usedFallback:false,finishAdjustmentApplied:false,selectedId:null,selectedIds:[],previewScore:0,witnessIndex:0,inventory:state.inventory,toolProgress:0,toolAwardCursor:0,selectedTool:null,toolTarget:null,toolPreview:[]};
console.log(value == null ? value : typeof value === "object" ? Object.keys(value).slice(0,6) : value);
[ 'board', 'score', 'moves', 'removed', 'randomState', 'nextId' ]

What it prints (run when this page was built)

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