Esempio n. 1
0
        public bool Match(LocalHostData host)
        {
            if (!String.IsNullOrEmpty(gameType) && gameType != host.gameType)
            {
                return(false);
            }
            if (!String.IsNullOrEmpty(gameName) && gameName != host.gameName)
            {
                return(false);
            }
            if (!String.IsNullOrEmpty(gameMode) && gameMode != host.gameMode)
            {
                return(false);
            }
            if (!String.IsNullOrEmpty(gameLevel) && gameLevel != host.gameLevel)
            {
                return(false);
            }
            if (!connectedPlayers.Match(host.connectedPlayers))
            {
                return(false);
            }
            if (!playerLimit.Match(host.playerLimit))
            {
                return(false);
            }
            if (passwordProtected != null && passwordProtected != host.passwordProtected)
            {
                return(false);
            }
            if (dedicatedServer != null && dedicatedServer != host.dedicatedServer)
            {
                return(false);
            }
            if (useNat != null && useNat != host.useNat)
            {
                return(false);
            }
            if (useProxy != null && useProxy != host.useProxy)
            {
                return(false);
            }
            if (!String.IsNullOrEmpty(comment) && comment != host.comment)
            {
                return(false);
            }
            if (!String.IsNullOrEmpty(platform) && platform != host.platform)
            {
                return(false);
            }

            return(true);
        }
        internal void _UnconnectedRPCKnownHostResponse(LocalHostData localData, double localTime, NetworkEndPoint endpoint)
        {
            if (!_knownHosts.ContainsKey(endpoint))
            {
                return;
            }

            var ping = (int)NetworkTime._GetElapsedTimeInMillis(localTime);
            var data = new HostData(localData, endpoint, ping);

            _knownHosts[endpoint] = data;

            _MasterNotifyEvent(MasterServerEvent.KnownHostDataReceived);
        }
        internal override LocalHostData _MasterGetLocalHostData(bool errorCheck, bool notifyOnError)
        {
            if (errorCheck)
            {
                if (_gameTypeOrNameIsDirty)
                {
                    _gameTypeOrNameIsDirty = false;
                    notifyOnError          = true;
                }

                if (!isServer || _status != NetworkStatus.Connected)
                {
                    if (notifyOnError)
                    {
                        _MasterNotifyEvent(MasterServerEvent.RegistrationFailedNoServer);
                    }
                    return(null);
                }

                if (String.IsNullOrEmpty(_gameType))
                {
                    if (notifyOnError)
                    {
                        _MasterNotifyEvent(MasterServerEvent.RegistrationFailedGameType);
                    }
                    return(null);
                }

                if (String.IsNullOrEmpty(_gameName))
                {
                    if (notifyOnError)
                    {
                        _MasterNotifyEvent(MasterServerEvent.RegistrationFailedGameName);
                    }
                    return(null);
                }
            }

            if (localIpAddress == null)
            {
                localIpAddress = Utility.TryGetLocalIP();
            }
            var localEndPoint = new NetworkEndPoint(localIpAddress, listenPort);

            int countServerAsPlayer = (dedicatedServer ? 0 : 1);

            var data = new LocalHostData(_gameType, _gameName, gameMode, gameLevel, connectionCount + countServerAsPlayer, _ServerGetPlayerLimit() + countServerAsPlayer, !String.IsNullOrEmpty(incomingPassword), dedicatedServer, useNat, useProxy, comment, OnGetPlatform(), DateTime.UtcNow, localEndPoint);

            return(data);
        }
        internal void _UnconnectedRPCDiscoverHostResponse(LocalHostData localData, double localTime, NetworkEndPoint endpoint)
        {
            var ping = (int)NetworkTime._GetElapsedTimeInMillis(localTime);
            var data = new HostData(localData, endpoint, ping);

            if (_discoveredHosts.ContainsKey(endpoint))
            {
                _discoveredHosts[endpoint] = data;
            }
            else
            {
                _discoveredHosts.Add(endpoint, data);
            }

            _MasterNotifyEvent(MasterServerEvent.LocalHostDiscovered);
        }
Esempio n. 5
0
 public bool Equals(LocalHostData other)
 {
     return(other != null &&
            internalEndpoint.Equals(other.internalEndpoint) &&
            gameType == other.gameType &&
            gameName == other.gameName &&
            gameMode == other.gameMode &&
            gameLevel == other.gameLevel &&
            connectedPlayers == other.connectedPlayers &&
            playerLimit == other.playerLimit &&
            passwordProtected == other.passwordProtected &&
            dedicatedServer == other.dedicatedServer &&
            useNat == other.useNat &&
            useProxy == other.useProxy &&
            comment == other.comment &&
            platform == other.platform);
 }
Esempio n. 6
0
 public void CopyFrom(LocalHostData data)
 {
     gameType          = data.gameType;
     gameName          = data.gameName;
     gameMode          = data.gameMode;
     gameLevel         = data.gameLevel;
     connectedPlayers  = data.connectedPlayers;
     playerLimit       = data.playerLimit;
     passwordProtected = data.passwordProtected;
     dedicatedServer   = data.dedicatedServer;
     useNat            = data.useNat;
     useProxy          = data.useProxy;
     comment           = data.comment;
     platform          = data.platform;
     internalEndpoint  = data.internalEndpoint;
     timestamp         = data.timestamp;
 }
Esempio n. 7
0
 public LocalHostData(LocalHostData data)
     : this(data.gameType, data.gameName, data.gameMode, data.gameLevel, data.connectedPlayers, data.playerLimit, data.passwordProtected, data.dedicatedServer, data.useNat, data.useProxy, data.comment, data.platform, data.timestamp, data.internalEndpoint)
 {
 }
 public HostData(LocalHostData localHost, NetworkEndPoint externalEndpoint, int ping)
     : base(localHost)
 {
     this.externalEndpoint = externalEndpoint;
     this.ping             = ping;
 }
 public void WriteLocalHostData(LocalHostData value)
 {
     value._Write(_buffer);
 }