interface EngineSnapshot {
    __meta: {
        isUndoRedo: boolean;
    };
    _queue: QueueSnapshot;
    board: Tile[][];
    falling: TetrominoSnapshot;
    frame: number;
    garbage: GarbageQueueSnapshot;
    glock: number;
    hold: null | Engine.Mino;
    holdLocked: boolean;
    ige: IGEHandlerSnapshot;
    input: {
        firstInputTime: number;
        keys: {
            hold: boolean;
            rotate180: boolean;
            rotateCCW: boolean;
            rotateCW: boolean;
            softDrop: boolean;
        };
        lastPieceTime: number;
        lastShift: number;
        lShift: {
            arr: number;
            das: number;
            dir: -1;
            held: boolean;
        };
        rShift: {
            arr: number;
            das: number;
            dir: 1;
            held: boolean;
        };
        time: {
            locked: boolean;
            prev: number;
            start: number;
            zero: boolean;
        };
    };
    lastSpin: null | SpinType;
    lastWasClear: boolean;
    practice: {
        lastPiece: null | EngineSnapshot;
        redo: EngineSnapshot[];
        retry: boolean;
        retryIter: number;
        undo: EngineSnapshot[];
    };
    queue: QueueSnapshot;
    resCache: {
        garbage: {
            received: OutgoingGarbage[];
            sent: number[];
        };
        keys: Key[];
        lastLock: number;
        pieces: number;
    };
    spike: {
        count: number;
        timer: number;
    };
    state: number;
    stats: {
        b2b: number;
        combo: number;
        garbage: {
            attack: number;
            cleared: number;
            receive: number;
            sent: number;
        };
        lines: number;
        pieces: number;
    };
    stock: number;
    subframe: number;
    targets?: number[];
    time: {
        frameOffset: number;
    };
}

Properties

__meta: {
    isUndoRedo: boolean;
}

This data is relevant to the snapshot but not part of the engine's state

board: Tile[][]
frame: number
glock: number
hold: null | Engine.Mino
holdLocked: boolean
input: {
    firstInputTime: number;
    keys: {
        hold: boolean;
        rotate180: boolean;
        rotateCCW: boolean;
        rotateCW: boolean;
        softDrop: boolean;
    };
    lastPieceTime: number;
    lastShift: number;
    lShift: {
        arr: number;
        das: number;
        dir: -1;
        held: boolean;
    };
    rShift: {
        arr: number;
        das: number;
        dir: 1;
        held: boolean;
    };
    time: {
        locked: boolean;
        prev: number;
        start: number;
        zero: boolean;
    };
}
lastSpin: null | SpinType
lastWasClear: boolean
practice: {
    lastPiece: null | EngineSnapshot;
    redo: EngineSnapshot[];
    retry: boolean;
    retryIter: number;
    undo: EngineSnapshot[];
}
resCache: {
    garbage: {
        received: OutgoingGarbage[];
        sent: number[];
    };
    keys: Key[];
    lastLock: number;
    pieces: number;
}
spike: {
    count: number;
    timer: number;
}
state: number
stats: {
    b2b: number;
    combo: number;
    garbage: {
        attack: number;
        cleared: number;
        receive: number;
        sent: number;
    };
    lines: number;
    pieces: number;
}
stock: number
subframe: number
targets?: number[]
time: {
    frameOffset: number;
}