online multiplayer chess game (note server currently down)
Diffstat (limited to 'SanParse/SanParse.gd')
-rw-r--r--SanParse/SanParse.gd9
1 files changed, 9 insertions, 0 deletions
diff --git a/SanParse/SanParse.gd b/SanParse/SanParse.gd
index 3669672..9a1f130 100644
--- a/SanParse/SanParse.gd
+++ b/SanParse/SanParse.gd
@@ -17,6 +17,7 @@ var regexs := {
"specific_row_piece_capture": compile("^([KQBNR])([0-9])x([a-h])([1-8])"),
"long_piece_capture": compile("^([KQBNR])([a-h])([0-9])x([a-h])([1-8])"),
"pawn_promotion": compile("^([a-h])([1-8])=?([KQBNR])"),
+ "long_pawn_promotion": compile("^([a-h])([1-8])([a-h])([1-8])=?([KQBNR])"),
"castling": compile("^(O-O-O|O-O)"),
}
@@ -144,6 +145,14 @@ func regexmatch(san: String) -> Move:
mov.set_check_type(cap[4])
return mov
+ re = regexs.long_pawn_promotion.search(san)
+ if re:
+ var cap = re.strings
+ var mov = Move.new(PAWN, [pos(cap[1], cap[2]), pos(cap[3], cap[4])], true)
+ mov.promotion = from_str(cap[5])
+ mov.set_check_type(cap[6])
+ return mov
+
re = regexs.castling.search(san)
if re:
var cap = re.strings