public void Initialize() { _stopwatch.Reset(); // Таймер _timer = _gameObjects["timer"] as Timer; if (_timer == null) throw new NullReferenceException("timer"); _timer.Reset(); // Таймер время до нажатия пробела _timerBeforeSpaceDown = _gameObjects["timerBeforeSpaceDown"] as Timer2; if (_timerBeforeSpaceDown == null) throw new NullReferenceException("timerBeforeSpaceDown"); _timerBeforeSpaceDown.Reset(); _firstLoop = true; _currentStrike = _gameObjects["currentStrikeInfo"] as StrikeInfo; if (_currentStrike == null) throw new NullReferenceException("currentStrikeInfo"); var ballStartPosition = CreateBallStartPosition(); StoreBallStartPosition(ballStartPosition); _ball = GetBall(); SetupBall(_ball, ballStartPosition); var holeStartPosition = CreateHoleStartPosition(); StoreHoleStartPosition(holeStartPosition); _hole = GetHole(); SetupHole(_hole, holeStartPosition); #region Задание параметров отображаемой мишени var holeView = _gameObjects["holeView"] as HoleView; if (holeView == null) throw new NullReferenceException("holeView"); var holeInfo = _currentStrike.Hole; // если отображаемый размер мишени не задан, используется действительный размер holeView.SetSize(holeInfo.VisibleSize == null ? holeInfo.Size : holeInfo.VisibleSize.Value); #endregion // Текущая игра _currentGame = _gameObjects["currentGame"] as Game; if (_currentGame == null) throw new NullReferenceException("currentGame"); // Все игроки var users = _gameObjects["users"] as Users; if (users == null) throw new NullReferenceException("users"); // Текущий игрок - испытуемый бьет первым _currentUser = users.FirstOrDefault(t => t.UserInfo.UserType == UserTypeEnum.User); if (_currentUser == null) throw new NullReferenceException("currentUser"); _gameObjects["currentUser"] = _currentUser; // Снять выделение с имени игрока var botScoreView = GameObjects["botScoreView"] as UserScoreView; if (botScoreView != null) { botScoreView.IsActive = false; } // Показать очки игрока var userScoreView = GameObjects["userScoreView"] as UserScoreView; if (userScoreView == null) throw new NullReferenceException("userScoreView"); userScoreView.Score = _currentUser.TotalScore; userScoreView.IsActive = true; GameObjects["currentUserScoreView"] = userScoreView; // Режим игрока var experiment = GameObjects["experiment"] as Experiment; if (experiment == null) throw new NullReferenceException("experiment"); _inTestMode = experiment.Mode != null && experiment.Mode.Value == ExeprimentModeEnum.Test && _currentStrike.InTestMode != null; }