using UnityEngine; using NeonTea.Quakeball.TeaNet.Peers; using System.Collections.Generic; namespace NeonTea.Quakeball.Net { public class Net { public static Net Singleton = new Net(); private static byte[] FP = new byte[] { 0xFF, 0xF7 }; public Peer Peer; public List Connections = new List(); public bool IsServer = false; public void StartClient(string address, int port, PeerMessageListener listener) { if (Peer != null) { Debug.Log("Can not start multiple endpoints at once! Use Server if multiple connections are required."); return; } Peer = new Peer(FP); Peer.MessageListener = listener; Peer.Start(0); byte ident = Peer.RegisterProtocol(new TestProtocol()); Peer.Connect(address, port, ident); } public void StartServer(string address, int port, PeerMessageListener listener) { if (Peer != null) { Debug.Log("Can not start multiple endpoints at once! Use Server if multiple connections are required."); return; } IsServer = true; Peer = new Peer(FP); Peer.MessageListener = listener; Peer.Start(port); Peer.RegisterProtocol(new TestProtocol()); Peer.StartListen(address, port); } public void Stop() { if (Peer != null) { Peer.Stop(); Peer.MessageListener.Message("Stopping"); Peer = null; } } static void Quit() { Singleton.Stop(); } [RuntimeInitializeOnLoadMethod] static void RunOnStart() { Application.quitting += Quit; } } }