online multiplayer chess game (note server currently down)
Diffstat (limited to 'networking/Network.gd')
| -rw-r--r-- | networking/Network.gd | 39 |
1 files changed, 24 insertions, 15 deletions
diff --git a/networking/Network.gd b/networking/Network.gd index 7b19c8f..8496386 100644 --- a/networking/Network.gd +++ b/networking/Network.gd @@ -15,11 +15,11 @@ const HEADERS := { "relay": "R", # relay goes to both "signal": "S", # signal is one way "loadpgn": "L", # server telling me to load a pgn - "info": "I" + "info": "I", + "move": "M", + "undo": "<" } -const MOVEHEADERS := {move = "M", take = "K", castle = "C", passant = "P", promote = "Q"} # subheaders for HEADERS.move - const RELAYHEADERS := {chat = "C"} const SIGNALHEADERS := {takeback = "T", draw = "D", resign = "R", info = "I"} # subheaders for HEADERS.signal @@ -33,6 +33,7 @@ signal game_over(problem, isok) signal connection_established signal signal_recieved(what) signal chat(text) +signal undo(undo) signal info_recieved(info) ## for accounts(mostly) @@ -82,25 +83,29 @@ func _connection_error() -> void: func signal(body: Dictionary, header: String, _mainheader := HEADERS.signal) -> Dictionary: - var data: Dictionary = Utils.append_dict({"type": header, "gamecode": game_code}, body) - send_packet(data, _mainheader) + var data: Dictionary = Utils.append_dict({"type": header}, body) + send_gamecode_packet(data, _mainheader) return data func join_game(game: String) -> void: - send_packet(Utils.append_dict({"gamecode": game}, SaveLoad.get_public_info()), HEADERS.joinrequest) + send_gamecode_packet(SaveLoad.get_public_info(), HEADERS.joinrequest, game) func host_game(game: String) -> void: - send_packet(Utils.append_dict({"gamecode": game}, SaveLoad.get_public_info()), HEADERS.hostrequest) + send_gamecode_packet(SaveLoad.get_public_info(), HEADERS.hostrequest, game) + + +func send_gamecode_packet(data: Dictionary, header: String, gamecode: String = game_code): + send_packet(Utils.append_dict({"gamecode": gamecode}, data), header) -func relay_signal(body: Dictionary, header: String) -> Dictionary: # its really the same thing as signal() - return signal(body, header, HEADERS.relay) +func relay_signal(body: Dictionary, header: String, _mainheader := HEADERS.relay) -> Dictionary: # its really the same thing as signal() + return signal(body, header, _mainheader) func send_mov(mov: Move): - relay_signal({"move": mov.compile()}, MOVEHEADERS.move) + send_packet({move = mov.compile(), gamecode = game_code}, HEADERS.move) func stopgame(reason: String) -> void: @@ -108,12 +113,16 @@ func stopgame(reason: String) -> void: func _data_recieved() -> void: - if !OS.is_window_focused(): - OS.request_attention() var recieve: Dictionary = ws.get_peer(1).get_var() var header: String = recieve.header var text = recieve.data match header: + HEADERS.undo: + emit_signal("undo", text) + HEADERS.move: + if !OS.is_window_focused(): + OS.request_attention() + emit_signal("move_data", text.move) HEADERS.hostrequest: emit_signal("host_result", text) HEADERS.relay: @@ -121,8 +130,6 @@ func _data_recieved() -> void: match relay.type: RELAYHEADERS.chat: emit_signal("chat", relay) - MOVEHEADERS.move: - emit_signal("move_data", text.move) HEADERS.joinrequest: emit_signal("join_result", text) HEADERS.info: @@ -139,7 +146,9 @@ func _data_recieved() -> void: PacketHandler.leaving = false HEADERS.signal: var signal: Dictionary = text - emit_signal("signal_recieved", signal) + match signal.type: + _: + emit_signal("signal_recieved", signal) HEADERS.signup: emit_signal("signupresult", text) HEADERS.signin: |