Example #1
0
        public void Conectarse(Jugador jugador)
        {
            if (!BuscarClientePorNombre(jugador.nickName))
            {
                callBackActual = OperationContext.Current.GetCallbackChannel <ILoginServiceCallback>();

                if (callBackActual != null)
                {
                    clientes.Add(jugador, callBackActual);
                    jugadores.Add(jugador);
                    clientes?.ToList().ForEach(c => c.Value.UsuariosConectados(jugadores));

                    foreach (Jugador c in jugadores)
                    {
                        Console.WriteLine(c.nickName);
                    }
                    Console.WriteLine($"{jugador.nickName} se ha conectado");
                }
            }
        }
Example #2
0
 public void Login(LoginInfo info)
 {
     ILoginServiceCallback curGuest = OperationContext.Current.GetCallbackChannel<ILoginServiceCallback>();
     if (!info.IsAccountValid)
     {
         curGuest.NotifyLoginResult(null, LoginResult.失败_帐号非法);
         return;
     }
     RegisteredUserInfo uinfo = null;
     LoginResult result = LoginResult.登录成功;
     if (info.IsAccountIDValid)
     {
         uinfo = Program.UserMgr.GetRegisteredUserInfo(info.AccountID);
         if (uinfo == null)
         {
             curGuest.NotifyLoginResult(null, LoginResult.失败_帐号不存在);
             return;
         }
     }
     else if (info.IsAccountNameValid)
     {
         uinfo = Program.UserMgr.GetRegisteredUserInfo(info.AccountName);
         if (uinfo == null)
         {
             uinfo = Program.UserMgr.RegisterUser(info, OperationContext.Current);
             result = LoginResult.登录并注册成功;
         }
     }
     if (info.Password != uinfo.Password)
     {
         curGuest.NotifyLoginResult(null, LoginResult.失败_密码错误);
         return;
     }
     if (info.AdjudicatorMode && (uinfo.Permission & UserPermission.评审) == 0)
     {
         curGuest.NotifyLoginResult(null, LoginResult.失败_评审权限未开通);
         return;
     }
     var suser = Program.UserMgr.GetLoginUserInfo(uinfo.AccountID);
     if (suser != null)
     {
         if (suser.IsOnline)
             Program.UserMgr.KickUser(suser.AccountID, 0, LogoutReason.异地登录, null);
         else
         {
             suser.LoginInfo.AdjudicatorMode = info.AdjudicatorMode;
             suser.LoginInfo.TransServicePort = info.TransServicePort;
             suser.LoginInfo.JudgementConfigFileMD5 = info.JudgementConfigFileMD5;
         }
     }
     suser = Program.UserMgr.GetLoginUserInfo(OperationContext.Current);
     if (suser != null)
     {
         if (suser.AccountID != uinfo.AccountID)
             Program.UserMgr.KickUser(suser.AccountID, 5, LogoutReason.更改用户, null);
         else
             curGuest.NotifyLoginResult(uinfo, result);
     }
     suser = Program.UserMgr.GetLoginUserInfo(uinfo.AccountID);
     if (suser.LoginInfo.AdjudicatorMode)
     {
         if (!Program.UserMgr.SetUserTaskGroup(suser.AccountID, 0))
         {
             curGuest.NotifyLoginResult(null, LoginResult.失败_未知错误);
             return;
         }
     }
     Program.UserMgr.OnUserLoginSucceeded(uinfo.AccountID, OperationContext.Current);
     curGuest.NotifyLoginResult(uinfo, result);
 }