Improved network communication

This commit is contained in:
2024-01-24 20:57:31 +01:00
parent 26c52a00b3
commit 2738895efe
49 changed files with 427 additions and 625 deletions

View File

@ -0,0 +1,28 @@
extends PacketHandler
@export var player_scene: PackedScene
func _ready():
assert(player_scene)
%Client.set_handler(Packet.PLAYER_STATE, self)
func handle_packet(data: PackedByteArray, _peer: PacketPeer):
var player_name := data.get_string_from_utf8()
print(player_name)
var position_data := data.slice(player_name.length() + 1)
var server_position := Vector3()
server_position.x = position_data.decode_float(0)
server_position.y = position_data.decode_float(4)
server_position.z = position_data.decode_float(8)
print(server_position)
var player := spawn_player()
player.name = player_name
player.position = server_position
Global.player = player
func spawn_player() -> Player:
var player = player_scene.instantiate()
%Players.add_child(player)
return player

View File

@ -1,14 +0,0 @@
extends PacketHandler
@export var player_scene: PackedScene
func _ready():
%Client.set_handler(Packet.SPAWN, self)
func handle_packet(_data: PackedByteArray, _peer: PacketPeer):
Global.player = spawn_player()
func spawn_player() -> Player:
var player = player_scene.instantiate()
%Players.add_child(player)
return player

View File

@ -0,0 +1,9 @@
class_name Account
var username: String
var password: String
var position: Vector3
func _init(name: String, pw: String):
username = name
password = pw

View File

@ -0,0 +1,23 @@
class_name NetworkNode
extends Node
var handlers: Array[Node] = []
func _init():
handlers.resize(256)
func get_handler(index: int) -> PacketHandler:
return handlers[index]
func set_handler(index: int, node: PacketHandler):
handlers[index] = node
func handle_packet(packet: PackedByteArray, peer: PacketPeer):
var type := packet.decode_u8(0)
var handler := get_handler(type)
if handler == null:
push_warning("Unknown packet type %d" % type)
return
handler.handle_packet(packet.slice(1), peer)

View File

@ -0,0 +1,9 @@
class_name Packet
enum {
PING = 1,
LOGIN = 2,
LOGOUT = 3,
PLAYER_STATE = 10,
PLAYER_MOVE = 11,
}

View File

@ -0,0 +1,5 @@
class_name PacketHandler
extends Node
func handle_packet(_data: PackedByteArray, _peer: PacketPeer):
pass