public FrezoutGame(ITournament tour) { _disPrizes = new DistributionPrizesGame(); _settings = new Settings(); Players = new ObservableCollection<PlayerGame>(); FrezoutGameMain = this; _isSound = _settings.SoundSetting; IsPause = true; Name = tour.Name; Type = tour.TypeToString; AllChips = tour.BuyInChips*tour.Players; BuyInCost = tour.BuyInCost; StartStack = tour.StartStack; // начальный стек _buyInChips = tour.BuyInChips; if (tour.Commission != 0) // проверяем случай наличия комисии (уменьшаем цену на бай-ин) BuyInCost -= BuyInCost*(tour.Commission/100); /* заполняем времена продолжительности: игры, уровня, времени до след. перерыва, ребай-периода */ //_levelSeconds = 2; //_breakDurationSeconds = 2 * 3; //_breakInSeconds = _levelSeconds * 0; //_lateRegistration = 2; // selectTour.LateRegistration; _levelSeconds = tour.LevelDuration*Sixty; _breakDurationSeconds = tour.BreakDuration*Sixty; _breakInSeconds = _levelSeconds*tour.BreakFrequency; _lateRegistration = tour.LateRegistration; // если==0 - послед. рег отсутствует _gameSeconds = tour.GameDuration*Sixty; _isGameUnlimited = tour.IsGameUnlimited; LateRegistrationDec = _levelSeconds*_lateRegistration; // делаем их копии с целью изменения в таймере LevelDec = _levelSeconds; BreakDec = _breakInSeconds; //если==0 - перерывы отсутствуют GameInc = _gameSeconds; IsBreakExist = _breakInSeconds != 0; IsLateRegExist = _lateRegistration != 0; // за 30/60 секунд до окончания - звуковое уведомление if (_levelDec >= 600 && _levelDec < 1800) // 10-30 минут { _secondEndLevel = 30; _isSoundEndLevel = true; } else if (_levelDec >= 1800) // больше 30 минут { _secondEndLevel = 60; _isSoundEndLevel = true; } /* инициализируем игроков и блайнды */ AddPlayers(tour.GetPlayersOfTour()); Blinds = new GameBlindCollection(MyDataContextBase.Blinds.Where(x => x.BlindTour == tour)); CalcChips(); /* Таймеры игры и уровня */ _timerGame = new DispatcherTimer {Interval = _interval}; _timerGame.Tick += timerGame_Tick; _timerLevel = new DispatcherTimer {Interval = _interval}; _timerLevel.Tick += timerLevel_Tick; }