Arcade Shooter
ScreenManager.h
1 /* --------------------------------------------------------------- /
2 
3  ██╗ ██╗ █████╗ ████████╗ █████╗ ███╗ ██╗ █████╗
4  ██║ ██╔╝ ██╔══██╗ ╚══██╔══╝ ██╔══██╗ ████╗ ██║ ██╔══██╗
5  █████╔╝ ███████║ ██║ ███████║ ██╔██╗ ██║ ███████║
6  ██╔═██╗ ██╔══██║ ██║ ██╔══██║ ██║╚██╗██║ ██╔══██║
7  ██║ ██╗ ██║ ██║ ██║ ██║ ██║ ██║ ╚████║ ██║ ██║
8  ╚═╝ ╚═╝ ╚═╝ ╚═╝/\ ╚═╝ ╚═╝ ╚═╝ ╚═╝ ╚═══╝ ╚═╝ ╚═╝
9  /vvvvvvvvvvvvvvvvvvv \=========================================,
10  `^^^^^^^^^^^^^^^^^^^ /---------------------------------------"
11  Katana Engine \/ © 2012 - Shuriken Studios LLC
12 
13 / --------------------------------------------------------------- */
14 
15 #pragma once
16 
17 namespace KatanaEngine
18 {
19  class Game;
20 
23  {
24  friend class Game;
25 
26  public:
27 
30  ScreenManager(Game *pGame);
31  virtual ~ScreenManager() { }
32 
35  Game *GetGame() const { return m_pGame; }
36 
40 
43  virtual void AddScreen(Screen *pScreen);
44 
47  virtual void Update(const GameTime *pGameTime);
48 
51  virtual void Draw(SpriteBatch *pSpriteBatch);
52 
53 
54  private:
55 
56  Game *m_pGame;
57 
58  std::vector<Screen *> m_screens;
59  std::vector<Screen *> m_screensToAdd;
60  std::vector<Screen *> m_screensToRemove;
61  std::vector<Screen *> m_screensToDraw;
62 
63  std::vector<Screen *>::iterator m_it;
64  std::vector<Screen *>::reverse_iterator m_rit;
65 
66  virtual void HandleInput(const InputState *pInput);
67  };
68 }
Updates, renders, and manages transitions between instances of the Screen class.
Definition: ScreenManager.h:22
Base class for all game screens and menus.
Definition: Screen.h:39
virtual void AddScreen(Screen *pScreen)
Add a screen to be managed.
Definition: ScreenManager.cpp:146
ScreenManager(Game *pGame)
Instantiate a screen manager object.
Definition: ScreenManager.cpp:19
ResourceManager * GetResourceManager() const
Gets a pointer to the ResourceManager, for loading and managing resources.
Definition: ScreenManager.cpp:24
Contains timing values for game updates and rendering.
Definition: GameTime.h:17
Handles the state of multiple player input devices.
Definition: InputState.h:18
virtual void Update(const GameTime *pGameTime)
Called when the game has determined that screen logic needs to be processed.
Definition: ScreenManager.cpp:52
Base class for all games. Provides graphics initialization, game loop, and rendering code...
Definition: Game.h:18
Enables a group of sprites to be drawn using the same settings.
Definition: SpriteBatch.h:44
Loads and manages the lifespan of objects from external files.
Definition: ResourceManager.h:17
virtual void Draw(SpriteBatch *pSpriteBatch)
Called when the game determines it is time to draw a frame.
Definition: ScreenManager.cpp:103
Game * GetGame() const
Gets a pointer to the Game.
Definition: ScreenManager.h:35
Katana Engine is a library of classes, interfaces, and value types that provides a foundation for dev...
Definition: Animation.cpp:14