online multiplayer chess game (note server currently down)
Diffstat (limited to 'ui/menus/lobby/PGNEntry.gd')
-rw-r--r--ui/menus/lobby/PGNEntry.gd32
1 files changed, 32 insertions, 0 deletions
diff --git a/ui/menus/lobby/PGNEntry.gd b/ui/menus/lobby/PGNEntry.gd
new file mode 100644
index 0000000..7be8108
--- /dev/null
+++ b/ui/menus/lobby/PGNEntry.gd
@@ -0,0 +1,32 @@
+extends LineEdit
+
+onready var checkmark: Label = $"../Checkmark"
+
+signal pgn_selected(m_array)
+
+
+func _init() -> void:
+ connect("text_changed", self, "text_changed")
+
+
+func text_changed(new_text: String) -> void:
+ if !new_text:
+ checkmark.hide()
+ return
+ var status = validate_pgn(new_text)
+ checkmark.show()
+ if status:
+ emit_signal("pgn_selected", status)
+ checkmark.text = ""
+ else:
+ checkmark.text = ""
+
+
+func validate_pgn(p: String):
+ var pgn_parser := PGN.new()
+ var parsed = pgn_parser.parse(p)
+ if parsed != null:
+ var c = Chess.new()
+ if c.load_pgn(text) == OK and !c.game_over():
+ return parsed.moves
+ return false