online multiplayer chess game (note server currently down)
Diffstat (limited to 'ui/menus/sidebarright/OpeningLabel.gd')
| -rw-r--r-- | ui/menus/sidebarright/OpeningLabel.gd | 42 |
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 |