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); } }
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()); } }