react-chessboard-ui 2.13.0 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,388 +1,388 @@
1
- export declare type FigureType = 'pawn' | 'bishop' | 'knight' | 'rook' | 'queen' | 'king';
2
- export declare type FigureColor = 'white' | 'black';
3
- export declare type CellPos = [number, number];
4
- export interface Figure {
5
- type: FigureType;
6
- color: FigureColor;
7
- touched?: boolean;
8
- position?: CellPos;
9
- }
10
- export declare type Piece = Figure;
11
- export declare type PieceColor = FigureColor;
12
- export declare type SquarePos = CellPos;
13
- export declare type PieceType = FigureType;
14
- export declare type CellColor = 'white' | 'black';
15
- export interface Cell {
16
- figure?: Figure;
17
- beated?: boolean;
18
- beatedFor?: FigureColor;
19
- }
20
- export interface ChessBoardConfig {
21
- cellWhiteBg: string;
22
- cellBlackBg: string;
23
- cellSelectedBg: string;
24
- cellSize: number;
25
- figures: {
26
- black: {
27
- [figureType: string]: string;
28
- };
29
- white: {
30
- [figureType: string]: string;
31
- };
32
- };
33
- }
34
- export interface MoveNotation {
35
- move: string;
36
- figure: Figure;
37
- stateFEN: string;
38
- }
39
- export declare type MoveDirection = 'top' | 'right' | 'bottom' | 'left' | 'top-right' | 'bottom-right' | 'bottom-left' | 'top-left';
40
- export declare type MoveType = 'move' | 'beat' | 'check' | 'double-check' | 'mat' | 'transform' | '0-0' | '0-0-0';
41
- export declare type GameResultType = 'mat' | 'pat' | 'draw' | 'timeout' | 'surrender' | undefined;
42
- export interface GameResult {
43
- resultType: GameResultType;
44
- winColor?: FigureColor;
45
- }
46
- export declare type PawnMoveType = 'first' | 'default' | 'attack';
47
- export interface MoveByPawn {
48
- pos: CellPos;
49
- typeMove: PawnMoveType;
50
- }
51
- export interface MoveData {
52
- from: CellPos;
53
- to: CellPos;
54
- figure: Figure;
55
- type?: MoveType;
56
- FEN?: string;
57
- timeWhite?: number;
58
- timeBlack?: number;
59
- }
60
- export interface BeatedCountsData {
61
- pawn: number;
62
- knight: number;
63
- bishop: number;
64
- rook: number;
65
- queen: number;
66
- }
67
- export declare type CastlingType = '0-0' | '0-0-0';
68
- export declare type OnCheckPossible = (state: Cell[][], figurePos: CellPos, targetPos: CellPos) => boolean;
69
- declare const FIGURES_COUNTS: {
70
- PAWNS_COUNT: number;
71
- KNIGHTS_COUNT: number;
72
- BISHOPS_COUNT: number;
73
- ROOKS_COUNT: number;
74
- QUEENS_COUNT: number;
75
- KINGS_COUNT: number;
76
- };
77
- export declare class JSChessEngine {
78
- /**
79
- * Возвращает возможные ходы фигуры
80
- * @param state состояние доски
81
- * @param param1 позиция фигуры, которой хотим сыграть
82
- * @param linesWithCheck линии по которым есть шах на союзного короля
83
- * @param revese перевернута ли доска
84
- */
85
- static getNextMoves: (state: Cell[][], [i, j]: CellPos, linesWithCheck: CellPos[][], revese?: boolean) => CellPos[];
86
- /**
87
- * Возвращает первернутое состояние доски
88
- * @param state состояние доски
89
- */
90
- static reverseChessBoard: (state: Cell[][]) => Cell[][];
91
- /**
92
- * Обновляет данные хода для того чтобы
93
- * можно было применить ход к перевернутой доске
94
- * @param moveData данные хода
95
- * @param boardSize размер доски
96
- */
97
- static reverseMove: (moveData: MoveData, boardSize?: number) => MoveData;
98
- /**
99
- * Возвращет перевернутое значение для начала и конца хода фигуры
100
- * Использовать при подсветке хода если доска перевернута
101
- * @param moveVector Координаты начала и конца хода фигуры
102
- * @param boardSize размер доски
103
- */
104
- static reverseMoveVector: (moveVector: CellPos[], boardSize?: number) => number[][];
105
- /**
106
- * Проверка на то что позиция находится в пределах доски
107
- * @param state состояние доски
108
- * @param pos проверяемая позиция
109
- */
110
- static checkInBorderBoard: (state: Cell[][], pos: CellPos) => boolean;
111
- /**
112
- * Возвращает цвет фигуры
113
- * @param state состояние доски
114
- * @param pos позиция фигуры
115
- */
116
- static getFigureColor: (state: Cell[][], pos: CellPos) => FigureColor;
117
- /**
118
- * Возвращает тип фигры
119
- * @param state состояние доски
120
- * @param pos позиция фигуры
121
- */
122
- static getFigureType: (state: Cell[][], pos: CellPos) => FigureType;
123
- /**
124
- * Проверка находится ли в указанной клетке вражеская фигура
125
- * @param state состояние доски
126
- * @param pos положение фигуры союзного цвета
127
- * @param target положение фигуры - цели
128
- */
129
- static checkEnemy: (state: Cell[][], pos: CellPos, target: CellPos) => boolean;
130
- /**
131
- * Проверка находится ли в указанной клетке союзная фигура
132
- * @param state состояние доски
133
- * @param pos положение фигуры союзного цвета
134
- * @param target положение фигуры - цели
135
- */
136
- static checkTeammate: (state: Cell[][], pos: CellPos, target: CellPos) => boolean;
137
- /**
138
- * Проверка на то что фигура-цель вражеский король
139
- * @param state состояние доски
140
- * @param pos положение фигуры союзного цвета
141
- * @param target положение фигуры - цели
142
- */
143
- static checkEnemyKing: (state: Cell[][], pos: CellPos, target: CellPos) => boolean;
144
- /**
145
- * Проверяет битая ли клетка, клетка становится битой после того
146
- * как пешка сделает ход на две клетки веперед
147
- * @param state состояние доски
148
- * @param target позиция проверяемой клетки
149
- */
150
- static checkBeatedCell: (state: Cell[][], target: CellPos) => boolean;
151
- /**
152
- * Возвращает есть ли фигура в указаной позиции
153
- * @param state состояние доски
154
- * @param pos проверяемая позиция
155
- * @returns
156
- */
157
- static hasFigure: (state: Cell[][], pos: CellPos) => boolean;
158
- /**
159
- * Проверяет дальнобойная ли фигура
160
- * слон, ладья или ферзь
161
- * @param state состояние доски
162
- * @param figurePos позиция фигуры
163
- */
164
- static checkFigureIsLongRange: (state: Cell[][], figurePos: CellPos) => boolean;
165
- /**
166
- * Возвращает количество вражеских которые можно атаковать (кроме короля) фигур из массива позиций
167
- * @param state состояние доски
168
- * @param figurePos позиция фигуры
169
- * @param positions проверяемые позиции
170
- */
171
- static getCountEnemys: (state: Cell[][], figurePos: CellPos, positions: CellPos[]) => number;
172
- /**
173
- * Возвращает позицию союзного короля
174
- * @param state состояние доски
175
- * @param figurePos позиция фигуры
176
- */
177
- static getTeammateKingPos: (state: Cell[][], figurePos: CellPos) => CellPos;
178
- /**
179
- * Возвращает все клетки с вражескими фигурами
180
- * @param state состояние доски
181
- * @param pos позиция союзной фигуры
182
- */
183
- static getAllEnemysPositions: (state: Cell[][], pos: CellPos) => CellPos[];
184
- /**
185
- * Возвращает позиции фигур-союзников по цвету
186
- * @param state состояние доски
187
- * @param color цвет по которому ищем фигуры-союзники
188
- */
189
- static getAllTeammatesPositionsByColor: (state: Cell[][], color: FigureColor) => CellPos[];
190
- /**
191
- * Полная проверка возможности хода для фигур: pawn, knigt, bishop, rook, queen
192
- * @param state состояния доски
193
- * @param pos положение фигуры союзного цвета
194
- * @param target позиция клетки - цели
195
- * @returns
196
- */
197
- static checkPossibleMoveTo: (state: Cell[][], pos: CellPos, target: CellPos) => boolean;
198
- /**
199
- * Прооверяет возможность атаки клетки
200
- * Если в клетке вражеская фигура, считает ее атакованной
201
- * Необходима для проверки нахождения вражеского короля за атакованной фигурой
202
- * @param state состояние доски
203
- * @param figurePos позиция фигураы
204
- * @param target клетака под атакой
205
- */
206
- static checkPossibleAttackTo: (state: Cell[][], figurePos: CellPos, target: CellPos) => boolean;
207
- /**
208
- * Проверка находится ли поле под атакой вражеской фигуры
209
- * (Используется для расчета возможных ходов для короля)
210
- * @param state состояние доски
211
- * @param pos позиция фигуры
212
- * @param target проверяемая клетка
213
- */
214
- static checkAttackedCell: (state: Cell[][], pos: CellPos, target: CellPos) => boolean;
215
- /**
216
- * Проверяет атакованные поля вражеской пешкой
217
- * (используется для получения возможных ходово для короля)
218
- * @param state состояние доски
219
- * @param pos текущая позиция пешки
220
- * @param target клетка - цель
221
- */
222
- static checkAttackedCellByPawn: (state: Cell[][], pos: CellPos, target: MoveByPawn) => boolean;
223
- /**
224
- * Проверяет находится ли позиция между атакованным королем
225
- * и атакующей фигурой
226
- * @param state состояние доски
227
- * @param pos проверяемая позиция
228
- * @param kingPos позиция союзного короля
229
- * @param attackerPos позиция атакующей фигуры
230
- */
231
- static checkPosBetweenAttckerAndKing: (state: Cell[][], pos: CellPos, kingPos: CellPos, attackerPos: CellPos) => boolean;
232
- /**
233
- * Корректирует возможные ходы фигуры в зависимости от того находится ли
234
- * фигура под атакой и стоит ли на линии атаки король за фигурой
235
- * @param state состояние доски
236
- * @param figurePos позиция фигуры
237
- * @param possibleMoves возможные ходы фигуры
238
- * @param linesWithCheck массив линий по которым есть шах на союзного короля
239
- */
240
- static correctionPossibleMoves: (state: Cell[][], figurePos: CellPos, possibleMoves: CellPos[], linesWithCheck: CellPos[][]) => CellPos[];
241
- /**
242
- * Возвращает всю атакованную линию дальнобойной фигурой
243
- * @param state состояние доски
244
- * @param figurePos позиция фигуры
245
- * @param direction направление атаки
246
- */
247
- static getFullAttackedLine: (state: Cell[][], figurePos: CellPos, direction: MoveDirection) => CellPos[];
248
- /**
249
- * Возвращает все атакованные врагом позиции
250
- * используется для проверки ходов короля
251
- * @param state состояние доски
252
- * @param figurePos позиция фигуры
253
- * @param reverse перевернута ли доска
254
- */
255
- static getAllAttckedPostionsByEnemys: (state: Cell[][], figurePos: CellPos, reverse: boolean) => CellPos[];
256
- /**
257
- * Возвращает возможные позиция для движения по диагонали
258
- * для Слона и Ферзя
259
- * @param state состояние доски
260
- * @param figurePos текущая позиция фигуры
261
- */
262
- static calcDiagonalMoves: (state: Cell[][], figurePos: CellPos, onCheckPossible?: OnCheckPossible, onCheckFigureInCell?: OnCheckPossible) => CellPos[];
263
- /**
264
- * Возвращает возможные позиция для движения по горизонтали и вертикали
265
- * для Ладьи и Ферзя
266
- * @param state состяние доски
267
- * @param figurePos
268
- * @returns
269
- */
270
- static calcHorizontalAndVerticalMoves: (state: Cell[][], figurePos: CellPos, onCheckPossible?: OnCheckPossible, onCheckFigureInCell?: OnCheckPossible) => CellPos[];
271
- /**
272
- * Возвращает возможные ходы для коня
273
- * @param state состояние доски
274
- * @param figurePos текущая позиция фигуры
275
- * @returns
276
- */
277
- static calcKnightMoves: (state: Cell[][], figurePos: CellPos, onCheckPossible?: OnCheckPossible) => CellPos[];
278
- /**
279
- * Проверяет возможность пешки пойти на клетку - цель
280
- * @param state состояние доски
281
- * @param pos текущая позиция пешки
282
- * @param target клетка - цель
283
- * @param pawnColor цвет пешки вычисленный заранее
284
- * @param reverse перевернута ли доска
285
- */
286
- static checkPossiblePawnMoveToPos: (state: Cell[][], pos: CellPos, target: MoveByPawn, pawnColor: FigureColor, reverse: boolean) => boolean;
287
- /**
288
- * Возвращает возможные позиции для пешки
289
- * @param state состояние доски
290
- * @param figurePos текущее положение пешки
291
- * @param revese перевернута ли доска
292
- * @returns
293
- */
294
- static calcPawnMoves: (state: Cell[][], figurePos: CellPos, revese: boolean, onCheckPossible?: typeof JSChessEngine.checkPossiblePawnMoveToPos | typeof JSChessEngine.checkAttackedCellByPawn) => CellPos[];
295
- /**
296
- * Проверяет возможна ли рокеровка
297
- * @param state состояние доски
298
- * @param kingPos позиция короля
299
- * @param reverse перевенута ли доска
300
- */
301
- static checkPossibleCastling: (state: Cell[][], kingPos: CellPos, castlingPath: CellPos[], reverse: boolean) => boolean;
302
- /**
303
- * Возвращает возможные ходы для короля
304
- * @param state состояние доски
305
- * @param figurePos позиция короля
306
- * @returns
307
- */
308
- static calcKingMoves: (state: Cell[][], figurePos: CellPos, reverse: boolean, onlyAttacks?: boolean) => CellPos[];
309
- static getNextMovesPawn: (state: Cell[][], figurePos: CellPos, reverse: boolean) => CellPos[];
310
- static getNextMovesBishop: (state: Cell[][], figurePos: CellPos) => CellPos[];
311
- static getNextMovesKnight: (state: Cell[][], figurePos: CellPos) => CellPos[];
312
- static getNextMovesRook: (state: Cell[][], figurePos: CellPos) => CellPos[];
313
- static getNextMovesQueen: (state: Cell[][], figurePos: CellPos) => CellPos[];
314
- static getNextMovesKing: (state: Cell[][], figurePos: CellPos, reverse: boolean) => CellPos[];
315
- /**
316
- * Возвращает линии по которым есть шах вражескому королю
317
- * @param state состояние доски
318
- * @param activeColor цвет фигур, которые сделали ход
319
- */
320
- static getLinesWithCheck: (state: Cell[][], activeColor: FigureColor, reverse?: boolean) => CellPos[][];
321
- /**
322
- * Принимает данные о фигуре, которой сыграли
323
- * затем обновляет и возвращает новое состояние доски
324
- * !!! Какой-то старнный эффект если не использовать мап
325
- * !!! Как будто происходит мутация состояния
326
- * @param state состояние доски
327
- * @param currentFigure фигура, которой сыграли
328
- * @param targetPos позиция на которую перемещаем фигуру
329
- * @param prevPos начальная позиция фигуры
330
- * @param reverse перевернута ли доска
331
- */
332
- static changeState: (state: Cell[][], currentFigure: Figure, targetPos: CellPos, prevPos: CellPos, reverse: boolean) => {
333
- updatedCells: Cell[][];
334
- attackedPos?: CellPos;
335
- };
336
- /**
337
- * Обновляет состояние с превращение пешки в фигуру
338
- * @param state состояние доски
339
- * @param fromPos с какой клетки сделан ход
340
- * @param targetPos на какую клетку сделали ход
341
- * @param transformFigure в какую фигуру превратить пешку
342
- */
343
- static transformPawnToFigure: (state: Cell[][], fromPos: CellPos, targetPos: CellPos, transformFigure: Figure) => Cell[][];
344
- /**
345
- * Возвращает плоский массив полей с фигурами
346
- * @param state состояние доски
347
- */
348
- static getFieldsWithFigures: (state: Cell[][]) => Cell[];
349
- /**
350
- * Возвращает результат игры
351
- * mat - Мат
352
- * pat - Пат
353
- * undefined - игра продолжается
354
- * @param state состояние доски
355
- * @param linesWithCheck линии по которым есть шахом
356
- * @param activeColor активный цвет
357
- */
358
- static getGameResult: (state: Cell[][], linesWithCheck: CellPos[][], activeColor: FigureColor, reverse: boolean) => GameResult | undefined;
359
- /**
360
- * Возвращает количество фигур указанного типа
361
- * @param flatState Обработанное состояние - одномерный массив клеток с фигурами одного цвета
362
- * @param figureType тип фигуры
363
- */
364
- static getFiguresCountByType: (flatState: Cell[], figureType: FigureType) => number;
365
- /**
366
- * Возвращает информацию о количестве съеденных фигур одного цвета
367
- * @param state состояние доски
368
- * @param color цвет съеденных фигур
369
- */
370
- static getBeatedFigures: (state: Cell[][], color: FigureColor, countsConfig?: typeof FIGURES_COUNTS) => BeatedCountsData;
371
- /**
372
- * По последним шести позициям - трем ходам
373
- * определяет было ли повторение позиций
374
- * если да, то это ничья,
375
- * Определить троекратное повторение
376
- * можно по последним 8ми ходам
377
- * поэтому нужно брать на сравнение массив
378
- * length - 8
379
- * @param fenMoves история ходов в формате FEN
380
- */
381
- static detectDrawByRepeatMoves(fenMoves: string[]): boolean;
382
- /**
383
- * Проверяет является ли ход рокеровкой
384
- * @param move данные хода
385
- */
386
- static getCastlingType(move: MoveData): CastlingType | undefined;
387
- }
388
- export {};
1
+ export type FigureType = 'pawn' | 'bishop' | 'knight' | 'rook' | 'queen' | 'king';
2
+ export type FigureColor = 'white' | 'black';
3
+ export type CellPos = [number, number];
4
+ export interface Figure {
5
+ type: FigureType;
6
+ color: FigureColor;
7
+ touched?: boolean;
8
+ position?: CellPos;
9
+ }
10
+ export type Piece = Figure;
11
+ export type PieceColor = FigureColor;
12
+ export type SquarePos = CellPos;
13
+ export type PieceType = FigureType;
14
+ export type CellColor = 'white' | 'black';
15
+ export interface Cell {
16
+ figure?: Figure;
17
+ beated?: boolean;
18
+ beatedFor?: FigureColor;
19
+ }
20
+ export interface ChessBoardConfig {
21
+ cellWhiteBg: string;
22
+ cellBlackBg: string;
23
+ cellSelectedBg: string;
24
+ cellSize: number;
25
+ figures: {
26
+ black: {
27
+ [figureType: string]: string;
28
+ };
29
+ white: {
30
+ [figureType: string]: string;
31
+ };
32
+ };
33
+ }
34
+ export interface MoveNotation {
35
+ move: string;
36
+ figure: Figure;
37
+ stateFEN: string;
38
+ }
39
+ export type MoveDirection = 'top' | 'right' | 'bottom' | 'left' | 'top-right' | 'bottom-right' | 'bottom-left' | 'top-left';
40
+ export type MoveType = 'move' | 'beat' | 'check' | 'double-check' | 'mat' | 'transform' | '0-0' | '0-0-0';
41
+ export type GameResultType = 'mat' | 'pat' | 'draw' | 'timeout' | 'surrender' | undefined;
42
+ export interface GameResult {
43
+ resultType: GameResultType;
44
+ winColor?: FigureColor;
45
+ }
46
+ export type PawnMoveType = 'first' | 'default' | 'attack';
47
+ export interface MoveByPawn {
48
+ pos: CellPos;
49
+ typeMove: PawnMoveType;
50
+ }
51
+ export interface MoveData {
52
+ from: CellPos;
53
+ to: CellPos;
54
+ figure: Figure;
55
+ type?: MoveType;
56
+ FEN?: string;
57
+ timeWhite?: number;
58
+ timeBlack?: number;
59
+ }
60
+ export interface BeatedCountsData {
61
+ pawn: number;
62
+ knight: number;
63
+ bishop: number;
64
+ rook: number;
65
+ queen: number;
66
+ }
67
+ export type CastlingType = '0-0' | '0-0-0';
68
+ export type OnCheckPossible = (state: Cell[][], figurePos: CellPos, targetPos: CellPos) => boolean;
69
+ declare const FIGURES_COUNTS: {
70
+ PAWNS_COUNT: number;
71
+ KNIGHTS_COUNT: number;
72
+ BISHOPS_COUNT: number;
73
+ ROOKS_COUNT: number;
74
+ QUEENS_COUNT: number;
75
+ KINGS_COUNT: number;
76
+ };
77
+ export declare class JSChessEngine {
78
+ /**
79
+ * Возвращает возможные ходы фигуры
80
+ * @param state состояние доски
81
+ * @param param1 позиция фигуры, которой хотим сыграть
82
+ * @param linesWithCheck линии по которым есть шах на союзного короля
83
+ * @param revese перевернута ли доска
84
+ */
85
+ static getNextMoves: (state: Cell[][], [i, j]: CellPos, linesWithCheck: CellPos[][], revese?: boolean) => CellPos[];
86
+ /**
87
+ * Возвращает первернутое состояние доски
88
+ * @param state состояние доски
89
+ */
90
+ static reverseChessBoard: (state: Cell[][]) => Cell[][];
91
+ /**
92
+ * Обновляет данные хода для того чтобы
93
+ * можно было применить ход к перевернутой доске
94
+ * @param moveData данные хода
95
+ * @param boardSize размер доски
96
+ */
97
+ static reverseMove: (moveData: MoveData, boardSize?: number) => MoveData;
98
+ /**
99
+ * Возвращет перевернутое значение для начала и конца хода фигуры
100
+ * Использовать при подсветке хода если доска перевернута
101
+ * @param moveVector Координаты начала и конца хода фигуры
102
+ * @param boardSize размер доски
103
+ */
104
+ static reverseMoveVector: (moveVector: CellPos[], boardSize?: number) => number[][];
105
+ /**
106
+ * Проверка на то что позиция находится в пределах доски
107
+ * @param state состояние доски
108
+ * @param pos проверяемая позиция
109
+ */
110
+ static checkInBorderBoard: (state: Cell[][], pos: CellPos) => boolean;
111
+ /**
112
+ * Возвращает цвет фигуры
113
+ * @param state состояние доски
114
+ * @param pos позиция фигуры
115
+ */
116
+ static getFigureColor: (state: Cell[][], pos: CellPos) => FigureColor;
117
+ /**
118
+ * Возвращает тип фигры
119
+ * @param state состояние доски
120
+ * @param pos позиция фигуры
121
+ */
122
+ static getFigureType: (state: Cell[][], pos: CellPos) => FigureType;
123
+ /**
124
+ * Проверка находится ли в указанной клетке вражеская фигура
125
+ * @param state состояние доски
126
+ * @param pos положение фигуры союзного цвета
127
+ * @param target положение фигуры - цели
128
+ */
129
+ static checkEnemy: (state: Cell[][], pos: CellPos, target: CellPos) => boolean;
130
+ /**
131
+ * Проверка находится ли в указанной клетке союзная фигура
132
+ * @param state состояние доски
133
+ * @param pos положение фигуры союзного цвета
134
+ * @param target положение фигуры - цели
135
+ */
136
+ static checkTeammate: (state: Cell[][], pos: CellPos, target: CellPos) => boolean;
137
+ /**
138
+ * Проверка на то что фигура-цель вражеский король
139
+ * @param state состояние доски
140
+ * @param pos положение фигуры союзного цвета
141
+ * @param target положение фигуры - цели
142
+ */
143
+ static checkEnemyKing: (state: Cell[][], pos: CellPos, target: CellPos) => boolean;
144
+ /**
145
+ * Проверяет битая ли клетка, клетка становится битой после того
146
+ * как пешка сделает ход на две клетки веперед
147
+ * @param state состояние доски
148
+ * @param target позиция проверяемой клетки
149
+ */
150
+ static checkBeatedCell: (state: Cell[][], target: CellPos) => boolean;
151
+ /**
152
+ * Возвращает есть ли фигура в указаной позиции
153
+ * @param state состояние доски
154
+ * @param pos проверяемая позиция
155
+ * @returns
156
+ */
157
+ static hasFigure: (state: Cell[][], pos: CellPos) => boolean;
158
+ /**
159
+ * Проверяет дальнобойная ли фигура
160
+ * слон, ладья или ферзь
161
+ * @param state состояние доски
162
+ * @param figurePos позиция фигуры
163
+ */
164
+ static checkFigureIsLongRange: (state: Cell[][], figurePos: CellPos) => boolean;
165
+ /**
166
+ * Возвращает количество вражеских которые можно атаковать (кроме короля) фигур из массива позиций
167
+ * @param state состояние доски
168
+ * @param figurePos позиция фигуры
169
+ * @param positions проверяемые позиции
170
+ */
171
+ static getCountEnemys: (state: Cell[][], figurePos: CellPos, positions: CellPos[]) => number;
172
+ /**
173
+ * Возвращает позицию союзного короля
174
+ * @param state состояние доски
175
+ * @param figurePos позиция фигуры
176
+ */
177
+ static getTeammateKingPos: (state: Cell[][], figurePos: CellPos) => CellPos;
178
+ /**
179
+ * Возвращает все клетки с вражескими фигурами
180
+ * @param state состояние доски
181
+ * @param pos позиция союзной фигуры
182
+ */
183
+ static getAllEnemysPositions: (state: Cell[][], pos: CellPos) => CellPos[];
184
+ /**
185
+ * Возвращает позиции фигур-союзников по цвету
186
+ * @param state состояние доски
187
+ * @param color цвет по которому ищем фигуры-союзники
188
+ */
189
+ static getAllTeammatesPositionsByColor: (state: Cell[][], color: FigureColor) => CellPos[];
190
+ /**
191
+ * Полная проверка возможности хода для фигур: pawn, knigt, bishop, rook, queen
192
+ * @param state состояния доски
193
+ * @param pos положение фигуры союзного цвета
194
+ * @param target позиция клетки - цели
195
+ * @returns
196
+ */
197
+ static checkPossibleMoveTo: (state: Cell[][], pos: CellPos, target: CellPos) => boolean;
198
+ /**
199
+ * Прооверяет возможность атаки клетки
200
+ * Если в клетке вражеская фигура, считает ее атакованной
201
+ * Необходима для проверки нахождения вражеского короля за атакованной фигурой
202
+ * @param state состояние доски
203
+ * @param figurePos позиция фигураы
204
+ * @param target клетака под атакой
205
+ */
206
+ static checkPossibleAttackTo: (state: Cell[][], figurePos: CellPos, target: CellPos) => boolean;
207
+ /**
208
+ * Проверка находится ли поле под атакой вражеской фигуры
209
+ * (Используется для расчета возможных ходов для короля)
210
+ * @param state состояние доски
211
+ * @param pos позиция фигуры
212
+ * @param target проверяемая клетка
213
+ */
214
+ static checkAttackedCell: (state: Cell[][], pos: CellPos, target: CellPos) => boolean;
215
+ /**
216
+ * Проверяет атакованные поля вражеской пешкой
217
+ * (используется для получения возможных ходово для короля)
218
+ * @param state состояние доски
219
+ * @param pos текущая позиция пешки
220
+ * @param target клетка - цель
221
+ */
222
+ static checkAttackedCellByPawn: (state: Cell[][], pos: CellPos, target: MoveByPawn) => boolean;
223
+ /**
224
+ * Проверяет находится ли позиция между атакованным королем
225
+ * и атакующей фигурой
226
+ * @param state состояние доски
227
+ * @param pos проверяемая позиция
228
+ * @param kingPos позиция союзного короля
229
+ * @param attackerPos позиция атакующей фигуры
230
+ */
231
+ static checkPosBetweenAttckerAndKing: (state: Cell[][], pos: CellPos, kingPos: CellPos, attackerPos: CellPos) => boolean;
232
+ /**
233
+ * Корректирует возможные ходы фигуры в зависимости от того находится ли
234
+ * фигура под атакой и стоит ли на линии атаки король за фигурой
235
+ * @param state состояние доски
236
+ * @param figurePos позиция фигуры
237
+ * @param possibleMoves возможные ходы фигуры
238
+ * @param linesWithCheck массив линий по которым есть шах на союзного короля
239
+ */
240
+ static correctionPossibleMoves: (state: Cell[][], figurePos: CellPos, possibleMoves: CellPos[], linesWithCheck: CellPos[][]) => CellPos[];
241
+ /**
242
+ * Возвращает всю атакованную линию дальнобойной фигурой
243
+ * @param state состояние доски
244
+ * @param figurePos позиция фигуры
245
+ * @param direction направление атаки
246
+ */
247
+ static getFullAttackedLine: (state: Cell[][], figurePos: CellPos, direction: MoveDirection) => CellPos[];
248
+ /**
249
+ * Возвращает все атакованные врагом позиции
250
+ * используется для проверки ходов короля
251
+ * @param state состояние доски
252
+ * @param figurePos позиция фигуры
253
+ * @param reverse перевернута ли доска
254
+ */
255
+ static getAllAttckedPostionsByEnemys: (state: Cell[][], figurePos: CellPos, reverse: boolean) => CellPos[];
256
+ /**
257
+ * Возвращает возможные позиция для движения по диагонали
258
+ * для Слона и Ферзя
259
+ * @param state состояние доски
260
+ * @param figurePos текущая позиция фигуры
261
+ */
262
+ static calcDiagonalMoves: (state: Cell[][], figurePos: CellPos, onCheckPossible?: OnCheckPossible, onCheckFigureInCell?: OnCheckPossible) => CellPos[];
263
+ /**
264
+ * Возвращает возможные позиция для движения по горизонтали и вертикали
265
+ * для Ладьи и Ферзя
266
+ * @param state состяние доски
267
+ * @param figurePos
268
+ * @returns
269
+ */
270
+ static calcHorizontalAndVerticalMoves: (state: Cell[][], figurePos: CellPos, onCheckPossible?: OnCheckPossible, onCheckFigureInCell?: OnCheckPossible) => CellPos[];
271
+ /**
272
+ * Возвращает возможные ходы для коня
273
+ * @param state состояние доски
274
+ * @param figurePos текущая позиция фигуры
275
+ * @returns
276
+ */
277
+ static calcKnightMoves: (state: Cell[][], figurePos: CellPos, onCheckPossible?: OnCheckPossible) => CellPos[];
278
+ /**
279
+ * Проверяет возможность пешки пойти на клетку - цель
280
+ * @param state состояние доски
281
+ * @param pos текущая позиция пешки
282
+ * @param target клетка - цель
283
+ * @param pawnColor цвет пешки вычисленный заранее
284
+ * @param reverse перевернута ли доска
285
+ */
286
+ static checkPossiblePawnMoveToPos: (state: Cell[][], pos: CellPos, target: MoveByPawn, pawnColor: FigureColor, reverse: boolean) => boolean;
287
+ /**
288
+ * Возвращает возможные позиции для пешки
289
+ * @param state состояние доски
290
+ * @param figurePos текущее положение пешки
291
+ * @param revese перевернута ли доска
292
+ * @returns
293
+ */
294
+ static calcPawnMoves: (state: Cell[][], figurePos: CellPos, revese: boolean, onCheckPossible?: typeof JSChessEngine.checkPossiblePawnMoveToPos | typeof JSChessEngine.checkAttackedCellByPawn) => CellPos[];
295
+ /**
296
+ * Проверяет возможна ли рокеровка
297
+ * @param state состояние доски
298
+ * @param kingPos позиция короля
299
+ * @param reverse перевенута ли доска
300
+ */
301
+ static checkPossibleCastling: (state: Cell[][], kingPos: CellPos, castlingPath: CellPos[], reverse: boolean) => boolean;
302
+ /**
303
+ * Возвращает возможные ходы для короля
304
+ * @param state состояние доски
305
+ * @param figurePos позиция короля
306
+ * @returns
307
+ */
308
+ static calcKingMoves: (state: Cell[][], figurePos: CellPos, reverse: boolean, onlyAttacks?: boolean) => CellPos[];
309
+ static getNextMovesPawn: (state: Cell[][], figurePos: CellPos, reverse: boolean) => CellPos[];
310
+ static getNextMovesBishop: (state: Cell[][], figurePos: CellPos) => CellPos[];
311
+ static getNextMovesKnight: (state: Cell[][], figurePos: CellPos) => CellPos[];
312
+ static getNextMovesRook: (state: Cell[][], figurePos: CellPos) => CellPos[];
313
+ static getNextMovesQueen: (state: Cell[][], figurePos: CellPos) => CellPos[];
314
+ static getNextMovesKing: (state: Cell[][], figurePos: CellPos, reverse: boolean) => CellPos[];
315
+ /**
316
+ * Возвращает линии по которым есть шах вражескому королю
317
+ * @param state состояние доски
318
+ * @param activeColor цвет фигур, которые сделали ход
319
+ */
320
+ static getLinesWithCheck: (state: Cell[][], activeColor: FigureColor, reverse?: boolean) => CellPos[][];
321
+ /**
322
+ * Принимает данные о фигуре, которой сыграли
323
+ * затем обновляет и возвращает новое состояние доски
324
+ * !!! Какой-то старнный эффект если не использовать мап
325
+ * !!! Как будто происходит мутация состояния
326
+ * @param state состояние доски
327
+ * @param currentFigure фигура, которой сыграли
328
+ * @param targetPos позиция на которую перемещаем фигуру
329
+ * @param prevPos начальная позиция фигуры
330
+ * @param reverse перевернута ли доска
331
+ */
332
+ static changeState: (state: Cell[][], currentFigure: Figure, targetPos: CellPos, prevPos: CellPos, reverse: boolean) => {
333
+ updatedCells: Cell[][];
334
+ attackedPos?: CellPos;
335
+ };
336
+ /**
337
+ * Обновляет состояние с превращение пешки в фигуру
338
+ * @param state состояние доски
339
+ * @param fromPos с какой клетки сделан ход
340
+ * @param targetPos на какую клетку сделали ход
341
+ * @param transformFigure в какую фигуру превратить пешку
342
+ */
343
+ static transformPawnToFigure: (state: Cell[][], fromPos: CellPos, targetPos: CellPos, transformFigure: Figure) => Cell[][];
344
+ /**
345
+ * Возвращает плоский массив полей с фигурами
346
+ * @param state состояние доски
347
+ */
348
+ static getFieldsWithFigures: (state: Cell[][]) => Cell[];
349
+ /**
350
+ * Возвращает результат игры
351
+ * mat - Мат
352
+ * pat - Пат
353
+ * undefined - игра продолжается
354
+ * @param state состояние доски
355
+ * @param linesWithCheck линии по которым есть шахом
356
+ * @param activeColor активный цвет
357
+ */
358
+ static getGameResult: (state: Cell[][], linesWithCheck: CellPos[][], activeColor: FigureColor, reverse: boolean) => GameResult | undefined;
359
+ /**
360
+ * Возвращает количество фигур указанного типа
361
+ * @param flatState Обработанное состояние - одномерный массив клеток с фигурами одного цвета
362
+ * @param figureType тип фигуры
363
+ */
364
+ static getFiguresCountByType: (flatState: Cell[], figureType: FigureType) => number;
365
+ /**
366
+ * Возвращает информацию о количестве съеденных фигур одного цвета
367
+ * @param state состояние доски
368
+ * @param color цвет съеденных фигур
369
+ */
370
+ static getBeatedFigures: (state: Cell[][], color: FigureColor, countsConfig?: typeof FIGURES_COUNTS) => BeatedCountsData;
371
+ /**
372
+ * По последним шести позициям - трем ходам
373
+ * определяет было ли повторение позиций
374
+ * если да, то это ничья,
375
+ * Определить троекратное повторение
376
+ * можно по последним 8ми ходам
377
+ * поэтому нужно брать на сравнение массив
378
+ * length - 8
379
+ * @param fenMoves история ходов в формате FEN
380
+ */
381
+ static detectDrawByRepeatMoves(fenMoves: string[], boardSize?: number): boolean;
382
+ /**
383
+ * Проверяет является ли ход рокеровкой
384
+ * @param move данные хода
385
+ */
386
+ static getCastlingType(move: MoveData): CastlingType | undefined;
387
+ }
388
+ export {};