public GameViewController(MainWindow mainWindow, string selectedGame) : base(mainWindow) { _refreshTimer = new Timer { Interval = 1000 / 60 }; _pacmanAnimationTimer = new Timer { Interval = 150 }; _obstacleTimer = new Timer { Interval = 3000 }; _spawnTimer = new Timer { Interval = 2500 }; _clock = new Clock(); _score = new Score(); _gameView = new GameView(); _gameValues = new GameValues(); _playgroundFactory = new PlaygroundFactory(); _playerFactory = new PlayerFactory(); _enemyFactory = new EnemyFactory(); _pacmanAnimation = new PacmanAnimation(); _enemyAnimation = new EnemyAnimation(); _obstacleAnimation = new ObstacleAnimation(); _step = new Step(); _position = new Position(_gameValues); _random = new Random(); _sound = new Sound(); SetContentOfMain(mainWindow, _gameView); _selectedGame = selectedGame; _gameState = GameState.Playing; SetKeyDownEvents(_gameView.GameCanvas, OnButtonKeyDown); SetKeyUpEvents(_gameView.GameCanvas, OnButtonKeyUp); _gameView.GameCanvas.Loaded += OnGameCanvasLoaded; MainWindow.Closing += OnMainWindowClosing; _refreshTimer.Elapsed += RefreshGameCanvas; _pacmanAnimationTimer.Elapsed += OnPacmanAnimationTimerElapsed; _obstacleTimer.Elapsed += OnObstacleTimerElapsed; _spawnTimer.Elapsed += OnspawnTimerElapsed; _clock.PlaytimeIsOver += OnPlaytimeIsOver; _clock.PlaytimeIsOver += _sound.OnPlaytimeIsOver; _position.CollisionDetecter.CoinCollision += OnCoinCollision; _position.CollisionDetecter.CoinCollision += _sound.OnCoinCollision; _position.CollisionDetecter.EndpointCollision += OnEndpointCollision; _position.CollisionDetecter.EndpointCollision += _sound.OnEndpointCollision; _position.CollisionDetecter.EnemyCollision += OnOnEnemyCollision; _position.CollisionDetecter.EnemyCollision += _sound.OnOnEnemyCollision; _position.CollisionDetecter.ObstacleCollision += OnObstacleCollision; _position.CollisionDetecter.ObstacleCollision += _sound.OnObstacleCollision; _pacmanAnimation.LoadPacmanImages(); _enemyAnimation.LoadPacmanImages(); _obstacleAnimation.LoadObstacleImages(); }