Created
February 22, 2018 02:51
-
-
Save sbarisic/e04b45b0c9c36574ea46c7431f2c89ed to your computer and use it in GitHub Desktop.
Lidgren example
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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