online multiplayer chess game (note server currently down)
Diffstat (limited to 'SanParse/SanParse.gd')
| -rw-r--r-- | SanParse/SanParse.gd | 9 |
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 |