online multiplayer chess game (note server currently down)
Diffstat (limited to 'networking/PacketHandler.gd')
| -rw-r--r-- | networking/PacketHandler.gd | 61 |
1 files changed, 23 insertions, 38 deletions
diff --git a/networking/PacketHandler.gd b/networking/PacketHandler.gd index ca0da6d..5034a4b 100644 --- a/networking/PacketHandler.gd +++ b/networking/PacketHandler.gd @@ -1,25 +1,14 @@ extends Node class_name NetManager -### for the lobby ui -signal set_buttons(enabled) -signal set_status(status, err, isok) -signal set_visible(visibility) +var lobby: Lobby = null signal hosting(newhosting) - signal game_over signal game_started var hosting := false setget set_hosting var leaving := false -var status := ["", true, false] - - -func set_buttons(enabled: bool) -> void: - status[2] = enabled - emit_signal("set_buttons", enabled) - func set_hosting(newhosting: bool) -> void: hosting = newhosting @@ -29,17 +18,16 @@ func set_hosting(newhosting: bool) -> void: func return() -> void: # return to the void if hosting: leaving = true - Globals.network.send_packet(Globals.network.game_code, Network.HEADERS.stopgame) # stop hosting + Globals.network.stopgame("") # stop hosting set_hosting(false) - set_buttons(true) - set_status("", true) + lobby.set_buttons(true) + lobby.set_status("", true) func _ready() -> void: get_tree().set_auto_accept_quit(false) if Utils.internet: var net := Network.new() - set_status("Connecting", true) Events.connect("go_back", self, "_handle_game_over") net.connect("move_data", self, "_on_data") net.connect("join_result", self, "_on_join_result") @@ -49,33 +37,28 @@ func _ready() -> void: net.connect("connection_established", self, "network_ready") add_child(net) Globals.network = net + yield(get_tree().create_timer(.1), "timeout") + lobby.set_status("Connecting", true) func requestjoin() -> void: - set_buttons(false) + lobby.set_buttons(false) Globals.network.send_packet(Globals.network.game_code, Globals.network.HEADERS.joinrequest) func requesthost() -> void: - set_buttons(false) + lobby.set_buttons(false) Globals.network.send_packet(Globals.network.game_code, Globals.network.HEADERS.hostrequest) func network_ready() -> void: - set_status("", true) - set_buttons(true) - - -func set_status(text: String, isok: bool) -> void: - status[0] = text - status[1] = isok - emit_signal("set_status", text, isok) + lobby.set_status("", true) + lobby.set_buttons(true) func _on_join_result(accepted: String) -> void: if handle_result(accepted, "Joined!", false): - emit_signal("set_visible", false) - Globals.network.send_packet(Globals.network.game_code, Globals.network.HEADERS.startgame) + Globals.network.relay_signal("startgame", Network.RELAYHEADERS.startgame) func _on_host_result(accepted: String) -> void: @@ -85,21 +68,21 @@ func _on_host_result(accepted: String) -> void: func handle_result(accepted: String, resultstring: String, team := true) -> bool: Globals.team = team # what am i doing here??? if accepted == "Y": - set_status(resultstring, true) + lobby.set_status(resultstring, true) return true - set_status(accepted, false) - set_buttons(true) + lobby.set_status(accepted, false) + lobby.set_buttons(true) return false func _handle_game_over(error := "game over", isok := true) -> void: - Globals.network.send_packet({"gamecode": Globals.network.game_code, "reason": error}, Network.HEADERS.stopgame) + Globals.network.stopgame(error) Globals.reset_vars() if get_tree().get_root().has_node("Board"): get_tree().get_root().get_node("Board").queue_free() - set_status(error, isok) - emit_signal("set_visible", true) - set_buttons(true) + lobby.set_status(error, isok) + lobby.toggle(true) + lobby.set_buttons(true) emit_signal("game_over") @@ -107,16 +90,16 @@ func _start_game() -> void: set_hosting(false) var board: Node2D = load("res://Board.tscn").instance() get_tree().get_root().add_child(board) - emit_signal("set_visible", false) + lobby.toggle(false) emit_signal("game_started") - set_buttons(false) + lobby.set_buttons(false) func _on_data(data: Dictionary) -> void: Globals.add_turn() Log.debug([data, " recieved"]) Events.emit_signal("data_recieved") - match data["movetype"]: + match data["type"]: Network.MOVEHEADERS.passant: # en passant var end_pos := dict2vec(data["positions"][1]) @@ -147,6 +130,8 @@ func _on_data(data: Dictionary) -> void: pawn.took() # kill the pawn Utils.add_move(dict_data["notation"]) # add a move Globals.grid.print_matrix_pretty(Globals.grid.matrix) + _: + Log.err("Wtf") static func dict2vec(dict: Dictionary) -> Vector2: |