Exemple #1
0
        public virtual bool SetSignonState(ESignonState state)
        {
            switch (state)
            {
            case ESignonState.Connected:
                // client is connected, leave client in this state
                _sendServerInfo = true;
                break;

            case ESignonState.New:
                if (!SendSignonData())
                {
                    return(false);
                }

                break;

            case ESignonState.PreSpawn:
                SpawnPlayer();
                break;

            case ESignonState.Spawn:
                ActivatePlayer();
                break;

            case ESignonState.Full:
                break;
            }

            return(true);
        }
Exemple #2
0
        public void Connect(string name, NetChannel channel)
        {
            _clientName = name;
            _netChannel = channel;

            SignonState = ESignonState.Connected;
        }
Exemple #3
0
 public BaseClientState()
 {
     NetChannel    = null;
     _socket       = null;
     _challengeNr  = 0;
     _retryNumber  = 0;
     _retryAddress = null;
     SignonState   = ESignonState.None;
 }
Exemple #4
0
        public virtual bool SendSignonData()
        {
            SignonState = ESignonState.PreSpawn;

            _netChannel.SendData(Server.Signon);
            var signonState = new NetMessageSignonState(SignonState);

            return(_netChannel.SendNetMsg(signonState));
        }
Exemple #5
0
        public virtual void Reconnect()
        {
            _netChannel.Clear();

            SignonState = ESignonState.Connected;
            var signon = new NetMessageSignonState(SignonState);

            _netChannel.SendNetMsg(signon);
        }
Exemple #6
0
        public virtual void SpawnPlayer()
        {
            var tick = new NetMessageTick(Server.GetTick(), Program.HostFrametimeUnbounded, Program.HostFrametimeStdDeviation);

            _netChannel.SendNetMsg(tick, true);

            SignonState = ESignonState.Spawn;
            var signonState = new NetMessageSignonState(SignonState);

            _netChannel.SendNetMsg(signonState);
        }
Exemple #7
0
        public bool SetSignonState(ESignonState state)
        {
            if (state < ESignonState.None || state > ESignonState.Changelevel)
            {
                Console.WriteLine("Received signon {0} when at {1}.", state, SignonState);
                return(false);
            }

            Console.WriteLine("Setting signon to {0}", state);
            SignonState = state;
            return(true);
        }
Exemple #8
0
 public BaseClient(BaseServer server)
 {
     Server            = server;
     SignonState       = ESignonState.None;
     _sendServerInfo   = false;
     _conVarsChanged   = false;
     _lastSnapshot     = null;
     _forceWaitForTick = -1;
     _deltaTick        = -1;
     BaselineUsed      = 0;
     Baseline          = null;
 }
Exemple #9
0
        public virtual void Disconnect(bool showMainMenu = false)
        {
            if (SignonState == ESignonState.None)
            {
                return;
            }

            SignonState = ESignonState.None;

            if (NetChannel != null)
            {
                NetChannel.Shutdown("Disconnect by user.");
                NetChannel = null;
            }
        }
Exemple #10
0
        public override bool SetSignonState(ESignonState state)
        {
            if (state == ESignonState.Connected)
            {
                if (!CheckConnect())
                {
                    return(false);
                }

                NetChannel.SetTimeout(Networking.SignonTimeout);
            }
            else if (state == ESignonState.Full)
            {
                NetChannel.SetTimeout(Program.SvTimeout);
            }

            return(base.SetSignonState(state));
        }
Exemple #11
0
        public bool SendServerInfo()
        {
            var msg = new BufferWrite();

            _sendServerInfo = false;
            SignonState     = ESignonState.New;

            var signonMsg = new NetMessageSignonState(SignonState);

            signonMsg.WriteToBuffer(msg);

            if (!_netChannel.SendData(msg))
            {
                Disconnect("Server info data overflow");
                return(false);
            }

            return(true);
        }
Exemple #12
0
        public void Clear()
        {
            if (_netChannel != null)
            {
                _netChannel.Shutdown("Disconnect by server");
                _netChannel = null;
            }

            _clientName        = string.Empty;
            SignonState        = ESignonState.None;
            _sendServerInfo    = false;
            _conVarsChanged    = false;
            NextMessageTime    = 0;
            _lastSnapshot      = null;
            _forceWaitForTick  = -1;
            _deltaTick         = -1;
            BaselineUpdateTick = -1;
            BaselineUsed       = 0;
        }
Exemple #13
0
        public virtual void Disconnect(string format, params object[] args)
        {
            if (SignonState == ESignonState.None)
            {
                return;
            }

            SignonState = ESignonState.None;

            var reason = string.Format(format, args);

            Out.MsgC(ConsoleColor.DarkYellow, "Client \"{0}\" dropped from server: {1}", _clientName, reason);

            if (_netChannel != null)
            {
                _netChannel.Shutdown(reason);
                _netChannel = null;
            }

            Clear();
        }
Exemple #14
0
        public override bool ReadFromBuffer(BufferRead buffer)
        {
            _state = (ESignonState)buffer.ReadByte();

            return(true);
        }
Exemple #15
0
 public NetMessageSignonState(ESignonState state)
 {
     _state = state;
 }
Exemple #16
0
        public virtual void ActivatePlayer()
        {
            SignonState = ESignonState.Full;

            Server.UserInfoChanged(this);
        }