Skip to content

Commit d4b8f02

Browse files
authored
Merge pull request #37 from Mind-Sports-Games/pla-982-add-bestemshe-in-lilafront-end
Add Bestemshe variant
2 parents 8e9fca4 + 8cf3249 commit d4b8f02

File tree

5 files changed

+35
-3
lines changed

5 files changed

+35
-3
lines changed

src/compat.ts

+2
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@ export function playstrategyRules(
7979
| 'amazons'
8080
| 'oware'
8181
| 'togyzkumalak'
82+
| 'bestemshe'
8283
| 'go9x9'
8384
| 'go13x13'
8485
| 'go19x19'
@@ -140,6 +141,7 @@ export function playstrategyVariants(
140141
| 'amazons'
141142
| 'oware'
142143
| 'togyzkumalak'
144+
| 'bestemshe'
143145
| 'go9x9'
144146
| 'go13x13'
145147
| 'go19x19'

src/fen.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,8 @@ export const INITIAL_FEN = INITIAL_EPD + ' 0 1';
2525
export const EMPTY_BOARD_FEN = '8/8/8/8/8/8/8/8';
2626
export const EMPTY_EPD = EMPTY_BOARD_FEN + ' w - -';
2727
export const EMPTY_FEN = EMPTY_EPD + ' 0 1';
28-
export const COMMA_FEN_RULES = ['oware', 'togyzkumalak', 'backgammon', 'nackgammon'];
29-
export const MANCALA_FEN_VARIANT = ['oware', 'togyzkumalak'];
28+
export const COMMA_FEN_RULES = ['oware', 'togyzkumalak', 'bestemshe', 'backgammon', 'nackgammon'];
29+
export const MANCALA_FEN_VARIANT = ['oware', 'togyzkumalak', 'bestemshe'];
3030

3131
export enum InvalidFen {
3232
Fen = 'ERR_FEN',
@@ -522,7 +522,7 @@ export const parseDefaultFen = (rules: Rules) => (fen: string): Result<Setup, Fe
522522
// ------------------------------------------------------------------------------
523523
// Regular fen parsing
524524
export const parseFen = (rules: Rules) => (fen: string): Result<Setup, FenError> => {
525-
if (rules === 'oware' || rules === 'togyzkumalak') {
525+
if (rules === 'oware' || rules === 'togyzkumalak' || rules === 'bestemshe') {
526526
return parseMancalaFen(rules)(fen);
527527
}
528528
if (rules === 'go9x9' || rules === 'go13x13' || rules === 'go19x19') {

src/types.ts

+1
Original file line numberDiff line numberDiff line change
@@ -311,6 +311,7 @@ export const RULES = [
311311
'amazons',
312312
'oware',
313313
'togyzkumalak',
314+
'bestemshe',
314315
'go9x9',
315316
'go13x13',
316317
'go19x19',

src/util.ts

+2
Original file line numberDiff line numberDiff line change
@@ -267,6 +267,8 @@ export const dimensionsForRules = (rules: Rules): BoardDimensions => {
267267
return { ranks: 2, files: 6 };
268268
case 'togyzkumalak':
269269
return { ranks: 2, files: 9 };
270+
case 'bestemshe':
271+
return { ranks: 2, files: 5 };
270272
case 'go9x9':
271273
return { ranks: 9, files: 9 };
272274
case 'go13x13':

src/variant.ts

+27
Original file line numberDiff line numberDiff line change
@@ -1033,6 +1033,29 @@ export class Togyzkumalak extends Chess {
10331033
}
10341034
}
10351035

1036+
export class Bestemshe extends Chess {
1037+
// TODO - move into own class and have variant family
1038+
protected constructor() {
1039+
super('bestemshe');
1040+
}
1041+
1042+
static default(): Bestemshe {
1043+
return super.default();
1044+
}
1045+
1046+
static fromSetup(setup: Setup): Result<Bestemshe, PositionError> {
1047+
return super.fromSetup(setup);
1048+
}
1049+
1050+
clone(): Bestemshe {
1051+
return super.clone() as Bestemshe;
1052+
}
1053+
1054+
hasInsufficientMaterial(_playerIndex: PlayerIndex): boolean {
1055+
return false;
1056+
}
1057+
}
1058+
10361059
export class Go9x9 extends Chess {
10371060
// TODO - move into own class and have variant family
10381061
protected constructor() {
@@ -1194,6 +1217,8 @@ export function defaultPosition(rules: Rules): Position {
11941217
return Oware.default();
11951218
case 'togyzkumalak':
11961219
return Togyzkumalak.default();
1220+
case 'bestemshe':
1221+
return Bestemshe.default();
11971222
case 'go9x9':
11981223
return Go9x9.default();
11991224
case 'go13x13':
@@ -1257,6 +1282,8 @@ export function setupPosition(rules: Rules, setup: Setup): Result<Position, Posi
12571282
return Oware.fromSetup(setup);
12581283
case 'togyzkumalak':
12591284
return Togyzkumalak.fromSetup(setup);
1285+
case 'bestemshe':
1286+
return Bestemshe.fromSetup(setup);
12601287
case 'go9x9':
12611288
return Go9x9.fromSetup(setup);
12621289
case 'go13x13':

0 commit comments

Comments
 (0)