online multiplayer chess game (note server currently down)
Diffstat (limited to 'ui/barbutton/undobutton.gd')
-rw-r--r--ui/barbutton/undobutton.gd42
1 files changed, 30 insertions, 12 deletions
diff --git a/ui/barbutton/undobutton.gd b/ui/barbutton/undobutton.gd
index 6c56327..6788c5e 100644
--- a/ui/barbutton/undobutton.gd
+++ b/ui/barbutton/undobutton.gd
@@ -2,14 +2,16 @@ extends ConfirmButton
class_name UndoButton, "res://assets/ui/undo.png"
export(NodePath) onready var status = get_node(status) as StatusLabel
+const undo_request_message = "%s requested a undo"
+const undo_declined_message = "undo declined"
-func _ready():
- if Globals.network:
- Globals.network.connect("undo", self, "undo_recieved")
+func _ready() -> void:
+ if PacketHandler:
+ PacketHandler.connect("undo", self, "undo_signal_recieved")
-func _pressed():
+func _pressed() -> void:
if Globals.spectating:
return
if waiting_on_answer:
@@ -21,29 +23,45 @@ func _pressed():
elif Globals.turn == Globals.team:
status.set_text("It is your turn!")
return
- Globals.network.send_packet({gamecode = Globals.network.game_code, question = ""}, Network.HEADERS.undo)
- status.set_text("Undo request sent")
+ PacketHandler.send_packet({gamecode = PacketHandler.game_code, question = ""}, PacketHandler.HEADERS.undo)
+ Globals.chat.server(undo_request_message % Globals.get_team())
+ set_disabled(true)
-func undo_recieved(sig: Dictionary) -> void:
+func undo_signal_recieved(sig: Dictionary) -> void:
if "question" in sig:
+ Globals.chat.server(undo_request_message % Globals.str_bool(!Globals.team))
confirm()
else:
+ set_disabled(false)
if sig.accepted:
undo()
else:
- Globals.chat.server("Undo request declined")
+ # declined signal reception
+ Globals.chat.server(undo_declined_message)
func _confirmed(what: bool) -> void:
._confirmed(what)
- Globals.network.send_packet({gamecode = Globals.network.game_code, accepted = what}, Network.HEADERS.undo)
+ PacketHandler.send_packet({gamecode = PacketHandler.game_code, accepted = what}, PacketHandler.HEADERS.undo)
if what:
undo()
+ else:
+ # pressed no reception
+ Globals.chat.server(undo_declined_message)
func undo():
- var mov = Utils.pop_move()
- Globals.chat.server("Move %s undone" % mov)
- Globals.grid.undo(mov)
+ var numberex = SanParse.compile("([0-9]+)\\.", false)
+ var which_move = 0
+ var mov = Utils.moves_list[-1]
+ var result = numberex.search(mov)
+ if result:
+ which_move = result.strings[1]
+ else:
+ result = numberex.search(Utils.moves_list[-2])
+ which_move = result.strings[1] if result else 0
+ var pgn = Utils.pop_move()
+ Globals.chat.server("Move (%s) %s undone" % [which_move, mov.split(" ")[-1]])
+ Globals.grid.undo(pgn)
status.set_text("")