Описание+структуры+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
JSON обьект описания пасьянса (пример)
-
zoom - масштабирование
- тип Number
- по умолчанию
1.0
-
moveDistance - мимальная дистанция при перемещении карты в пикселях (если растояние меньше карта вернётся на своё место)
- тип Number
- по умолчанию
0
-
inputParams - параметры убравления
- тип Input params
-
field - элемент страницы, который будет содержать в себе игровое поле
- тип String - CSS Selector | HTML DOM Element Object
- по умолчанию
"#map"
-
winCheck - правила окончания игры
- тип Win check
-
autoSteps - ...
- тип Array<Auto step>
-
groups - группы
- тип Group
-
decks - стопки
- тип Array<Deck>
- fill - карты во всех стопках в начале расклада
-
tipsParams - ...
- тип Tips params
-
startZIndex - ...
- тип Number
-
animationTime - максимальная продолжительность анимации движения карт (в мс.)
- тип Number
- по умолчанию:
600
-
preferences - пользовательские настройки
- тип Preference
JSON
``` { zoom: 1.0, moveDistance: 10, inputParams: {}, field: "#wrap-element", winCheck: {}, autoSteps: [{}], groups: {}, decks: [], fill: [], tipsParams: {}, startZIndex: 100, animationTime: 1000, preferences: {} } ```
InputParams - параметры убравления (мышь)
-
doubleClick - делать ход по двойному клику, будет выбран один из возможных в подсказках
- тип boolean
- по умолчанию
false
JSON
``` { doubleClick: true } ```
Параметры подсказок.
-
hideOnEmpty - автоматически скрывать пустую стопку
- тип Boolean
- по умолчанию
false
-
excludeHomeGroups - не показывать возможные ходы из групп входящих в достав «Дома»
- тип Boolean
- по умолчанию
true
JSON
``` { hideOnEmpty: true, excludeHomeGroups: true } ```
Правила окончания игры.
-
rules - правила выигрыша
- тип Win rules
JSON
``` [ "rule_name" ] ``` ``` { rules: [ "rule_name" ] } ```
Пользовательские настройки в дополнение к имеющимся в движке.
-
title - заголовок
- тип String
-
value - параметр по умолчанию
- тип any
-
options - опции
-
title - заголовок
- тип String
-
value - параметр
- тип Any
-
title - заголовок
Автоход - один из вариантов автоматизации. Предполагает автоматическое выполнение ходов, после определённого события, так же можно использовать для выполнения типов ходов отличных от стандартного (в этом случае так-же возможна работа автохода в «ручном режиме» когда ходы выполняются не автоматически а самим игроком). Не путать с автоходом в «Дом».
-
autoStep - выполнять автоматически
- тип Boolean
- по умолчанию
false
-
event - событие по которому вызывается
- тип string
-
dispatch - событие которое генерирует по окончани
- тип string
- так-же для разных автоходов могут быть дополнительные параметры
JSON
``` { autoStep: true, event: "exentExample", dispatch: "nextEvent" } ```
Автоматизация действий над стопкой по какому либу событию, как например выполнить раздачу из стопки по клику на неё, или совершении хода.
Реализованные Action-ы:
Action | Описание |
---|---|
deal | Раздача карт |
kick | Сброс карт |
changeStepType | Изменение текущего типа хода |
lock | Блокирование стопки |
unlock | Разблокирование стопки |
checkFull | Проверить заполнение определённых стопок |
roller | Реализация стопки с отбоем |
Группа стопок обладающих общими свойствами.
-
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 - описание автоматизированных действий
- тип Action
- fill - карты в стопках группы в начале расклада
-
decks - описание стопок в группе или конфигурация для их генерации
- тип Array<Deck> | Group generator
-
tags - пометки стопок
- тип Array<String>
JSON
ч
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 - описание автоматизированных действий
- тип Action
-
locked - стопка заблокирована (например до определённого этапа игры пока не отработает Action или Auto step)
- тип Boolean
- по умолчанию
false
-
visible - видимость стопки
- тип Boolean
- по умолчанию
true
-
groupIndex - ...
- тип Number
-
startZIndex - начальный номер слоя карт в стопке.
- тип Number
- по умолчанию
100
- fill - карты в стопке в начале расклада
-
relations - связи с другими стопками
- тип Array<Relation>
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: [{}] } ```
GroupGenerator - ...
-
generator
-
type - ...
- тип String
-- values --
-
-
count - Генерация ряда стопок пример
-- values --
-
count - ...
- тип Number
-
count - ...
-
map - Генерация стопок типа «матрица» пример
-- values --
-
map - ...
- тип Array<Array<Boolean | null>>
-
aroundRelations - Автоматическое построение связей типа «around» между всеми соседними стопками
- тип Boolean
- по умолчанию
false
-
map - ...
-
fan - Генерация стопок типа «веер» пример
-- values --
-
count - ...
- тип Number
- по умолчанию
3
-
radius - ...
- тип Number
- по умолчанию
100
-
center - ...
- тип Vector2d
- по умолчанию
{x : 0, y : 0}
-
count - ...
Relations | Description |
---|---|
around | отношение между рядом стоящими элементами в матрице |
beside | отношение между рядом стоящими элементами в ряду |
fall | условное направление «гравитации» в матрице |
Rule | Description |
---|---|
allEmpty | все стопки пусты |
allInOne | все карты в одной из стопок |
allAscend | все карты в стопка лежат по возрастанию |
allDescent | все карты в стопка лежат по убыванию |
query - составное правило, включает в себя возможность применять базовые правила к отдельным группам или стопкам.
Vector2d - Вектор, используется для позиционирования стопок и карт в них.
-
x
- тип Number
-
y
- тип Number
JSON
``` { x: 0, y: 0 } ```