public GameScreen(GameLog gameLog, Character currentCharacter) { _currentCharacter = currentCharacter; _screenState = GameScreenState.World; _gameLog = gameLog; }
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); }
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); }
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); }
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; }
private void PlayerEaten() { _state = GameScreenState.PlayerEaten; AudioManager.SoundEffectInstances[AudioManager.Cue.GameplayMusic].Stop(); AudioManager.SoundEffectInstances[AudioManager.Cue.PlayerEaten].Play(); _enemy.Move(Direction.None); _player.Die(); }
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(); }
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(); }
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); }
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); }
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; } }
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); }
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); }
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); }
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; } } }
public GameScreen() { _isExiting = false; _screenState = GameScreenState.Hidden; }