online multiplayer chess game (note server currently down)
Diffstat (limited to 'networking/PacketHandler.gd')
-rw-r--r--networking/PacketHandler.gd61
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: