using System; using UnityEngine; using UnityEngine.UI; using Cyber.Networking.Clientside; using Cyber.Networking.Serverside; using Cyber.Console; namespace Cyber.Networking { /// /// This class is used pretty much anywhere in order to make the "first step" of networking. /// It adds the proper components to World Root and tells them to start. /// public class NetworkEstablisher : MonoBehaviour { /// /// Input field for the IP to which connect to. /// [Tooltip("Required field only if StartClient() is used.")] public InputField IPField; /// /// Input field for the client port /// [Tooltip("Required field only if StartClient() is used.")] public InputField ClientPortField; /// /// Input field for the server port /// [Tooltip("Required field only if StartServer() is used.")] public InputField ServerPortField; /// /// World Root node, a GameObject. /// public GameObject WorldRoot; // Use this for initialization void Start () { Term.AddCommand("join", "joins a server at localhost:3935", (args) => { StartClient("localhost", 3935); }); Term.AddCommand("join (ip)", "joins a server at given ip and port 3935", (args) => { string ip = args[0]; StartClient(ip, 3935); }); Term.AddCommand("join (ip) (port)", "joins a server at given ip and port", (args) => { string ip = args[0]; int port = 3935; int.TryParse(args[1], out port); StartClient(ip, port); }); Term.AddCommand("host", "host a server at port 3935", (args) => { StartServer(3935); }); Term.AddCommand("host (port)", "host a server at given port", (args) => { int port = 3935; int.TryParse(args[0], out port); StartServer(port); }); } /// /// Starts the client using given input fields. Otherwise functions like . /// public void StartClient() { string IP = IPField.text; if (IP.Length == 0) { IP = "localhost"; } string PortText = ClientPortField.text; int Port = 3935; if (PortText.Length > 0) { Port = Int32.Parse(PortText); } StartClient(IP, Port); } /// /// Starts the client with the given ip and port. /// This initializes the Client component and launches it properly. /// /// IP used to connect. /// port of the host. public void StartClient(string ip, int port) { WorldRoot.AddComponent(); Client.Launch(ip, port); } /// /// Starts the server using given input fields. Otherwise functions like . /// public void StartServer() { string PortText = ServerPortField.text; int Port = 3935; if (PortText.Length > 0) { Port = Int32.Parse(PortText); } StartServer(Port); } /// /// Starts the server using given port. /// This initializes the port and launches the server properly. /// /// port used for the server. public void StartServer(int port) { WorldRoot.AddComponent(); Server.Launch(port); } } }