Skip to content

Instantly share code, notes, and snippets.

@sbarisic
Created February 22, 2018 02:51
Show Gist options
  • Save sbarisic/e04b45b0c9c36574ea46c7431f2c89ed to your computer and use it in GitHub Desktop.
Save sbarisic/e04b45b0c9c36574ea46c7431f2c89ed to your computer and use it in GitHub Desktop.
Lidgren example
static class Chat {
static NetPeerConfiguration Cfg;
static NetPeer Peer;
public static void Init(bool IsServer, int Port) {
if (Cfg == null) {
Cfg = new NetPeerConfiguration("LidgrenTest");
Cfg.EnableMessageType(NetIncomingMessageType.ConnectionApproval);
Cfg.Port = Port;
}
if (Peer == null) {
if (IsServer)
Peer = new NetServer(Cfg);
else
Peer = new NetClient(Cfg);
Peer.Start();
}
}
public static void Connect(string Host, int Port) {
if (!(Peer is NetClient))
return;
NetOutgoingMessage Approval = Peer.CreateMessage();
Approval.Write("Hello! I am a client, i want to connect!");
Peer.Connect(Host, Port, Approval);
}
public static void SendMessage(string Msg) {
Forme.WriteLine("You: " + Msg, Color.Blue);
NetOutgoingMessage Packet = Peer.CreateMessage();
Packet.Write(Msg);
(Peer as NetClient)?.SendMessage(Packet, NetDeliveryMethod.ReliableOrdered);
(Peer as NetServer)?.SendToAll(Packet, NetDeliveryMethod.ReliableOrdered);
}
public static void Disconnect() {
(Peer as NetClient)?.Disconnect("Goodbyte fage!");
}
public static void Update() {
if (Peer == null)
return;
NetIncomingMessage Msg;
while ((Msg = Peer.ReadMessage()) != null) {
switch (Msg.MessageType) {
case NetIncomingMessageType.ConnectionApproval:
Forme.WriteLine("Received connection message: " + Msg.ReadString(), Color.Green);
Msg.SenderConnection.Approve();
break;
case NetIncomingMessageType.StatusChanged:
Forme.WriteLine("Status changed: " + Msg.SenderEndPoint.ToString() + ", " + Msg.SenderConnection.Status, Color.Green);
break;
case NetIncomingMessageType.Data:
Forme.WriteLine("Stranger: " + Msg.ReadString(), Color.Red);
break;
default:
break;
}
Peer.Recycle(Msg);
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment