You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

85 lines
1.9 KiB

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Networking;
namespace Multiplayer
{
public class ServerManager : MonoBehaviour
{
[SerializeField]
private bool StartOnAwake = true;
[SerializeField]
private int Port = 4444;
public Dictionary<int, Player> AllPlayers;
public NetworkServerSimple Server { get; private set; }
private void Start()
{
if (StartOnAwake)
StartServer();
}
[ContextMenu("Start Server")]
public void StartServer()
{
StartServer(Port);
}
public void StartServer(int Port)
{
this.Port = Port;
AllPlayers = new Dictionary<int, Player>();
Server = new NetworkServerSimple();
Server.RegisterHandler(MsgType.Connect, OnConnect);
Server.RegisterHandler(MsgType.Disconnect, OnDisconnect);
Server.Configure(ChannelConfig.DefaultTopology());
Debug.Log("Starting Server on " + Port);
Server.Listen(Port);
}
private void Update()
{
if (Server != null)
Server.Update();
}
private void OnConnect(NetworkMessage msg)
{
Debug.Log("New Connection: \n Address: " + msg.conn.address + "\n ID: " + msg.conn.connectionId);
msg.conn.Send(LoginMsgID.QueryName, new PlayerMsg((byte)msg.conn.connectionId));
}
private void OnDisconnect(NetworkMessage msg)
{
if (AllPlayers.ContainsKey(msg.conn.connectionId))
{
Debug.Log(AllPlayers[msg.conn.connectionId].Name + "has disconnected.");
AllPlayers.Remove(msg.conn.connectionId);
}
else
Debug.Log("Unkown player has disconnected.");
}
}
}