online multiplayer chess game (note server currently down)
Diffstat (limited to 'ui/menus/sidebarright/drawbutton.gd')
| -rw-r--r-- | ui/menus/sidebarright/drawbutton.gd | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/ui/menus/sidebarright/drawbutton.gd b/ui/menus/sidebarright/drawbutton.gd new file mode 100644 index 0000000..877a5ac --- /dev/null +++ b/ui/menus/sidebarright/drawbutton.gd @@ -0,0 +1,44 @@ +extends ConfirmButton +class_name DrawButton + +const draw_declined_message = "draw request rejected" +const draw_request_message = "%s requests a draw" + + +func _signal_recieved(what: Dictionary) -> void: + if what.type == PacketHandler.SIGNALHEADERS.draw: + set_disabled(false) + if "question" in what: + confirm() + Globals.chat.server(draw_request_message % Globals.str_bool(!Globals.team)) + else: + if what.accepted: + drawed() + else: + # declined signal recieved + Globals.chat.server(draw_declined_message) + + +func drawed() -> GDScriptFunctionState: + return Globals.grid.drawed("mutual agreement") + + +func _pressed() -> void: + if Globals.spectating: + return + if waiting_on_answer: + _confirmed(true) + else: + set_disabled(true) + PacketHandler.signal({"question": ""}, PacketHandler.SIGNALHEADERS.draw) + Globals.chat.server(draw_request_message % Globals.get_team()) + + +func _confirmed(what: bool) -> void: # called from confirmbar.confirmed + ._confirmed(what) + PacketHandler.signal({"accepted": what}, PacketHandler.SIGNALHEADERS.draw) + if what: + drawed() + else: + # no pressed + Globals.chat.server(draw_declined_message) |