UNPKG

@real_one_chess_king/game-logic

Version:
279 lines 11.3 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.RulesRepository = void 0; const color_1 = require("./color"); const piece_constants_1 = require("./piece/piece.constants"); const movement_rules_const_1 = require("./rules/piece-movement/movement-rules.const"); const crypto_1 = require("crypto"); const movement_rule_1 = require("./rules/piece-movement/movement-rule"); class RulesRepository { pawnDefaultTransformationTypes = [ piece_constants_1.PieceType.Queen, piece_constants_1.PieceType.Rook, piece_constants_1.PieceType.Bishop, piece_constants_1.PieceType.Knight, ]; getPawnTransformationPieces() { return this.pawnDefaultTransformationTypes; } getDefaultPawnRules(color, withPostRulest = true) { const verticalDirection = color == color_1.Color.white ? [movement_rule_1.Direction.Down] : [movement_rule_1.Direction.Up]; const diagonalDirection = color == color_1.Color.white ? [movement_rule_1.Direction.DownRight, movement_rule_1.Direction.DownLeft] : [movement_rule_1.Direction.UpRight, movement_rule_1.Direction.UpLeft]; return { movementRules: [ { id: (0, crypto_1.randomUUID)(), name: movement_rules_const_1.MovementRules.VerticalMovementRule, moveToEmpty: true, moveToKill: false, collision: true, distance: 1, directions: verticalDirection, speed: 1, }, { id: (0, crypto_1.randomUUID)(), name: movement_rules_const_1.MovementRules.DiagonalMovementRule, moveToEmpty: false, moveToKill: true, collision: true, distance: 1, directions: diagonalDirection, speed: 1, }, { id: (0, crypto_1.randomUUID)(), name: movement_rules_const_1.MovementRules.PositionSpecificMovementRule, moveToEmpty: true, moveToKill: false, collision: true, distance: 2, speed: 2, directions: verticalDirection, activatePositions: { y: color == color_1.Color.white ? [1] : [6], }, }, { id: (0, crypto_1.randomUUID)(), name: movement_rules_const_1.MovementRules.TakeOnThePassMovementRule, moveToEmpty: true, moveToKill: false, collision: true, distance: 1, speed: 1, directions: diagonalDirection, activatePositions: { y: color == color_1.Color.white ? [4] : [3], }, }, ], postMovementRules: withPostRulest ? [ { id: (0, crypto_1.randomUUID)(), name: movement_rules_const_1.PostMovementRules.TransformationOnPositionRule, color, maxCharges: 1, triggerOnY: color === color_1.Color.white ? 7 : 0, possiblePiecesTypes: this.pawnDefaultTransformationTypes, }, ] : [], }; } getDefaultRookRules() { return { movementRules: [ { id: (0, crypto_1.randomUUID)(), name: movement_rules_const_1.MovementRules.VerticalMovementRule, moveToEmpty: true, moveToKill: true, collision: true, distance: 8, directions: [movement_rule_1.Direction.Up, movement_rule_1.Direction.Down], speed: 1, }, { id: (0, crypto_1.randomUUID)(), name: movement_rules_const_1.MovementRules.HorizontalMovementRule, moveToEmpty: true, moveToKill: true, collision: true, distance: 8, directions: [movement_rule_1.Direction.Left, movement_rule_1.Direction.Right], speed: 1, }, ], }; } getDefaultBishopRules() { return { movementRules: [ { id: (0, crypto_1.randomUUID)(), name: movement_rules_const_1.MovementRules.DiagonalMovementRule, moveToEmpty: true, moveToKill: true, collision: true, distance: 8, directions: [ movement_rule_1.Direction.UpLeft, movement_rule_1.Direction.DownLeft, movement_rule_1.Direction.UpRight, movement_rule_1.Direction.DownRight, ], speed: 1, }, ], }; } getDefaultKnightRules() { return { movementRules: [ { id: (0, crypto_1.randomUUID)(), name: movement_rules_const_1.MovementRules.KnightMovementRule, moveToEmpty: true, moveToKill: true, collision: false, distance: 1, directions: [ movement_rule_1.Direction.UpLeft, movement_rule_1.Direction.DownLeft, movement_rule_1.Direction.UpRight, movement_rule_1.Direction.DownRight, movement_rule_1.Direction.Up, movement_rule_1.Direction.Down, movement_rule_1.Direction.Right, movement_rule_1.Direction.Left, ], speed: 1, }, ], }; } getDefaultQueenRules() { return { movementRules: [ { id: (0, crypto_1.randomUUID)(), name: movement_rules_const_1.MovementRules.DiagonalMovementRule, moveToEmpty: true, moveToKill: true, collision: true, distance: 8, directions: [ movement_rule_1.Direction.UpLeft, movement_rule_1.Direction.DownLeft, movement_rule_1.Direction.UpRight, movement_rule_1.Direction.DownRight, ], speed: 1, }, { id: (0, crypto_1.randomUUID)(), name: movement_rules_const_1.MovementRules.VerticalMovementRule, moveToEmpty: true, moveToKill: true, collision: true, distance: 8, directions: [movement_rule_1.Direction.Up, movement_rule_1.Direction.Down], speed: 1, }, { id: (0, crypto_1.randomUUID)(), name: movement_rules_const_1.MovementRules.HorizontalMovementRule, moveToEmpty: true, moveToKill: true, collision: true, distance: 8, directions: [movement_rule_1.Direction.Left, movement_rule_1.Direction.Right], speed: 1, }, ], }; } getDefaultKingsideCastling(color) { const kingPos = color === color_1.Color.white ? [3, 0] : [3, 7]; const rookPos = color === color_1.Color.white ? [0, 0] : [0, 7]; return { id: (0, crypto_1.randomUUID)(), name: movement_rules_const_1.MovementRules.CastlingMovementRule, moveToEmpty: true, moveToKill: false, collision: true, distance: 2, directions: [movement_rule_1.Direction.Right, movement_rule_1.Direction.Left], speed: 1, color: color, mainPieceCoordinate: kingPos, foreginPieceCoordinate: rookPos, }; } getDefaultQueenSideCastling(color) { const kingPos = color === color_1.Color.white ? [3, 0] : [3, 7]; const rookPos = color === color_1.Color.white ? [7, 0] : [7, 7]; return { id: (0, crypto_1.randomUUID)(), name: movement_rules_const_1.MovementRules.CastlingMovementRule, moveToEmpty: true, moveToKill: false, collision: true, distance: 2, directions: [movement_rule_1.Direction.Right, movement_rule_1.Direction.Left], speed: 1, color: color, mainPieceCoordinate: kingPos, foreginPieceCoordinate: rookPos, }; } getDefaultKingRules(color) { return { movementRules: [ { id: (0, crypto_1.randomUUID)(), name: movement_rules_const_1.MovementRules.DiagonalMovementRule, moveToEmpty: true, moveToKill: true, collision: true, distance: 1, directions: [ movement_rule_1.Direction.UpLeft, movement_rule_1.Direction.DownLeft, movement_rule_1.Direction.UpRight, movement_rule_1.Direction.DownRight, ], speed: 1, }, { id: (0, crypto_1.randomUUID)(), name: movement_rules_const_1.MovementRules.VerticalMovementRule, moveToEmpty: true, moveToKill: true, collision: true, distance: 1, directions: [movement_rule_1.Direction.Up, movement_rule_1.Direction.Down], speed: 1, }, { id: (0, crypto_1.randomUUID)(), name: movement_rules_const_1.MovementRules.HorizontalMovementRule, moveToEmpty: true, moveToKill: true, collision: true, distance: 1, directions: [movement_rule_1.Direction.Left, movement_rule_1.Direction.Right], speed: 1, }, this.getDefaultKingsideCastling(color), this.getDefaultQueenSideCastling(color), ], }; } } exports.RulesRepository = RulesRepository; //# sourceMappingURL=rules.repository.js.map