Example #1
0
        public GameScreen(GameLog gameLog, Character currentCharacter)
        {
            _currentCharacter = currentCharacter;
            _screenState      = GameScreenState.World;

            _gameLog = gameLog;
        }
Example #2
0
        private ScreenInputProcessResult ProcessHotBarUseInput(ConsoleKey key)
        {
            var result = new ScreenInputProcessResult();

            switch (key)
            {
            case KeyMapping.Cancel:
                _screenState        = GameScreenState.World;
                result.RerenderFlag = true;
                break;

            case KeyMapping.PreviousItem:
                _currentCharacter.HotBar.SelectedSlot.PrevItem();
                result.RerenderFlag = true;
                break;

            case KeyMapping.NextItem:
                _currentCharacter.HotBar.SelectedSlot.NextItem();
                result.RerenderFlag = true;
                break;

            case KeyMapping.Confirm:
                _currentCharacter.HotBar.SelectedSlot.PressCurrentItem();
                _currentCharacter.HotBar.SelectedSlot = null;
                _screenState        = GameScreenState.World;
                result.RerenderFlag = true;
                break;
            }

            return(result);
        }
Example #3
0
        public GameScreen(Game game) : base(game)
        {
            _state = GameScreenState.GetReady;

            _spriteBatch = new SpriteBatch(game.GraphicsDevice);

            _player     = new Player();
            _enemy      = new Enemy();
            _pathFinder = new PathFinder();

            _scoreDisplay = new ScoreDisplay {
                Position = new Vector2(210, 10)
            };

            _getReady = new GetReady(300);
            _getReady.Center();

            _gameOver = new GameOver(300);
            _gameOver.Center();

            _pauseDialog = new PauseDialog(game);
            _pauseDialog.Center();

            _livesDisplay = new LivesDisplay
            {
                Position = new Vector2(240, 1040)
            };

            _background = game.Content.Load <Texture2D>("gfx\\maze\\Background");

            _numLives = NumberOfLives;

            InitializeLevel(0);
        }
Example #4
0
        private ScreenInputProcessResult ProcessLookAtInput(ConsoleKey key)
        {
            var result = new ScreenInputProcessResult();

            switch (key)
            {
            case KeyMapping.Cancel:
                _screenState        = GameScreenState.World;
                result.RerenderFlag = true;
                break;

            case KeyMapping.PreviousItem:
                _lookAtList.PrevItem();
                result.RerenderFlag = true;
                break;

            case KeyMapping.NextItem:
                _lookAtList.NextItem();
                result.RerenderFlag = true;
                break;

            case KeyMapping.Confirm:
                _lookAtList.PressCurrentItem();
                _screenState        = GameScreenState.World;
                result.RerenderFlag = true;
                break;
            }

            return(result);
        }
Example #5
0
 public GameScreen()
 {
     playerPaddle = new Paddle(new Vector2(20, 275), 8, true);
     watsonPaddle = new Paddle(new Vector2(780, 275), 8, false);
     ball = new Ball(6);
     screenState = GameScreenState.Playing;
 }
Example #6
0
 private void PlayerEaten()
 {
     _state = GameScreenState.PlayerEaten;
     AudioManager.SoundEffectInstances[AudioManager.Cue.GameplayMusic].Stop();
     AudioManager.SoundEffectInstances[AudioManager.Cue.PlayerEaten].Play();
     _enemy.Move(Direction.None);
     _player.Die();
 }
Example #7
0
 private void GameOver()
 {
     _state = GameScreenState.GameOver;
     AudioManager.SoundEffectInstances[AudioManager.Cue.GameplayMusic].Stop();
     AudioManager.SoundEffectInstances[AudioManager.Cue.GameOver].Play();
     _enemy.Move(Direction.None);
     _player.Die();
     _gameOver.Show();
 }
Example #8
0
        public void ResetLevel()
        {
            _state         = GameScreenState.GetReady;
            _lastDirection = Direction.None;

            AudioManager.SoundEffectInstances[AudioManager.Cue.GameplayMusic].Stop();
            _player.SetTilePosition((int)_maze.PlayerStart.Y, (int)_maze.PlayerStart.X);
            _player.Reset();
            _enemy.SetTilePosition((int)_maze.EnemyStart.Y, (int)_maze.EnemyStart.X);
            _enemy.Reset();
            _getReady.Reset();
            AudioManager.SoundEffectInstances[AudioManager.Cue.GetReadyMusic].Play();
        }
Example #9
0
        private void RegisterGameScreens()
        {
            TitleScreen ts = new TitleScreen(this);

            ts.StartGame += (s, e) => _gameScreenState.SetState(GameState.Playing);

            PlayingScreen ps = new PlayingScreen(this);

            ps.GameOverWaitFinished += (s, e) => _gameScreenState.SetState(GameState.TitleScreen);

            GameScreenMap <GameState> map = new GameScreenMap <GameState>()
                                            .AddState(GameState.TitleScreen, ts)
                                            .AddState(GameState.Playing, ps);

            _gameScreenState = new GameScreenState <GameState>(map, GameState.TitleScreen);
        }
Example #10
0
        public void InitializeLevel(int level)
        {
            _state = GameScreenState.GetReady;

            AudioManager.SoundEffectInstances[AudioManager.Cue.GameplayMusic].Stop();
            _currentLevel = Levels.AllLevels[level];
            _maze         = new Maze(MonsterGame.Instance, _currentLevel.Data);
            _player.SetTilePosition((int)_maze.PlayerStart.Y, (int)_maze.PlayerStart.X);
            _player.Reset();
            _enemy.SetTilePosition((int)_maze.EnemyStart.Y, (int)_maze.EnemyStart.X);
            _enemy.Reset();
            _getReady.Reset();
            AudioManager.SoundEffectInstances[AudioManager.Cue.GetReadyMusic].Play();
            _lastDirection = Direction.None;

            _pathFinder.Initialize(_maze);
        }
Example #11
0
        public virtual void Update(GameTime gameTime, bool otherScreenHasFocus, bool coveredByOtherScreen)
        {
            ScreenManager.Screens.Last().Back(gameTime);

            _otherScreenHasFocus = otherScreenHasFocus;

            if (_isExiting)
            {
                ScreenManager.RemoveScreen(this);

                _isExiting = false;
            }
            else if (coveredByOtherScreen)
            {
                _screenState = GameScreenState.Hidden;
            }
            else
            {
                _screenState = GameScreenState.Active;
            }
        }
Example #12
0
        public ScreenInputProcessResult ProcessInput(ConsoleKey key)
        {
            var result = new ScreenInputProcessResult();

            switch (_screenState)
            {
            case GameScreenState.World:
                result = ProcessWorldInput(key);
                break;

            case GameScreenState.LookAt:
                result = ProcessLookAtInput(key);
                break;

            case GameScreenState.HotBarUse:
                result = ProcessHotBarUseInput(key);
                break;

            case GameScreenState.TalkTo:
                // Overengineering in the flesh...
                result = _talkToScreen.ProcessInput(key, endDialogueCallback: () =>
                {
                    _screenState  = GameScreenState.World;
                    _talkToScreen = null;
                });

                if (result.SwitchState == GameState.World)
                {
                    _screenState = GameScreenState.World;
                }

                break;
            }

            return(result);
        }
Example #13
0
        public ScreenInputProcessResult ProcessWorldInput(ConsoleKey key)
        {
            var result = new ScreenInputProcessResult();

            switch (key)
            {
            case KeyMapping.ShowTalkMenu:
            {
                _talkToScreen = TalkToScreen.CreateOrDefault(_currentCharacter);

                if (_talkToScreen != null)
                {
                    _screenState = GameScreenState.TalkTo;
                }
                else
                {
                    _gameLog.WriteLine("There is no one you can talk to here.");
                }

                result.RerenderFlag = true;

                break;
            }

            case KeyMapping.ShowLookMenu:
            {
                var labels = _currentCharacter.CurrentScene.GetObservableObjects()
                             .Except(new[] { _currentCharacter })
                             .Select((o, i) =>
                                     new UiLabel
                    {
                        Text    = o.Name,
                        Row     = i,
                        OnPress = (_, __) =>
                        {
                            _gameLog.WriteLine($"{_currentCharacter.Inspect(o).Response}");
                        }
                    }
                                     ).ToList();

                if (labels.Any())
                {
                    _lookAtList = new UiSelectList(labels);

                    _screenState = GameScreenState.LookAt;
                }
                else
                {
                    _gameLog.WriteLine("There is nothing to look at here.");
                }

                result.RerenderFlag = true;

                break;
            }

            case KeyMapping.ShowStats:
                result.SwitchState  = GameState.Stats;
                result.RerenderFlag = true;
                break;

            case KeyMapping.SlideRight:
                _bottomMenuState++;

                if (!Enum.IsDefined(typeof(GameScreenBottomMenuState), _bottomMenuState))
                {
                    _bottomMenuState = GameScreenBottomMenuState.Help;
                }
                result.RerenderFlag = true;

                break;

            case KeyMapping.SlideLeft:
                _bottomMenuState--;

                if (!Enum.IsDefined(typeof(GameScreenBottomMenuState), _bottomMenuState))
                {
                    _bottomMenuState = GameScreenBottomMenuState.Hotbar;
                }
                result.RerenderFlag = true;

                break;

            case KeyMapping.HotBar_1:
                if (_currentCharacter.HotBar.Slot1.IsOccupied)
                {
                    _currentCharacter.HotBar.SelectedSlot = _currentCharacter.HotBar.Slot1;
                    _currentCharacter.HotBar.SelectedSlot.UpdateCharacterSelectList(_currentCharacter);

                    _screenState        = GameScreenState.HotBarUse;
                    result.RerenderFlag = true;
                }
                break;

            case KeyMapping.HotBar_2:
                if (_currentCharacter.HotBar.Slot2.IsOccupied)
                {
                    _currentCharacter.HotBar.SelectedSlot = _currentCharacter.HotBar.Slot2;
                    _currentCharacter.HotBar.SelectedSlot.UpdateCharacterSelectList(_currentCharacter);

                    _screenState        = GameScreenState.HotBarUse;
                    result.RerenderFlag = true;
                }
                break;

            case KeyMapping.HotBar_3:
                if (_currentCharacter.HotBar.Slot3.IsOccupied)
                {
                    _currentCharacter.HotBar.SelectedSlot = _currentCharacter.HotBar.Slot3;
                    _currentCharacter.HotBar.SelectedSlot.UpdateCharacterSelectList(_currentCharacter);

                    _screenState        = GameScreenState.HotBarUse;
                    result.RerenderFlag = true;
                }
                break;

            case KeyMapping.HotBar_4:
                if (_currentCharacter.HotBar.Slot4.IsOccupied)
                {
                    _currentCharacter.HotBar.SelectedSlot = _currentCharacter.HotBar.Slot4;
                    _currentCharacter.HotBar.SelectedSlot.UpdateCharacterSelectList(_currentCharacter);

                    _screenState        = GameScreenState.HotBarUse;
                    result.RerenderFlag = true;
                }
                break;

            case KeyMapping.HotBar_5:
                if (_currentCharacter.HotBar.Slot5.IsOccupied)
                {
                    _currentCharacter.HotBar.SelectedSlot = _currentCharacter.HotBar.Slot5;
                    _currentCharacter.HotBar.SelectedSlot.UpdateCharacterSelectList(_currentCharacter);

                    _screenState        = GameScreenState.HotBarUse;
                    result.RerenderFlag = true;
                }
                break;

            case KeyMapping.HotBar_6:
                if (_currentCharacter.HotBar.Slot6.IsOccupied)
                {
                    _currentCharacter.HotBar.SelectedSlot = _currentCharacter.HotBar.Slot6;
                    _currentCharacter.HotBar.SelectedSlot.UpdateCharacterSelectList(_currentCharacter);

                    _screenState        = GameScreenState.HotBarUse;
                    result.RerenderFlag = true;
                }
                break;

            case KeyMapping.HotBar_7:
                if (_currentCharacter.HotBar.Slot7.IsOccupied)
                {
                    _currentCharacter.HotBar.SelectedSlot = _currentCharacter.HotBar.Slot7;
                    _currentCharacter.HotBar.SelectedSlot.UpdateCharacterSelectList(_currentCharacter);

                    _screenState        = GameScreenState.HotBarUse;
                    result.RerenderFlag = true;
                }
                break;

            case KeyMapping.HotBar_8:
                if (_currentCharacter.HotBar.Slot8.IsOccupied)
                {
                    _currentCharacter.HotBar.SelectedSlot = _currentCharacter.HotBar.Slot8;
                    _currentCharacter.HotBar.SelectedSlot.UpdateCharacterSelectList(_currentCharacter);

                    _screenState        = GameScreenState.HotBarUse;
                    result.RerenderFlag = true;
                }
                break;

            case KeyMapping.HotBar_9:
                if (_currentCharacter.HotBar.Slot9.IsOccupied)
                {
                    _currentCharacter.HotBar.SelectedSlot = _currentCharacter.HotBar.Slot9;
                    _currentCharacter.HotBar.SelectedSlot.UpdateCharacterSelectList(_currentCharacter);

                    _screenState        = GameScreenState.HotBarUse;
                    result.RerenderFlag = true;
                }
                break;

            case KeyMapping.HotBar_10:
                result.SwitchState  = GameState.Fight;
                result.RerenderFlag = true;
//                    if (_currentCharacter.HotBar.Slot10.IsOccupied)
//                    {
//                        _currentCharacter.HotBar.SelectedSlot = _currentCharacter.HotBar.Slot10;
//                        _currentCharacter.HotBar.SelectedSlot.UpdateCharacterSelectList(_currentCharacter);
//
//                        _screenState = GameScreenState.HotBarUse;
//                        result.RerenderFlag = true;
//                    }
                break;
            }

            return(result);
        }
Example #14
0
        public override void Update(GameTime gameTime)
        {
            if (MonsterGame.Instance.IsPaused)
            {
                _pauseDialog.Update(gameTime);
                return;
            }

            if (InputManager.CurrentState.Start || InputManager.CurrentState.Back)
            {
                _pauseDialog.Show();
                MonsterGame.Instance.IsPaused = !MonsterGame.Instance.IsPaused;
            }

            switch (_state)
            {
            case GameScreenState.GetReady:
                if (AudioManager.SoundEffectInstances[AudioManager.Cue.GetReadyMusic].State == SoundState.Stopped)
                {
                    _getReady.Hide();
                    _state = GameScreenState.Play;
                    AudioManager.SoundEffectInstances[AudioManager.Cue.GameplayMusic].IsLooped = true;
                    AudioManager.SoundEffectInstances[AudioManager.Cue.GameplayMusic].Volume   = 0.6f;
                    AudioManager.SoundEffectInstances[AudioManager.Cue.GameplayMusic].Play();
                }
                break;

            case GameScreenState.Play:
                MovePlayer();
                MoveEnemy();
                HandleCollisions();
                break;

            case GameScreenState.PlayerEaten:
                if (AudioManager.SoundEffectInstances[AudioManager.Cue.PlayerEaten].State != SoundState.Playing)
                {
                    _numLives--;
                    ResetLevel();
                }
                break;

            case GameScreenState.LevelComplete:
                if (AudioManager.SoundEffectInstances[AudioManager.Cue.LevelCompleted].State != SoundState.Playing)
                {
                    MoveToNextLevel();
                }
                break;

            case GameScreenState.GameOver:
                _gameOverTimer += gameTime.ElapsedGameTime.Milliseconds;
                if (_gameOverTimer >= GameOverTimeout)
                {
                    MonsterGame.Instance.SetState(GameState.TitleScreen);
                }
                break;
            }

            _player.Update(gameTime);

            MazeTile mt = _maze.GetTile(_player.Row, _player.Column);

            if (mt != null)
            {
                switch (mt.DotType)
                {
                case MazeTile.DotTileType.None:
                    break;

                case MazeTile.DotTileType.Dot:
                    _player.EatDot();
                    _score += 100;
                    break;

                case MazeTile.DotTileType.Icon:
                    _player.EatIcon();
                    _score += 1000;
                    break;

                default:
                    throw new ArgumentOutOfRangeException();
                }

                mt.DotType = MazeTile.DotTileType.None;

                if (_maze.IsComplete)
                {
                    _state = GameScreenState.LevelComplete;
                    AudioManager.SoundEffectInstances[AudioManager.Cue.GameplayMusic].Stop();
                    _player.Move(Direction.None);
                    _enemy.Move(Direction.None);
                    AudioManager.SoundEffectInstances[AudioManager.Cue.LevelCompleted].Play();
                }
            }

            _enemy.Update(gameTime);
            _getReady.Update(gameTime);
            _gameOver.Update(gameTime);
            _livesDisplay.NumberOfLives = _numLives;
            _livesDisplay.Update(gameTime);
            _maze.Update(gameTime);
            _scoreDisplay.Update(gameTime, XboxLiveManager.Profile.Gamertag, _score);
        }
Example #15
0
        public void Update(GameTime gameTime)
        {
            if (screenState == GameScreenState.Playing)
            {
                CheckCollisions();
                playerPaddle.Update(ball);
                watsonPaddle.Update(ball);
                ball.Update();

                if (ScreenManager.keyboard.PauseOrQuit)
                {
                    ScreenManager.gameState = GameState.Menu;
                }
            }
            else //if (screenState == GameScreenState.GameOver)
            {
                if (ScreenManager.keyboard.MenuSelection)
                {
                    if (WatsonScore > PlayerScore)
                    {
                        WatsonScore = -1;
                        PlayerScore = 0;
                    }
                    else
                    {
                        WatsonScore = 0;
                        PlayerScore = -1;
                    }
                    screenState = GameScreenState.Playing;
                }
                else if (ScreenManager.keyboard.PauseOrQuit)
                {
                    ScreenManager.isExiting = true;
                }
            }
        }
Example #16
0
        public GameScreen()
        {
            _isExiting = false;

            _screenState = GameScreenState.Hidden;
        }