コード例 #1
0
        public void ProcessLogin(LoginMessage msg)
        {
            Player player = _server.GetPlayerUnlogged(msg.UserId);

            if (null == player || player.State == MenuState.Invalid)
            {
                return;
            }

            int unloggedkey = player.Id;

            if (Login(msg.Login, msg.Password))
            {
                MenuState state = PlayerStateMachine.Transform(player.State, MenuAction.Login);
                if (state == MenuState.Invalid)
                {
                    SendMessage(MessageFactory.Create(MessageType.LoginUnsuccessful), player.Id);
                    return;
                }
                player.State = state;
                player.SetData(LoadPlayerData(msg.Login));
            }

            _server.Chat.AddPlayer(player);
            SendMessage((MessageFactory.Create(MessageType.LoginSuccessful)), player.Id);
        }
コード例 #2
0
        private void ProcessLogin(LoginMessage msg)
        {
            //Pobranie gracza z listy niezalogowanych
            Player player = _server.GetPlayerUnlogged(msg.SenderId);

            InfoLog.WriteInfo(string.Format(ProcessStringFormat, "Login", msg.SenderId), EPrefix.ServerProcessInfo);
            //Jesli gracza nie ma, lub jego stan jest jakis dziwny - koniec obslugi
            if (null == player || player.State != MenuState.Unlogged)
            {
                return;
            }

            if ((Login(msg.SenderId, msg.Login, msg.Password) || !Settings.Default.DBAvail) && !IsPlayerAlreadyLogged(msg.Login))
            {
                MenuState state = PlayerStateMachine.Transform(player.State, MenuAction.Login);
                if (state == MenuState.Invalid)
                {
                    SendMessage(Utils.CreateResultMessage(ResponseType.Login, ResultType.Unsuccesful), player.Id);
                    return;
                }
                LoggingTransfer(player);
                player.State = state;
                if (!Settings.Default.DBAvail)
                {
                    PlayerData pd = new PlayerData();
                    pd.Login  = msg.Login;
                    pd.LossNo = pd.WinNo = 0;
                    pd.Id     = msg.SenderId;
                    player.SetData(pd);
                }
            }
            else
            {
                SendMessage(Utils.CreateResultMessage(ResponseType.Login, ResultType.Unsuccesful), player.Id);
                InfoLog.WriteInfo("Player: " + msg.Login + "failed to login", EPrefix.ServerProcessInfo);
                return;
            }

            SendMessage(Utils.CreateResultMessage(ResponseType.Login, ResultType.Successful), player.Id);
            NumericMessage idmsg = (NumericMessage)MessageFactory.Create(MessageType.IdInformation);

            idmsg.Number = player.Id;
            SendMessage(idmsg, player.Id);
        }