online multiplayer chess game (note server currently down)
Diffstat (limited to 'ui/menus/sidebarright/rematchbutton.gd')
| -rw-r--r-- | ui/menus/sidebarright/rematchbutton.gd | 56 |
1 files changed, 56 insertions, 0 deletions
diff --git a/ui/menus/sidebarright/rematchbutton.gd b/ui/menus/sidebarright/rematchbutton.gd new file mode 100644 index 0000000..1d85759 --- /dev/null +++ b/ui/menus/sidebarright/rematchbutton.gd @@ -0,0 +1,56 @@ +extends ConfirmButton +class_name RematchButton + +const request_message = "%s requested a rematch" +const declined_message = "rematch declined" + +onready var status := get_node("%Status") as StatusLabel + + +func _ready() -> void: + PacketHandler.connect("rematch_result", self, "signal_recieved") + + +func _pressed() -> void: + if Globals.spectating: + return + if waiting_on_answer: + _confirmed(true) + else: + var msg = request_message % Utils.expand_color(Globals.grid.team) + var pckt = {gamecode = PacketHandler.game_code, question = msg} + PacketHandler.send_packet(pckt, PacketHandler.HEADERS.rematch) + Globals.chat.server(msg) + set_disabled(true) + + +func signal_recieved(sig: Dictionary) -> void: + if "question" in sig: + Globals.chat.server(sig.question) + confirm() + else: + set_disabled(false) + if sig.accepted: + rematch() + else: + # declined signal reception + Globals.chat.server(declined_message) + + +func _confirmed(what: bool) -> void: + ._confirmed(what) + var pckt = {gamecode = PacketHandler.game_code, accepted = what} + PacketHandler.send_packet(pckt, PacketHandler.HEADERS.rematch) + if what: + rematch() + else: + # pressed no reception + Globals.chat.server(declined_message) + + +func rematch(): + Globals.chat.server("reloaded") + status.clear_text() + Globals.grid.reload() + get_tree().call_group("showongameover", "hide") # they go back to hidden now. + get_tree().call_group("hideongameover", "show") # and vice versa |