This module implements simulators.
Compile Options:
| Option | Description | Default |
|---|---|---|
| -d:pon2.path=<str> | Path of the web studio. | /pon2/stable/studio/ |
Types
Simulator = object keyBindPattern*: SimulatorKeyBindPattern
- Simulator for Puyo Puyo and Nazo Puyo. Source Edit
SimulatorEditData = object selecting*: tuple[cellOpt: Opt[Cell], crossOpt: Opt[bool]] field*: tuple[row: Row, col: Col] steps*: tuple[index: int, pivot: bool, col: Col] focusField*: bool insert*: bool
- Edit information. Source Edit
SimulatorKeyBindPattern {.pure.} = enum Pon2, IshikawaPuyo
- Simulator's key bind pattern. Source Edit
SimulatorKeyBinds = object modeToggle*: seq[KeyEvent] playRotateRight*: seq[KeyEvent] playRotateLeft*: seq[KeyEvent] playMoveRight*: seq[KeyEvent] playMoveLeft*: seq[KeyEvent] playForward*: seq[KeyEvent] playForwardSkip*: seq[KeyEvent] playForwardReplay*: seq[KeyEvent] playBackward*: seq[KeyEvent] playReset*: seq[KeyEvent] editInsertToggle*: seq[KeyEvent] editFocusToggle*: seq[KeyEvent] editRuleNext*: seq[KeyEvent] editRulePrev*: seq[KeyEvent] editCursorRight*: seq[KeyEvent] editCursorLeft*: seq[KeyEvent] editCursorUp*: seq[KeyEvent] editCursorDown*: seq[KeyEvent] editCellRed*: seq[KeyEvent] editCellGreen*: seq[KeyEvent] editCellBlue*: seq[KeyEvent] editCellYellow*: seq[KeyEvent] editCellPurple*: seq[KeyEvent] editCellGarbage*: seq[KeyEvent] editCellHard*: seq[KeyEvent] editCellNone*: seq[KeyEvent] editCellRotate*: seq[KeyEvent] editCellCrossRotate*: seq[KeyEvent] editCell0*: seq[KeyEvent] editCell1*: seq[KeyEvent] editCell2*: seq[KeyEvent] editCell3*: seq[KeyEvent] editCell4*: seq[KeyEvent] editCell5*: seq[KeyEvent] editFieldShiftRight*: seq[KeyEvent] editFieldShiftLeft*: seq[KeyEvent] editFieldShiftUp*: seq[KeyEvent] editFieldShiftDown*: seq[KeyEvent] editFieldFlip*: seq[KeyEvent] editUndo*: seq[KeyEvent] editRedo*: seq[KeyEvent] editForward*: seq[KeyEvent] editBackward*: seq[KeyEvent] editReset*: seq[KeyEvent] replayForward*: seq[KeyEvent] replayBackward*: seq[KeyEvent] replayReset*: seq[KeyEvent]
- Simulator's keybinds. Source Edit
SimulatorMode {.pure.} = enum PlayViewer, PlayEditor, EditViewer, EditEditor, Replay
- Simulator's mode. Source Edit
SimulatorState {.pure.} = enum Stable, WillPop, WillSettle, AfterEdit
- Simulator's state. Source Edit
Consts
EditorModes = {SimulatorMode.PlayEditor, SimulatorMode.EditEditor}
- Source Edit
SimulatorKeyBindsArray: array[SimulatorKeyBindPattern, SimulatorKeyBinds] = [(modeToggle: [ (code: "KeyT", shift: false, ctrl: false, alt: false, meta: false)], playRotateRight: [ (code: "KeyK", shift: false, ctrl: false, alt: false, meta: false)], playRotateLeft: [ (code: "KeyJ", shift: false, ctrl: false, alt: false, meta: false)], playMoveRight: [ (code: "KeyD", shift: false, ctrl: false, alt: false, meta: false)], playMoveLeft: [ (code: "KeyA", shift: false, ctrl: false, alt: false, meta: false)], playForward: [ (code: "KeyS", shift: false, ctrl: false, alt: false, meta: false)], playForwardSkip: [ (code: "Space", shift: false, ctrl: false, alt: false, meta: false)], playForwardReplay: [ (code: "KeyC", shift: false, ctrl: false, alt: false, meta: false)], playBackward: [ (code: "KeyW", shift: false, ctrl: false, alt: false, meta: false), (code: "KeyX", shift: false, ctrl: false, alt: false, meta: false)], playReset: [ (code: "KeyZ", shift: false, ctrl: false, alt: false, meta: false)], editInsertToggle: [ (code: "KeyG", shift: false, ctrl: false, alt: false, meta: false)], editFocusToggle: [ (code: "Tab", shift: false, ctrl: false, alt: false, meta: false)], editRuleNext: [ (code: "KeyR", shift: false, ctrl: false, alt: false, meta: false)], editRulePrev: [ (code: "KeyE", shift: false, ctrl: false, alt: false, meta: false)], editCursorRight: [ (code: "KeyD", shift: false, ctrl: false, alt: false, meta: false)], editCursorLeft: [ (code: "KeyA", shift: false, ctrl: false, alt: false, meta: false)], editCursorUp: [ (code: "KeyW", shift: false, ctrl: false, alt: false, meta: false)], editCursorDown: [ (code: "KeyS", shift: false, ctrl: false, alt: false, meta: false)], editCellRed: [ (code: "KeyH", shift: false, ctrl: false, alt: false, meta: false)], editCellGreen: [ (code: "KeyJ", shift: false, ctrl: false, alt: false, meta: false)], editCellBlue: [ (code: "KeyK", shift: false, ctrl: false, alt: false, meta: false)], editCellYellow: [ (code: "KeyL", shift: false, ctrl: false, alt: false, meta: false)], editCellPurple: [ (code: "Semicolon", shift: false, ctrl: false, alt: false, meta: false)], editCellGarbage: [ (code: "KeyO", shift: false, ctrl: false, alt: false, meta: false)], editCellHard: [ (code: "KeyP", shift: false, ctrl: false, alt: false, meta: false)], editCellNone: [ (code: "Space", shift: false, ctrl: false, alt: false, meta: false)], editCellRotate: [ (code: "KeyN", shift: false, ctrl: false, alt: false, meta: false)], editCellCrossRotate: [ (code: "KeyM", shift: false, ctrl: false, alt: false, meta: false)], editCell0: [ (code: "Digit0", shift: false, ctrl: false, alt: false, meta: false)], editCell1: [ (code: "Digit1", shift: false, ctrl: false, alt: false, meta: false)], editCell2: [ (code: "Digit2", shift: false, ctrl: false, alt: false, meta: false)], editCell3: [ (code: "Digit3", shift: false, ctrl: false, alt: false, meta: false)], editCell4: [ (code: "Digit4", shift: false, ctrl: false, alt: false, meta: false)], editCell5: [ (code: "Digit5", shift: false, ctrl: false, alt: false, meta: false)], editFieldShiftRight: [ (code: "KeyD", shift: true, ctrl: false, alt: false, meta: false)], editFieldShiftLeft: [ (code: "KeyA", shift: true, ctrl: false, alt: false, meta: false)], editFieldShiftUp: [ (code: "KeyW", shift: true, ctrl: false, alt: false, meta: false)], editFieldShiftDown: [ (code: "KeyS", shift: true, ctrl: false, alt: false, meta: false)], editFieldFlip: [ (code: "KeyF", shift: false, ctrl: false, alt: false, meta: false)], editUndo: [ (code: "KeyZ", shift: true, ctrl: false, alt: false, meta: false)], editRedo: [ (code: "KeyX", shift: true, ctrl: false, alt: false, meta: false)], editForward: [ (code: "KeyC", shift: false, ctrl: false, alt: false, meta: false)], editBackward: [ (code: "KeyX", shift: false, ctrl: false, alt: false, meta: false)], editReset: [ (code: "KeyZ", shift: false, ctrl: false, alt: false, meta: false)], replayForward: [ (code: "KeyS", shift: false, ctrl: false, alt: false, meta: false), (code: "KeyC", shift: false, ctrl: false, alt: false, meta: false)], replayBackward: [ (code: "KeyW", shift: false, ctrl: false, alt: false, meta: false), (code: "KeyX", shift: false, ctrl: false, alt: false, meta: false)], replayReset: [ (code: "KeyW", shift: true, ctrl: false, alt: false, meta: false), (code: "KeyZ", shift: false, ctrl: false, alt: false, meta: false)]), (modeToggle: [ (code: "KeyT", shift: false, ctrl: false, alt: false, meta: false)], playRotateRight: [ (code: "KeyX", shift: false, ctrl: false, alt: false, meta: false), (code: "Digit3", shift: false, ctrl: false, alt: false, meta: false), (code: "Digit5", shift: false, ctrl: false, alt: false, meta: false), (code: "KeyL", shift: false, ctrl: false, alt: false, meta: false)], playRotateLeft: [ (code: "KeyZ", shift: false, ctrl: false, alt: false, meta: false), (code: "Digit1", shift: false, ctrl: false, alt: false, meta: false), (code: "KeyK", shift: false, ctrl: false, alt: false, meta: false)], playMoveRight: [ (code: "KeyM", shift: false, ctrl: false, alt: false, meta: false), (code: "Digit6", shift: false, ctrl: false, alt: false, meta: false)], playMoveLeft: [ (code: "KeyB", shift: false, ctrl: false, alt: false, meta: false), (code: "Digit4", shift: false, ctrl: false, alt: false, meta: false)], playForward: [ (code: "KeyN", shift: false, ctrl: false, alt: false, meta: false), (code: "Digit2", shift: false, ctrl: false, alt: false, meta: false)], playForwardSkip: [ (code: "Space", shift: false, ctrl: false, alt: false, meta: false)], playForwardReplay: [ (code: "Digit9", shift: false, ctrl: false, alt: false, meta: false)], playBackward: [ (code: "KeyH", shift: false, ctrl: false, alt: false, meta: false), (code: "Digit8", shift: false, ctrl: false, alt: false, meta: false)], playReset: [ (code: "Digit7", shift: false, ctrl: false, alt: false, meta: false), (code: "Digit0", shift: false, ctrl: false, alt: false, meta: false)], editInsertToggle: [ (code: "KeyY", shift: false, ctrl: false, alt: false, meta: false)], editFocusToggle: [ (code: "Tab", shift: false, ctrl: false, alt: false, meta: false)], editRuleNext: [ (code: "KeyI", shift: false, ctrl: false, alt: false, meta: false)], editRulePrev: [ (code: "KeyU", shift: false, ctrl: false, alt: false, meta: false)], editCursorRight: [ (code: "KeyM", shift: false, ctrl: false, alt: false, meta: false)], editCursorLeft: [ (code: "KeyB", shift: false, ctrl: false, alt: false, meta: false)], editCursorUp: [ (code: "KeyH", shift: false, ctrl: false, alt: false, meta: false)], editCursorDown: [ (code: "KeyN", shift: false, ctrl: false, alt: false, meta: false)], editCellRed: [ (code: "KeyG", shift: false, ctrl: false, alt: false, meta: false)], editCellGreen: [ (code: "KeyF", shift: false, ctrl: false, alt: false, meta: false)], editCellBlue: [ (code: "KeyD", shift: false, ctrl: false, alt: false, meta: false)], editCellYellow: [ (code: "KeyS", shift: false, ctrl: false, alt: false, meta: false)], editCellPurple: [ (code: "KeyA", shift: false, ctrl: false, alt: false, meta: false)], editCellGarbage: [ (code: "KeyW", shift: false, ctrl: false, alt: false, meta: false)], editCellHard: [ (code: "KeyQ", shift: false, ctrl: false, alt: false, meta: false)], editCellNone: [ (code: "Space", shift: false, ctrl: false, alt: false, meta: false)], editCellRotate: [ (code: "KeyV", shift: false, ctrl: false, alt: false, meta: false)], editCellCrossRotate: [ (code: "KeyC", shift: false, ctrl: false, alt: false, meta: false)], editCell0: [], editCell1: [], editCell2: [], editCell3: [], editCell4: [], editCell5: [], editFieldShiftRight: [ (code: "KeyM", shift: true, ctrl: false, alt: false, meta: false)], editFieldShiftLeft: [ (code: "KeyB", shift: true, ctrl: false, alt: false, meta: false)], editFieldShiftUp: [ (code: "KeyH", shift: true, ctrl: false, alt: false, meta: false)], editFieldShiftDown: [ (code: "KeyN", shift: true, ctrl: false, alt: false, meta: false)], editFieldFlip: [ (code: "KeyJ", shift: false, ctrl: false, alt: false, meta: false)], editUndo: [ (code: "KeyZ", shift: true, ctrl: false, alt: false, meta: false)], editRedo: [ (code: "KeyX", shift: true, ctrl: false, alt: false, meta: false)], editForward: [ (code: "Digit9", shift: false, ctrl: false, alt: false, meta: false)], editBackward: [ (code: "Digit8", shift: false, ctrl: false, alt: false, meta: false)], editReset: [ (code: "Digit7", shift: false, ctrl: false, alt: false, meta: false)], replayForward: [ (code: "KeyN", shift: false, ctrl: false, alt: false, meta: false), (code: "Digit9", shift: false, ctrl: false, alt: false, meta: false)], replayBackward: [ (code: "KeyH", shift: false, ctrl: false, alt: false, meta: false), (code: "Digit8", shift: false, ctrl: false, alt: false, meta: false)], replayReset: [ (code: "KeyH", shift: true, ctrl: false, alt: false, meta: false), (code: "Digit7", shift: false, ctrl: false, alt: false, meta: false)])]
- Source Edit
ViewerModes = {SimulatorMode.PlayViewer, SimulatorMode.EditViewer}
- Source Edit
Procs
func editData(self: Simulator): SimulatorEditData {....raises: [], tags: [], forbids: [].}
- Returns the edit information of the simulator. Source Edit
func flipFieldHorizontal(self: var Simulator) {....raises: [], tags: [], forbids: [].}
- Flips the field horizontally. Source Edit
func flipFieldVertical(self: var Simulator) {....raises: [], tags: [], forbids: [].}
- Flips the field vertically. Source Edit
func goalClearColorOpt=(self: var Simulator; clearColorOpt: Opt[GoalColor]) {. ...raises: [], tags: [], forbids: [].}
- Sets the goal clear color. Source Edit
func goalColor=(self: var Simulator; color: GoalColor) {....raises: [], tags: [], forbids: [].}
- Sets the goal color. Source Edit
func goalKindOpt=(self: var Simulator; kindOpt: Opt[GoalKind]) {....raises: [], tags: [], forbids: [].}
- Sets the goal kind. Source Edit
func goalOperator=(self: var Simulator; operator: GoalOperator) {....raises: [], tags: [], forbids: [].}
- Sets the goal operator. Source Edit
func init(T: type Simulator; mode = DefaultMode; keyBindPattern = SimulatorKeyBindPattern.Pon2): T:type {....raises: [].}
- Source Edit
func init(T: type Simulator; nazoPuyo: NazoPuyo; mode = DefaultMode; keyBindPattern = SimulatorKeyBindPattern.Pon2): T:type {....raises: [].}
- Source Edit
func init(T: type Simulator; puyoPuyo: PuyoPuyo; mode = DefaultMode; keyBindPattern = SimulatorKeyBindPattern.Pon2): T:type {....raises: [].}
- Source Edit
func mark(self: Simulator): MarkResult {....raises: [], tags: [], forbids: [].}
- Marks the steps in the Nazo Puyo in the simulator. Source Edit
func mode(self: Simulator): SimulatorMode {....raises: [], tags: [], forbids: [].}
- Returns the mode of the simulator. Source Edit
func mode=(self: var Simulator; mode: SimulatorMode) {....raises: [], tags: [], forbids: [].}
- Sets the mode of the simulator. Source Edit
func moveCursorDown(self: var Simulator) {....raises: [], tags: [], forbids: [].}
- Moves the cursor downward. Source Edit
func moveCursorLeft(self: var Simulator) {....raises: [], tags: [], forbids: [].}
- Moves the cursor leftward. Source Edit
func moveCursorRight(self: var Simulator) {....raises: [], tags: [], forbids: [].}
- Moves the cursor rightward. Source Edit
func moveCursorUp(self: var Simulator) {....raises: [], tags: [], forbids: [].}
- Moves the cursor upward. Source Edit
func movePlacementLeft(self: var Simulator) {....raises: [], tags: [], forbids: [].}
- Moves the next placement left. Source Edit
func movePlacementRight(self: var Simulator) {....raises: [], tags: [], forbids: [].}
- Moves the next placement right. Source Edit
func moveResult(self: Simulator): MoveResult {....raises: [], tags: [], forbids: [].}
- Returns the moving result of the simulator. Source Edit
func normalizeGoal(self: var Simulator) {....raises: [], tags: [], forbids: [].}
- Normalizes the goal. This function does not affects undo/redo. Source Edit
func parseSimulator(uri: Uri): Pon2Result[Simulator] {....raises: [], tags: [], forbids: [].}
- Returns the simulator converted from the URI. Viewer modes are set to the result simulator preferentially if the FQDN is IshikawaPuyo or Ips. Source Edit
func rotatePlacementLeft(self: var Simulator) {....raises: [], tags: [], forbids: [].}
- Rotates the next placement left (counterclockwise). Source Edit
func rotatePlacementRight(self: var Simulator) {....raises: [], tags: [], forbids: [].}
- Rotates the next placement right (clockwise). Source Edit
func selectingCell=(self: var Simulator; cell: Cell) {....raises: [], tags: [], forbids: [].}
- Sets the selecting cell. Source Edit
func selectingCross=(self: var Simulator; cross: bool) {....raises: [], tags: [], forbids: [].}
- Sets the selecting cross. Source Edit
func shiftFieldDown(self: var Simulator) {....raises: [], tags: [], forbids: [].}
- Shifts the field downward. Source Edit
func shiftFieldLeft(self: var Simulator) {....raises: [], tags: [], forbids: [].}
- Shifts the field leftward. Source Edit
func shiftFieldRight(self: var Simulator) {....raises: [], tags: [], forbids: [].}
- Shifts the field rightward. Source Edit
func shiftFieldUp(self: var Simulator) {....raises: [], tags: [], forbids: [].}
- Shifts the field upward. Source Edit
func state(self: Simulator): SimulatorState {....raises: [], tags: [], forbids: [].}
- Returns the state of the simulator. Source Edit
func toExportUri(self: Simulator; viewer = true; clearPlacements = true; fqdn = SimulatorFqdn.Pon2): Pon2Result[Uri] {....raises: [], tags: [], forbids: [].}
- Returns the URI of the simulator with any moves reset. Source Edit
func toggleFocus(self: var Simulator) {....raises: [], tags: [], forbids: [].}
- Toggles focusing field or not. Source Edit
func toggleInsert(self: var Simulator) {....raises: [], tags: [], forbids: [].}
- Toggles inserting or not. Source Edit
func toUri(self: Simulator; clearPlacements = false; fqdn = SimulatorFqdn.Pon2): Pon2Result[ Uri] {....raises: [], tags: [], forbids: [].}
- Returns the URI converted from the simulator. Source Edit
func writeCell(self: var Simulator; cell: Cell) {....raises: [], tags: [], forbids: [].}
- Writes the cell to the selecting position in the field or steps. Source Edit
func writeCount(self: var Simulator; count: int) {....raises: [], tags: [], forbids: [].}
- Writes the nuisance count to the selecting position in the steps. Source Edit
func writeCount(self: var Simulator; index: int; col: Col; count: int) {. ...raises: [], tags: [], forbids: [].}
- Writes the nuisance count to the specified position in the steps. Source Edit
func writeCountClamp(self: var Simulator; index: int; col: Col; count: int) {. ...raises: [], tags: [], forbids: [].}
- Writes the nuisance clamped count to the specified position in the steps. Source Edit
func writeCross(self: var Simulator; cross: bool) {....raises: [], tags: [], forbids: [].}
- Writes the rotation to the selecting position in the steps. Source Edit
func writeCross(self: var Simulator; index: int) {....raises: [], tags: [], forbids: [].}
- Writes the selecting rotation to the specified position in the steps. Source Edit
Exports
-
puyoCount, $, cellCount, puyoCount, parsePlacement, moveLeft, DeadRule, score, puyoCount, del, rotatedLeft, $, init, cellCount, Field, puyoCount, nuisancePuyoCount, swapped, init, MoveResult, parseRule, mark, validDoublePlacements, coloredPuyoCount, pivotCol, init, ==, parseNazoPuyo, coloredPuyoCounts, init, parseStep, NuisancePuyos, Width, init, $, Rule, GoalOperator, Pair, toUriQuery, cellCount, isNormalized, $, movedLeft, GoalMain, rotateRight, AirHeight, puyoCount, MarkResult, connection2Vertical, colorsSeq, del, init, shiftRight, rotor, isValid, init, canPop, $, Steps, toUriQuery, ActualPlacements, Dir, init, cellCount, invalidPlacements, connection3, []=, shiftUp, puyoCount, NoneGoalColor, parseGoal, connection2Horizontal, init, rotatedRight, dropNuisance, placeCounts, toUriQuery, rotateLeft, SimulatorFqdn, nuisancePuyoCount, cellCount, init, init, parseSteps, nuisancePuyoCount, validPlacements, toUriQuery, DoublePlacements, movedRight, init, toUriQuery, parsePair, Notice, coloredPuyoCount, cellCount, nuisancePuyoCount, WaterTopRow, StepKind, init, cellCounts, Physics, isDouble, swap, WaterHeight, coloredPuyoCount, connection2, Col, Step, coloredPuyoCount, insert, toArray, parseSimulatorFqdn, init, parsePuyoPuyo, Cell, connectionCounts, rotorDir, init, Puyos, parseNazoPuyo, NoneGoalMain, parsePuyoPuyo, [], apply, puyoCount, nuisancePuyoCounts, ColoredPuyos, Behaviour, toField, noticeCounts, pivot=, Height, context, $, connection3LShape, isSupported, parseGoal, init, ==, isSettled, connectionCounts, PopResult, placeCounts, rotate, init, nuisancePuyoCount, toUriQuery, init, init, coloredPuyoCount, Row, isPopped, NoColorKinds, nuisancePuyoCount, init, init, parseStep, mpairs, connection3Horizontal, Placement, flipHorizontal, parseField, parsePair, isDead, puyoCounts, init, shiftDown, rotorCol, init, PuyoPuyo, init, flipVertical, pivot, Behaviours, shiftLeft, parseSteps, NazoPuyo, init, move, colors, parsePlacement, nuisancePuyoCount, toUriQuery, init, parseField, AirBottomRow, parseCell, cellCount, ColorKinds, normalized, place, insert, connectionCounts, GoalColor, Goal, Pon2Result, crossRotate, rotor=, init, connection3Vertical, noticeCounts, settle, toDeque, toUriQuery, coloredPuyoCount, moveRight, hardToGarbageCount, init, move, pop, NoneGoal, coloredPuyoCount, normalize, GoalKind, KeyEventShiftE, KeyEventShiftZ, KeyEvent4, KeyEventI, init, KeyEventShiftN, KeyEventShiftX, KeyEventS, KeyEventU, KeyEventP, KeyEvent7, KeyEventShiftK, KeyEventC, KeyEventQ, KeyEventT, KeyEventF, KeyEvent2, KeyEvent5, KeyEventShiftC, KeyEvent8, KeyEvent9, KeyEventShiftQ, KeyEvent6, KeyEventJ, KeyEventShiftD, KeyEventShiftI, KeyEventK, KeyEventB, KeyEventTab, KeyEventShiftV, KeyEventH, KeyEventShiftY, KeyEventShiftW, KeyEventY, KeyEventSpace, KeyEventShiftB, KeyEventShiftG, KeyEventL, KeyEventShiftO, KeyEventE, KeyEventShiftU, KeyEvent3, KeyEventD, KeyEventM, KeyEventEnter, KeyEventX, KeyEventO, KeyEventN, KeyEventSemicolon, KeyEvent, KeyEventShiftL, KeyEvent0, KeyEventShiftT, KeyEventG, KeyEventA, KeyEventZ, KeyEventShiftJ, KeyEventShiftA, KeyEventShiftR, KeyEventShiftH, KeyEventV, KeyEventShiftEnter, KeyEventShiftM, KeyEventShiftTab, KeyEventR, KeyEventShiftS, KeyEventShiftP, KeyEventShiftF, KeyEvent1, KeyEventW, updatedQuery