Added player identification

This commit is contained in:
2024-01-26 12:50:46 +01:00
parent 0172a81bdf
commit 2cd93f2a39
12 changed files with 153 additions and 73 deletions

View File

@ -1,21 +1,28 @@
extends PacketHandler
var auth_token: String
var instance_id := OS.get_process_id() % 4
var username := "user%d" % instance_id
func _ready():
DisplayServer.window_set_title(username)
DisplayServer.window_set_title(Global.username)
send_login()
func handle_packet(data: PackedByteArray, _peer: PacketPeer):
if data[0] != 0:
print("[Client] Login failed.")
var buffer := StreamPeerBuffer.new()
buffer.data_array = data
var error := buffer.get_8()
if error != 0:
print("[%s] Login failed." % Global.username)
return
print("[Client] Login succeeded.")
auth_token = data.slice(1).get_string_from_ascii()
print("[Client] Auth token: %s" % auth_token)
Global.account_id = buffer.get_string()
auth_token = buffer.get_string()
print("[%s] Login succeeded." % Global.username)
print("[%s] ID: %s" % [Global.username, Global.account_id])
print("[%s] Auth token: %s" % [Global.username, auth_token])
DisplayServer.window_set_title("%s - %s" % [Global.username, Global.account_id])
func send_login():
if is_logged_in():
@ -24,9 +31,9 @@ func send_login():
var password := "password"
var buffer := StreamPeerBuffer.new()
buffer.put_8(Packet.LOGIN)
buffer.put_data(JSON.stringify([username, password]).to_utf8_buffer())
buffer.put_data(JSON.stringify([Global.username, password]).to_utf8_buffer())
%Client.socket.put_packet(buffer.data_array)
print("[Client] Connecting...")
print("[%s] Connecting..." % Global.username)
func is_logged_in() -> bool:
return auth_token != ""

View File

@ -6,21 +6,24 @@ func _ready():
assert(player_scene)
func handle_packet(data: PackedByteArray, _peer: PacketPeer):
var player_name := data.get_string_from_utf8()
print(player_name)
var buffer := StreamPeerBuffer.new()
buffer.data_array = data
var player_id := buffer.get_string()
var player_name := buffer.get_string()
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)
server_position.x = buffer.get_float()
server_position.y = buffer.get_float()
server_position.z = buffer.get_float()
print("[%s] Add player: %s %s @ %v" % [Global.username, player_id, player_name, server_position])
var player := spawn_player()
player.position = server_position
player.set_character_name(player_name)
if false:
if player_id == Global.account_id:
Global.player = player
var controller := PlayerController.new()
controller.character = Global.player

View File

@ -6,8 +6,9 @@ enum Packet {
PING = 1,
LOGIN = 2,
LOGOUT = 3,
PLAYER_STATE = 10,
PLAYER_MOVE = 11,
PLAYER_ADD = 10,
PLAYER_REMOVE = 11,
PLAYER_MOVE = 12,
}
@export var packet_type: Packet