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 · Colour Chains

GameStatetype

An immutable Colour Chains rules state. Board rows include the three hidden rows above the well.

Import it

import type { GameState } from "@johnmorrisdotca/houseki/colour-chains";

Definition

interface GameState {
    readonly game: 'colour-chains';
    readonly rules: 'chains-1';
    readonly settings: Settings;
    readonly board: readonly (Gem | null)[];
    readonly phase: Phase;
    readonly pausedPhase?: Exclude<Phase, 'paused'>;
    readonly active: Pair | null;
    readonly next: readonly (readonly [
        Colour,
        Colour
    ])[];
    readonly bag: readonly Colour[];
    readonly randomState: number;
    readonly nextMagnetic?: readonly (readonly [
        boolean,
        boolean
    ])[];
    readonly lastHorizontalDirection?: 'left' | 'right';
    readonly naturePulsePending?: boolean;
    readonly weatherResolvedPairs?: number;
    readonly nextId: number;
    readonly score: number;
    readonly maxChain: number;
    readonly allClears: number;
    readonly completedPairs: number;
    readonly resolutionTick: number;
    readonly resolutionLevel?: number;
    readonly waves: readonly Wave[];
    readonly clearCells: readonly number[];
    readonly gravityBoard: readonly (Gem | null)[] | null;
    readonly resolutionHadClear: boolean;
    readonly elapsedTicks: number;
    readonly assisted: boolean;
    readonly witnessIndex: number;
    readonly recording: readonly RecordedAction[];
    readonly reason?: string;
}

Members

NameTypeDescription
game"colour-chains"
rules"chains-1"
settingsSettings
boardreadonly (Gem | null)[]
phasePhase
pausedPhase (optional)"falling" | "clear-mark" | "clear-remove" | "gravity" | "won" | "lost" | "finished" | undefined
activePair | null
nextreadonly (readonly [Colour, Colour])[]
bagreadonly Colour[]
randomStatenumber
nextMagnetic (optional)readonly (readonly [boolean, boolean])[] | undefined
lastHorizontalDirection (optional)"left" | "right" | undefined
naturePulsePending (optional)boolean | undefined
weatherResolvedPairs (optional)number | undefined
nextIdnumber
scorenumber
maxChainnumber
allClearsnumber
completedPairsnumber
resolutionTicknumber
resolutionLevel (optional)number | undefined
wavesreadonly Wave[]
clearCellsreadonly number[]
gravityBoardreadonly (Gem | null)[] | null
resolutionHadClearboolean
elapsedTicksnumber
assistedboolean
witnessIndexnumber
recordingreadonly RecordedAction[]
reason (optional)string | undefined

Examples

import { createGame } from "@johnmorrisdotca/houseki/colour-chains";
import type { GameState } from "@johnmorrisdotca/houseki/colour-chains";

const state=createGame({seed:"docs"});
const value: GameState = state;
console.log(value == null ? value : typeof value === "object" ? Object.keys(value).slice(0,6) : value);
[ 'game', 'rules', 'settings', 'board', 'phase', 'active' ]

What it prints (run when this page was built)

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