59 lines
1.9 KiB
C#
59 lines
1.9 KiB
C#
using Godot;
|
|
using Network.PacketHandling;
|
|
using Network.PacketHandling.Packets;
|
|
using System;
|
|
using Util;
|
|
|
|
namespace Network {
|
|
public class Client : Peer {
|
|
|
|
private PacketPeerUDP PacketPeer;
|
|
private Connection ServerConn;
|
|
private float Timer = 0;
|
|
|
|
public Client(PacketPeerUDP packetPeer) : base(packetPeer, false) {
|
|
PacketPeer = packetPeer;
|
|
}
|
|
|
|
public override void Initialize(string address, int port) {
|
|
GD.print("Start client.");
|
|
ServerConn = new Connection(address, port);
|
|
ServerConn.Name = "Server";
|
|
ConnectionList.AddConnection(ServerConn);
|
|
SendBuffer(new PacketBuffer(), ServerConn);
|
|
StartListening(port, "*");
|
|
}
|
|
|
|
public override void Uninitialize() {
|
|
if (ConnectionList.Contains(ServerConn)) {
|
|
Disconnect(ServerConn, DisconnectReason.MANUAL_DISCONNECT);
|
|
}
|
|
StopListening();
|
|
}
|
|
|
|
public override void Process(float delta) {
|
|
if (Initialized) {
|
|
Timer += delta;
|
|
if (Timer > 10) {
|
|
Timer = 0;
|
|
TextMessagePkt Pkt = new TextMessagePkt();
|
|
Pkt.Text = "Hello, Server!";
|
|
PacketDistributor.AddReliableForAll(Pkt);
|
|
GD.print("Hello'd the server!");
|
|
}
|
|
}
|
|
}
|
|
|
|
public override void Connected(Connection conn) {
|
|
GD.print("Connected to " + conn.Name + " at " + conn.Address + ":" + conn.Port);
|
|
PacketDistributor.AddHandler(ServerConn);
|
|
foreach (PeerListener listener in PeerListeners) {
|
|
listener.OnConnect(conn);
|
|
}
|
|
}
|
|
|
|
public override void Disconnected(Connection conn, DisconnectReason reason) {
|
|
Stop(); // Stop the client if it disconnects.
|
|
}
|
|
}
|
|
} |