Exemplo n.º 1
0
        public WCFGame NewGame(string clientVersion, WCFGameSettings gameSettings, string gamePassword)
        {
            try
            {
                if (IsDisableNewGame || gameSettings == null || !gameSettings.CheckInput())
                {
                    return(null);
                }

#if !DEBUG
                //проверка версии клиента
                if (!string.IsNullOrEmpty(_UpdaterService.ClientVersion) && clientVersion != _UpdaterService.ClientVersion)
                {
                    throw new Exception($"Неверная версия клиента: login={gameSettings.CreatorLogin}.");
                }
#endif

                WCFUser gpUser = _GamePortalService.GetProfileByLogin(gameSettings.CreatorLogin);

                //TODO проверка может ли пользователь поставить такие условия

                /*if (gpUser == null
                || gpUser.MindRate < gameSettings.RateSettings.MindRate
                || gpUser.HonorRate < gameSettings.RateSettings.HonorRate
                || gpUser.LikeRate < gameSettings.RateSettings.LikeRate
                || gpUser.DurationHours < gameSettings.RateSettings.DurationRate)
                ||  return Guid.Empty;*/

#if !DEBUG //запрет на много игр
                using (Agot2p6Entities dbContext = new Agot2p6Entities())
                {
                    if (dbContext.Game.Count(p => p.CloseTime == null && (p.CreatorLogin == gameSettings.CreatorLogin || p.GameUser.Any(p1 => !string.IsNullOrEmpty(p1.HomeType) && p1.Login == gameSettings.CreatorLogin))) > 0)
                    {
                        return(null);
                    }
                }
#endif

                WCFGame wcfGame = CreateGame(gameSettings, gamePassword);
                if (wcfGame == null)
                {
                    return(null);
                }

                //поднимаем хост и сообщаем о новой игре
                NewHost(wcfGame.Id);
                _NotifyService.AddGameNotifi(wcfGame);

                return(wcfGame);
            }
            catch (Exception exp)
            {
                GameException.NewGameException(null, "Не удалось создать игру.", exp, false);
                return(null);
            }
        }
Exemplo n.º 2
0
        private WCFGame CreateGame(WCFGameSettings gameSettings, string gamePassword)
        {
            using (Agot2p6Entities dbContext = new Agot2p6Entities())
            {
                //игра образец
                GameTypeItem gametype  = GameHost.GameTypes.Single(p => p.Id == gameSettings.GameType);
                Game         ownerGame = dbContext.Game.Single(p => p.Id == gametype.GameId);
                ownerGame.DbContext = dbContext;

                //копируем
                Game game = ownerGame.CopyGame();
                game.Type         = ownerGame.Type;
                game.CreatorLogin = gameSettings.CreatorLogin;
                game.Name         = gameSettings.Name;
                game.Password     = gamePassword;

                //настраиваем
                game.MindRate      = gameSettings.RateSettings.MindRate;
                game.HonorRate     = gameSettings.RateSettings.HonorRate;
                game.LikeRate      = gameSettings.RateSettings.LikeRate;
                game.DurationRate  = gameSettings.RateSettings.DurationRate;
                game.RandomIndex   = gameSettings.RandomIndex;
                game.IsRandomSkull = gameSettings.IsRandomSkull;
                game.MaxTime       = gameSettings.MaxTime;
                game.AddTime       = gameSettings.AddTime;
                game.Lang          = gameSettings.Lang;
                game.WithoutChange = gameSettings.WithoutChange;
                game.IsGarrisonUp  = gameSettings.IsGarrisonUp;
                game.NoTimer       = gameSettings.NoTimer;

                //добавляем
                dbContext.Game.Add(game);
                dbContext.SaveChanges();

                return(game.ToWCFGame());
            }
        }