online multiplayer chess game (note server currently down)
Diffstat (limited to 'networking/PacketHandler.gd')
-rw-r--r--networking/PacketHandler.gd60
1 files changed, 6 insertions, 54 deletions
diff --git a/networking/PacketHandler.gd b/networking/PacketHandler.gd
index 28ee0e8..5529643 100644
--- a/networking/PacketHandler.gd
+++ b/networking/PacketHandler.gd
@@ -19,17 +19,15 @@ func return() -> void: # return to the void
if hosting:
leaving = true
Globals.network.stopgame("") # stop hosting
+ lobby.set_status("", true)
set_hosting(false)
lobby.set_buttons(true)
- lobby.set_status("", true)
func _ready() -> void:
- get_tree().set_auto_accept_quit(false)
if Utils.internet and get_tree().get_root().has_node("StartMenu"):
var net := Network.new()
Events.connect("go_back", self, "_handle_game_over")
- net.connect("move_data", self, "_on_data")
net.connect("join_result", self, "_on_join_result")
net.connect("host_result", self, "_on_host_result")
net.connect("game_over", self, "_handle_game_over")
@@ -43,12 +41,12 @@ func _ready() -> void:
func requestjoin() -> void:
lobby.set_buttons(false)
- Globals.network.send_packet(Globals.network.game_code, Globals.network.HEADERS.joinrequest)
+ Globals.network.join_game(Globals.network.game_code)
func requesthost() -> void:
lobby.set_buttons(false)
- Globals.network.send_packet(Globals.network.game_code, Globals.network.HEADERS.hostrequest)
+ Globals.network.host_game(Globals.network.game_code)
func network_ready() -> void:
@@ -57,8 +55,7 @@ func network_ready() -> void:
func _on_join_result(accepted: String) -> void:
- if handle_result(accepted, "Joined!", false):
- Globals.network.relay_signal("startgame", Network.RELAYHEADERS.startgame)
+ handle_result(accepted, "Joined!", false)
func _on_host_result(accepted: String) -> void:
@@ -78,8 +75,8 @@ func handle_result(accepted: String, resultstring: String, team := true) -> bool
func _handle_game_over(error := "game over", isok := true) -> void:
Globals.network.stopgame(error)
Globals.reset_vars()
- if get_tree().get_root().has_node("Board"):
- get_tree().get_root().get_node("Board").queue_free()
+ if has_node("/root/Board"):
+ get_node("/root/Board").queue_free()
lobby.set_status(error, isok)
lobby.toggle(true)
lobby.set_buttons(true)
@@ -93,48 +90,3 @@ func _start_game() -> void:
lobby.toggle(false)
emit_signal("game_started")
lobby.set_buttons(false)
-
-
-func _on_data(data: String) -> void:
- Globals.add_turn()
- Log.debug([data, " recieved"])
- var san_to_add := data
- var mov = SanParse.parse(data)
- match mov.move_kind.type:
- Move.MoveKind.CASTLE:
- var side = 0 if Globals.turn else 7
- var rook: Rook
- var rook_goto: Vector2
- var kingpos = Vector2(4, side)
- var king: King = Piece.at_pos(kingpos)
- var king_goto: Vector2
- match mov.move_kind.data:
- Move.MoveKind.CASTLETYPES.KING_SIDE:
- rook = Piece.at_pos(Vector2(7, side))
- rook_goto = Vector2(5, side)
- king_goto = Vector2(6, side)
- Move.MoveKind.CASTLETYPES.QUEEN_SIDE:
- rook = Piece.at_pos(Vector2(0, side))
- rook_goto = Vector2(3, side)
- king_goto = Vector2(2, side)
- rook.moveto(rook_goto)
- king.castle(king_goto)
- Move.MoveKind.NORMAL:
- # this handles promotion, taking, enpassant, and moves.
- mov.make_long()
- var positions = mov.move_kind.data
- if mov.promotion != -1: # promotion part
- Globals.grid.print_matrix_pretty(Globals.grid.matrix)
- var promote_to = Utils.to_str(mov.promotion)
- Piece.at_pos(positions[0]).promote_to(promote_to, mov.is_capture, positions[1])
-
- elif mov.is_capture: # taking part
- if Piece.at_pos(positions[1]):
- Piece.at_pos(positions[0]).take(Piece.at_pos(positions[1]))
- elif mov.piece == SanParser.PAWN: # enpassant part
- var pawn: Pawn = Piece.at_pos(positions[0])
- pawn.passant(positions[1])
- san_to_add += " e.p."
- else: # a very normal move
- Piece.at_pos(positions[0]).moveto(positions[1])
- Utils.add_move(san_to_add)