using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
/**
* 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);
}
}