online multiplayer chess game (note server currently down)
Diffstat (limited to 'ui/menus/sidebarright/OpeningLabel.gd')
-rw-r--r--ui/menus/sidebarright/OpeningLabel.gd42
1 files changed, 42 insertions, 0 deletions
diff --git a/ui/menus/sidebarright/OpeningLabel.gd b/ui/menus/sidebarright/OpeningLabel.gd
new file mode 100644
index 0000000..47ba3c6
--- /dev/null
+++ b/ui/menus/sidebarright/OpeningLabel.gd
@@ -0,0 +1,42 @@
+extends Label
+class_name OpeningLabel
+
+var http_request := HTTPRequest.new()
+
+var url := "https://explorer.lichess.ovh/masters?topGames=0&moves=2&fen=%s"
+var current_req := ""
+
+
+func _ready():
+ add_child(http_request)
+ Events.connect("turn_over", self, "update_opening")
+ Globals.grid.connect("load_pgn", self, "update_opening")
+ Globals.grid.connect("clear_pgn", self, "update_opening")
+ Globals.grid.connect("remove_last", self, "update_opening")
+ http_request.connect("request_completed", self, "_request_completed")
+
+
+func update_opening(_var := null) -> void:
+ if Utils.internet:
+ var fen := Globals.grid.chess.fen()
+ if fen != Globals.grid.chess.DEFAULT_POSITION && fen != current_req:
+ if current_req:
+ http_request.cancel_request()
+ text = ""
+ current_req = fen
+ var u = url % fen.replace(" ", "_").http_escape()
+ Log.net(["REQUEST: get opening with url:", u])
+ http_request.request(u)
+
+
+func _request_completed(result, _response_code, _headers, byte_body):
+ text = ""
+ current_req = ""
+ if result != OK: # technically REQUEST_SUCCESS but i cant find it
+ return
+ var body = byte_body.get_string_from_utf8()
+ Log.net("RECIEVED:" + body)
+ var response = parse_json(body)
+
+ if response.opening != null and "name" in response.opening:
+ text = " %s" % response.opening.name