online multiplayer chess game (note server currently down)
Diffstat (limited to 'ui/menus/sidebarright/OpeningLabel.gd')
-rw-r--r--ui/menus/sidebarright/OpeningLabel.gd48
1 files changed, 48 insertions, 0 deletions
diff --git a/ui/menus/sidebarright/OpeningLabel.gd b/ui/menus/sidebarright/OpeningLabel.gd
new file mode 100644
index 0000000..4b3b0d6
--- /dev/null
+++ b/ui/menus/sidebarright/OpeningLabel.gd
@@ -0,0 +1,48 @@
+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: String = Globals.grid.chess.fen()
+ if fen != Globals.grid.chess.DEFAULT_POSITION && fen != current_req:
+ if current_req:
+ http_request.cancel_request()
+ current_req = fen
+ var u = url % fen.replace(" ", "_").http_escape()
+ Log.net(["REQUEST: get opening with url:", u])
+ http_request.request(u)
+ else:
+ set_text("")
+
+
+func _request_completed(result, _response_code, _headers, byte_body):
+ set_text("") # empty text and hide self
+ 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:
+ set_text(" %s" % response.opening.name)
+
+
+func set_text(_text := ""):
+ visible = _text != ""
+ text = _text.strip_edges()