GodotTicTacToe/scripts/net/Client.cs

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