Files
soccar2d/Assets/Cupid/Scripts/CupidConnector.cs
T

93 lines
3.2 KiB
C#

using System;
using System.Collections;
using System.Collections.Generic;
using Mirror;
using UnityEngine;
public class CupidConnector : MonoBehaviour
{
public kcp2k.KcpTransport transport;
void Start()
{
#if UNITY_SERVER
//Server code
string[] args = Environment.GetCommandLineArgs();
int matchId = 0;
string dedicatedSecret = "38516e39d3406225b7c3015a66e5d25c54e9b2024c0755212122bdcea3e3a328";
string internalApiBase = null;
for (int i = 0; i < args.Length; i++)
{
if (args[i].Contains("-port") && i + 1 < args.Length)
{
Cupid.RoomPort = int.Parse(args[i + 1]);
Logger.SetFileName(Cupid.RoomPort.ToString());
}
if (i + 1 < args.Length)
{
if (string.Equals(args[i], "-matchId", StringComparison.OrdinalIgnoreCase)
|| string.Equals(args[i], "-matchid", StringComparison.OrdinalIgnoreCase))
int.TryParse(args[i + 1], out matchId);
else if (string.Equals(args[i], "-dedicatedSecret", StringComparison.OrdinalIgnoreCase))
dedicatedSecret = args[i + 1];
else if (string.Equals(args[i], "-internalApiBase", StringComparison.OrdinalIgnoreCase))
internalApiBase = args[i + 1];
}
}
GameManager.ConfigureDedicatedMatchReporting(matchId);
if(Cupid.RoomPort < 0){
Logger.Log("Invalid port, Did you pass the -port arguement?");
return;
}
if(matchId <=0){
Logger.Log("Invalid match id, Did you pass the -matchId arguement?");
return;
}
transport.Port = (ushort)Cupid.RoomPort;
Logger.Log($"Starting server at port {Cupid.RoomPort}");
NetworkManager.singleton.StartServer();
#else
//Client code
if(Cupid.RoomPort <0){
Logger.Log("Invalid Room port");
return;
}
transport.Port = (ushort)Cupid.RoomPort;
NetworkManager.singleton.networkAddress = Cupid.ServerAddress;
Logger.Log($"Starting client at ${Cupid.ServerAddress}:{Cupid.RoomPort}");
NetworkManager.singleton.StartClient();
#endif
}
#if UNITY_SERVER
float t=0;
int _t = 0;
void Update(){
if(t < 60){
t += Time.deltaTime;
}else{
if(NetworkServer.connections.Count <= 0){
Logger.Log("Closing port " + Cupid.RoomPort + " due to no players");
GameManager.ReportDedicatedMatchRoomClosed();
Application.Quit();
}
}
if((int)t !=_t){
_t = (int)t;
Logger.Log(NetworkServer.connections.Count.ToString());
}
}
#else
void Update(){
// Debug.Log(NetworkServer.connections.Count);
}
#endif
void OnValidate(){
if(GetComponent<NetworkManager>()!=null){
GetComponent<NetworkManager>().headlessStartMode= HeadlessStartOptions.DoNothing;
}
if(transport == null){
transport = GetComponent<kcp2k.KcpTransport>();
}
}
}