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. } } }