Fix direction checking for jump moves.

This commit is contained in:
yukirij 2024-08-20 13:27:18 -07:00
parent c6fcb6bd78
commit e7b3556ac4

View File

@ -424,8 +424,11 @@ GAME.Game = class {
let direction = GAME.Const.get_direction(direction_id);
let stride = (moves.stride & mask) != 0;
let dir_mask = mask;
if((dir_mask & 0xFFF) == 0) { dir_mask >>= 12; }
// Get initial status in direction.
let valid = (permitted_moves & mask) != 0;
let valid = true; //(permitted_moves & mask) != 0;
let pieces_blocking = 0;
let move_hex = hex.copy();
@ -498,7 +501,7 @@ GAME.Game = class {
if(dist == 1) { check = GAME.Const.Check.Direct; }
else { check = GAME.Const.Check.Stride; }
if(stride) { block = mask; }
if(stride) { block = dir_mask; }
// Apply check to previous moves.
for(let idist = 1; idist < dist; idist++) {
@ -510,7 +513,7 @@ GAME.Game = class {
// Apply blocking to last .
for(let idist = 1; idist < dist; idist++) {
if(this.board.tiles[tiles[tiles.length - idist].tile].piece !== null) {
tiles[tiles.length - idist].block = mask;
tiles[tiles.length - idist].block = dir_mask;
break;
}
}
@ -525,9 +528,9 @@ GAME.Game = class {
// Handle blocking restrictions.
if(block_directions != 0) {
if(piece.piece == GAME.Const.PieceId.Omen) {
result = result && ((mask & block_directions) == 0 || tile_occupied);
result = result && ((dir_mask & block_directions) == 0 || tile_occupied);
} else {
result = result && ((mask & block_directions) != 0 || swap);
result = result && ((dir_mask & block_directions) != 0 || swap);
}
}