public void Update(float time)
        {
            switch (this.m_state)
            {
            case ServerConnectionState.CONNECT:
                if (this.m_messaging.IsConnected())
                {
                    this.m_state = ServerConnectionState.LOGIN;

                    LoginMessage loginMessage = new LoginMessage();

                    loginMessage.SetAccountId(this.m_accountInfo.AccountId);
                    loginMessage.SetPassToken(this.m_accountInfo.PassToken);
                    loginMessage.SetClientMajorVersion(LogicVersion.MAJOR_VERSION);
                    loginMessage.SetClientBuildVersion(LogicVersion.BUILD_VERSION);
                    loginMessage.SetResourceSha(ResourceManager.FINGERPRINT_SHA);
                    loginMessage.SetDevice(Assembly.GetExecutingAssembly().FullName);
                    loginMessage.SetScramblerSeed(this.m_messaging.GetScramblerSeed());

                    this.m_messaging.Send(loginMessage);
                }
                break;

            case ServerConnectionState.LOGIN:
            case ServerConnectionState.LOGGED:
                while (this.m_messaging.TryDequeueReceiveMessage(out PiranhaMessage piranhaMessage))
                {
                    this.m_messageManager.ReceiveMessage(piranhaMessage);
                }
                this.m_messageManager.Update(time);
                this.m_messaging.SendQueue();

                break;
            }
        }