Chess: Add castling to possible moves detection
This commit is contained in:
parent
74f8dc3bf9
commit
04dabe4091
@ -589,23 +589,26 @@ local function get_theoretical_moves_from(meta, board, from_idx)
|
|||||||
|
|
||||||
-- KING
|
-- KING
|
||||||
elseif piece == "king" then
|
elseif piece == "king" then
|
||||||
local dx = from_x - to_x
|
|
||||||
local dy = from_y - to_y
|
|
||||||
|
|
||||||
if dx < 0 then
|
|
||||||
dx = -dx
|
|
||||||
end
|
|
||||||
|
|
||||||
if dy < 0 then
|
|
||||||
dy = -dy
|
|
||||||
end
|
|
||||||
|
|
||||||
if dx > 1 or dy > 1 then
|
|
||||||
moves[to_idx] = nil
|
|
||||||
end
|
|
||||||
|
|
||||||
if attacked(color, xy_to_index(to_x, to_y), board) then
|
if attacked(color, xy_to_index(to_x, to_y), board) then
|
||||||
moves[to_idx] = nil
|
moves[to_idx] = nil
|
||||||
|
else
|
||||||
|
local dx = from_x - to_x
|
||||||
|
local dy = from_y - to_y
|
||||||
|
|
||||||
|
if dx < 0 then
|
||||||
|
dx = -dx
|
||||||
|
end
|
||||||
|
|
||||||
|
if dy < 0 then
|
||||||
|
dy = -dy
|
||||||
|
end
|
||||||
|
|
||||||
|
if dx > 1 or dy > 1 then
|
||||||
|
local cc = can_castle(meta, board, "board", from_idx, to_idx)
|
||||||
|
if not cc then
|
||||||
|
moves[to_idx] = nil
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
Loading…
Reference in New Issue
Block a user