Added thread safe packet handlers
This commit is contained in:
parent
cb4dd41358
commit
db3ee3a685
@ -15,9 +15,13 @@ func handle_packet(data: PackedByteArray):
|
||||
var player_id := buffer.get_string()
|
||||
var player := Global.players.get_player(player_id)
|
||||
var message := buffer.get_utf8_string()
|
||||
message = escape_bbcode(message)
|
||||
|
||||
Log.info("%s: %s" % [player.name, message])
|
||||
message_received.emit("[color=#e0e0e0]%s:[/color] %s" % [player.name, escape_bbcode(message)])
|
||||
emit.call_deferred(player.name, message)
|
||||
|
||||
func emit(player_name: String, message: String):
|
||||
message_received.emit("[color=#e0e0e0]%s:[/color] %s" % [player_name, message])
|
||||
|
||||
func escape_bbcode(text: String) -> String:
|
||||
return text.replace("[", "[lb]")
|
||||
|
@ -10,12 +10,18 @@ func handle_packet(data: PackedByteArray):
|
||||
var error := buffer.get_8()
|
||||
if error != 0:
|
||||
Log.info("[%s] Login failed." % Global.account.name)
|
||||
failure.emit()
|
||||
emit_failure.call_deferred()
|
||||
return
|
||||
|
||||
Global.account.id = buffer.get_string()
|
||||
Global.account.auth_token = buffer.get_string()
|
||||
|
||||
emit_success.call_deferred()
|
||||
|
||||
func emit_failure():
|
||||
failure.emit()
|
||||
|
||||
func emit_success():
|
||||
success.emit()
|
||||
|
||||
func send_login():
|
||||
|
@ -4,6 +4,9 @@ signal success
|
||||
|
||||
func handle_packet(_data: PackedByteArray):
|
||||
logout()
|
||||
emit.call_deferred()
|
||||
|
||||
func emit():
|
||||
success.emit()
|
||||
|
||||
func logout():
|
||||
|
@ -9,7 +9,6 @@ var history: Array[float] = []
|
||||
|
||||
func _init():
|
||||
history.resize(HISTORY_SIZE)
|
||||
thread_safe = true
|
||||
|
||||
func handle_packet(data: PackedByteArray):
|
||||
var id := data[0]
|
||||
|
@ -21,7 +21,7 @@ func handle_packet(data: PackedByteArray):
|
||||
|
||||
Log.info("Add player: %s %s @ %v" % [player_id, player_name, server_position])
|
||||
|
||||
spawn_player(player_id, player_name, server_position)
|
||||
spawn_player.call_deferred(player_id, player_name, server_position)
|
||||
|
||||
func spawn_player(id: String, nick: String, position: Vector3) -> Player:
|
||||
var player: Player
|
||||
|
@ -18,7 +18,10 @@ func handle_packet(data: PackedByteArray):
|
||||
var player_id := data.get_string_from_ascii()
|
||||
var player := Global.players.get_player(player_id)
|
||||
|
||||
if !player:
|
||||
if !player || !player.controller:
|
||||
return
|
||||
|
||||
player.controller.jumped.emit()
|
||||
emit.call_deferred(player.controller)
|
||||
|
||||
func emit(controller: Controller):
|
||||
controller.jumped.emit()
|
||||
|
@ -34,7 +34,10 @@ func handle_packet(data: PackedByteArray):
|
||||
|
||||
controller.server_position.x = x
|
||||
controller.server_position.z = z
|
||||
controller.direction_changed.emit(Vector3(direction_x, 0, direction_z))
|
||||
emit.call_deferred(controller, Vector3(direction_x, 0, direction_z))
|
||||
|
||||
func emit(controller: Controller, direction: Vector3):
|
||||
controller.direction_changed.emit(direction)
|
||||
|
||||
func _process(_delta: float):
|
||||
if !Global.player:
|
||||
|
@ -22,6 +22,12 @@ func handle_packet(data: PackedByteArray):
|
||||
var player_id_length := buffer.get_size() - 1
|
||||
var player_id := buffer.get_string(player_id_length)
|
||||
var slot := buffer.get_u8()
|
||||
|
||||
var player := Global.players.get_player(player_id)
|
||||
player.controller.used_skill.emit(slot)
|
||||
|
||||
if !player || !player.controller:
|
||||
return
|
||||
|
||||
emit.call_deferred(player.controller, slot)
|
||||
|
||||
func emit(controller: Controller, slot: int):
|
||||
controller.used_skill.emit(slot)
|
||||
|
@ -21,9 +21,5 @@ func handle_packet(packet: PackedByteArray):
|
||||
push_warning("Unknown packet type %d" % type)
|
||||
return
|
||||
|
||||
if handler.thread_safe:
|
||||
handler.handle_packet(packet.slice(1))
|
||||
else:
|
||||
handler.handle_packet.call_deferred(packet.slice(1))
|
||||
|
||||
handler.handle_packet(packet.slice(1))
|
||||
download += packet.size()
|
||||
|
@ -16,7 +16,5 @@ enum Packet {
|
||||
|
||||
@export var packet_type: Packet
|
||||
|
||||
var thread_safe: bool
|
||||
|
||||
func handle_packet(_data: PackedByteArray):
|
||||
pass
|
@ -26,5 +26,8 @@ func on_text_submitted(message: String):
|
||||
text = ""
|
||||
release_focus()
|
||||
|
||||
if !message:
|
||||
return
|
||||
|
||||
var chat := owner as Chat
|
||||
chat.message_submitted.emit(message)
|
||||
|
Loading…
x
Reference in New Issue
Block a user