Описание структуры JSON конфигурации - romasan/solitaire-game-engine GitHub Wiki

🏠 В начало

Config JSON
Input params
Tips params
Win check
Preference
Auto step
Action
Group
Deck
Group generator
Deck relations
Action
Win rules
Vector2d


Config JSON

JSON обьект описания пасьянса (пример)

  • zoom - масштабирование
    • тип Number
    • по умолчанию 1.0
  • moveDistance - мимальная дистанция при перемещении карты в пикселях (если растояние меньше карта вернётся на своё место)
    • тип Number
    • по умолчанию 0
  • inputParams - параметры убравления
  • field - элемент страницы, который будет содержать в себе игровое поле
    • тип String - CSS Selector | HTML DOM Element Object
    • по умолчанию "#map"
  • winCheck - правила окончания игры
  • autoSteps - ...
  • groups - группы
  • decks - стопки
    • тип Array<Deck>
  • fill - карты во всех стопках в начале расклада
  • tipsParams - ...
  • startZIndex - ...
    • тип Number
  • animationTime - максимальная продолжительность анимации движения карт (в мс.)
    • тип Number
    • по умолчанию: 600
  • preferences - пользовательские настройки
JSON

``` { zoom: 1.0, moveDistance: 10, inputParams: {}, field: "#wrap-element", winCheck: {}, autoSteps: [{}], groups: {}, decks: [], fill: [], tipsParams: {}, startZIndex: 100, animationTime: 1000, preferences: {} } ```


Input params

InputParams - параметры убравления (мышь)

  • doubleClick - делать ход по двойному клику, будет выбран один из возможных в подсказках
    • тип boolean
    • по умолчанию false
JSON

``` { doubleClick: true } ```


Tips params

Параметры подсказок.

  • hideOnEmpty - автоматически скрывать пустую стопку
    • тип Boolean
    • по умолчанию false
  • excludeHomeGroups - не показывать возможные ходы из групп входящих в достав «Дома»
    • тип Boolean
    • по умолчанию true
JSON

``` { hideOnEmpty: true, excludeHomeGroups: true } ```


Win check

Правила окончания игры.

  • rules - правила выигрыша
JSON

``` [ "rule_name" ] ``` ``` { rules: [ "rule_name" ] } ```


Preference

Пользовательские настройки в дополнение к имеющимся в движке.

  • title - заголовок
    • тип String
  • value - параметр по умолчанию
    • тип any
  • options - опции
    • title - заголовок
      • тип String
    • value - параметр
      • тип Any

Auto step

Автоход - один из вариантов автоматизации. Предполагает автоматическое выполнение ходов, после определённого события, так же можно использовать для выполнения типов ходов отличных от стандартного (в этом случае так-же возможна работа автохода в «ручном режиме» когда ходы выполняются не автоматически а самим игроком). Не путать с автоходом в «Дом».

  • autoStep - выполнять автоматически
    • тип Boolean
    • по умолчанию false
  • event - событие по которому вызывается
    • тип string
  • dispatch - событие которое генерирует по окончани
    • тип string
  • так-же для разных автоходов могут быть дополнительные параметры
JSON

``` { autoStep: true, event: "exentExample", dispatch: "nextEvent" } ```


Action

Автоматизация действий над стопкой по какому либу событию, как например выполнить раздачу из стопки по клику на неё, или совершении хода.

Реализованные Action-ы:

Action Описание
deal Раздача карт
kick Сброс карт
changeStepType Изменение текущего типа хода
lock Блокирование стопки
unlock Разблокирование стопки
checkFull Проверить заполнение определённых стопок
roller Реализация стопки с отбоем

Group

Группа стопок обладающих общими свойствами.

  • name - имя группы
    • тип String
  • position - позиция на игровом поле
    • тип Vector2d
    • по умолчанию {x : 0, y : 0}

параметры которые будут переданы дочерним стопкам:

  • paddingType - сдвиг карт лежащих в стопке
    • тип String - padding type
    • по умолчанию "none"
  • paddingX - сдвиг открытых карт по горизонтали
    • тип Number
    • по умолчанию null
  • paddingY - сдвиг открытых карт по вертикали
    • тип Number
    • по умолчанию null
  • flipPaddingX - сдвиг закрытых карт по горизонтали
    • тип Number
    • по умолчанию null
  • flipPaddingY - сдвиг закрытых карт по вертикали
    • тип Number
    • по умолчанию null
  • flip - порядок открытых и закрытых карт
    • тип String
  • showSlot - показывать «рамку» пустой стопки
    • тип Boolean
  • takeRules - правила взятия карт из стопки
    • тип Array<String>
  • putRules - правила помещения карт в стопку
    • тип String | Array<String>
  • fullRules - ...
    • тип Array<String>
  • autoHide - автоматическое сокрытие стопки в которой не осталось карт
    • тип Boolean
  • actions - описание автоматизированных действий
  • fill - карты в стопках группы в начале расклада
  • decks - описание стопок в группе или конфигурация для их генерации
  • tags - пометки стопок
    • тип Array<String>
JSON

ч


Deck

Deck - стопка

  • name - имя стопки
    • тип String
  • position - позиция на игровом поле
    • тип Vector2d
    • по умолчанию {x : 0, y : 0}
  • paddingType - сдвиг карт лежащих в стопке
    • тип String
    • по умолчанию "none"
  • paddingX - сдвиг открытых карт по горизонтали
    • тип Number
    • по умолчанию null
  • paddingY - сдвиг открытых карт по вертикали
    • тип Number
    • по умолчанию
    • по умолчанию null
  • flipPaddingX - сдвиг закрытых карт по горизонтали
    • тип Number
    • по умолчанию null
  • flipPaddingY - сдвиг закрытых карт по вертикали
    • тип Number
    • по умолчанию null
  • flip - порядок открытых и закрытых карт
    • тип String
  • showSlot - показывать «рамку» пустой стопки
    • тип Boolean
    • по умолчанию true
  • takeRules - правила взятия карт из стопки
    • тип Array
    • по умолчанию "any"
  • putRules - правила помещения карт в стопку
    • тип string | Array<String>
    • по умолчанию "any"
  • fullRules - ...
    • тип Array
  • autoHide - автоматическое сокрытие стопки в которой не осталось карт
    • тип Boolean
    • по умолчанию false
  • actions - описание автоматизированных действий
  • locked - стопка заблокирована (например до определённого этапа игры пока не отработает Action или Auto step)
    • тип Boolean
    • по умолчанию false
  • visible - видимость стопки
    • тип Boolean
    • по умолчанию true
  • groupIndex - ...
    • тип Number
  • startZIndex - начальный номер слоя карт в стопке.
    • тип Number
    • по умолчанию 100
  • fill - карты в стопке в начале расклада
  • relations - связи с другими стопками
JSON

``` { name: "groupName", position: {}, paddingType: "paddingTypeName", paddingX: 0, paddingY: 0, flipPaddingX: 0, flipPaddingY: 0, flip: "all", showSlot: true, takeRules: ["takeRuleName"], putRules: ["putRuleName"], fullRules: ["fullRuleName"], autoHide: true, actions: [{}], locked: true, visible: true, groupIndex: 1, startZIndex: 100, fill: ["cardName"], relations: [{}] } ```


Group generator

GroupGenerator - ...


Group generators

  • count - Генерация ряда стопок пример

    -- values --

    • count - ...
      • тип Number
  • map - Генерация стопок типа «матрица» пример

    -- values --

    • map - ...
      • тип Array<Array<Boolean | null>>
    • aroundRelations - Автоматическое построение связей типа «around» между всеми соседними стопками
      • тип Boolean
      • по умолчанию false
  • fan - Генерация стопок типа «веер» пример

    -- values --

    • count - ...
      • тип Number
      • по умолчанию 3
    • radius - ...
      • тип Number
      • по умолчанию 100
    • center - ...
      • тип Vector2d
      • по умолчанию {x : 0, y : 0}

Deck relations

Relations Description
around отношение между рядом стоящими элементами в матрице
beside отношение между рядом стоящими элементами в ряду
fall условное направление «гравитации» в матрице

Win rules

Rule Description
allEmpty все стопки пусты
allInOne все карты в одной из стопок
allAscend все карты в стопка лежат по возрастанию
allDescent все карты в стопка лежат по убыванию

query - составное правило, включает в себя возможность применять базовые правила к отдельным группам или стопкам.


Vector2d

Vector2d - Вектор, используется для позиционирования стопок и карт в них.

  • x
    • тип Number
  • y
    • тип Number
JSON

``` { x: 0, y: 0 } ```

⬆️ Вверх

🏠 В начало

⬅️ Работа с библиотекой | Описание структур и правил ➡️

⚠️ **GitHub.com Fallback** ⚠️