Split client and server
This commit is contained in:
15
client/network/Client.gd
Normal file
15
client/network/Client.gd
Normal file
@ -0,0 +1,15 @@
|
||||
extends NetworkNode
|
||||
|
||||
@export var ip := "127.0.0.1"
|
||||
@export var port := 4242
|
||||
|
||||
var socket := PacketPeerUDP.new()
|
||||
|
||||
func _init():
|
||||
super._init()
|
||||
socket.connect_to_host(ip, port)
|
||||
|
||||
func _process(_delta):
|
||||
while socket.get_available_packet_count() > 0:
|
||||
var packet := socket.get_packet()
|
||||
handle_packet(packet, socket)
|
29
client/network/Login.gd
Normal file
29
client/network/Login.gd
Normal file
@ -0,0 +1,29 @@
|
||||
extends PacketHandler
|
||||
|
||||
var auth_token: String
|
||||
|
||||
func _ready():
|
||||
%Client.set_handler(Packet.LOGIN, self)
|
||||
send_login()
|
||||
|
||||
func handle_packet(data: PackedByteArray, _peer: PacketPeer):
|
||||
if data[0] != 0:
|
||||
print("[Client] Login failed.")
|
||||
return
|
||||
|
||||
print("[Client] Login succeeded.")
|
||||
auth_token = data.slice(1).get_string_from_ascii()
|
||||
print("[Client] Auth token: %s" % auth_token)
|
||||
|
||||
func send_login():
|
||||
if is_logged_in():
|
||||
return
|
||||
|
||||
var buffer := StreamPeerBuffer.new()
|
||||
buffer.put_8(Packet.LOGIN)
|
||||
buffer.put_data(JSON.stringify(["user1", "password"]).to_utf8_buffer())
|
||||
%Client.socket.put_packet(buffer.data_array)
|
||||
print("[Client] Connecting...")
|
||||
|
||||
func is_logged_in() -> bool:
|
||||
return auth_token != ""
|
32
client/network/Ping.gd
Normal file
32
client/network/Ping.gd
Normal file
@ -0,0 +1,32 @@
|
||||
extends PacketHandler
|
||||
|
||||
signal changed(ping: float)
|
||||
|
||||
const HISTORY_SIZE = 8
|
||||
|
||||
var count := 0
|
||||
var history: Array[float] = []
|
||||
|
||||
func _init():
|
||||
history.resize(HISTORY_SIZE)
|
||||
|
||||
func _ready():
|
||||
%Client.set_handler(Packet.PING, self)
|
||||
|
||||
func send_ping():
|
||||
var buffer := StreamPeerBuffer.new()
|
||||
buffer.put_8(Packet.PING)
|
||||
buffer.put_8(count)
|
||||
%Client.socket.put_packet(buffer.data_array)
|
||||
|
||||
history[count] = Time.get_unix_time_from_system()
|
||||
count += 1
|
||||
|
||||
if count >= HISTORY_SIZE:
|
||||
count = 0
|
||||
|
||||
func handle_packet(data: PackedByteArray, _peer: PacketPeer):
|
||||
var id := data[0]
|
||||
var ping := Time.get_unix_time_from_system() - history[id]
|
||||
changed.emit(ping)
|
||||
|
14
client/network/Spawn.gd
Normal file
14
client/network/Spawn.gd
Normal file
@ -0,0 +1,14 @@
|
||||
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
|
Reference in New Issue
Block a user