Ball and Spring Toy
Game Physics with Bespoke Code
Loading...
Searching...
No Matches
CGame Class Reference

The game class. More...

#include <Game.h>

Inheritance diagram for CGame:
Collaboration diagram for CGame:

Public Member Functions

 ~CGame ()
 Destructor.
 
void Initialize ()
 Initialize the game.
 
void ProcessFrame ()
 Process an animation frame.
 
void Release ()
 Release the renderer.
 

Private Member Functions

void LoadSprites ()
 Start loading sprites.
 
void LoadSounds ()
 Start loading sounds.
 
void BeginGame ()
 Begin playing the game.
 
void KeyboardHandler ()
 The keyboard handler.
 
void DrawFrameRateText (const XMVECTORF32 &)
 Draw frame rate text to screen.
 
void RenderFrame ()
 Render an animation frame.
 
void ProcessState ()
 Process game state.
 
void CreateObjects ()
 Create game objects.
 

Private Attributes

bool m_bDrawFrameRate = false
 Draw the frame rate.
 
eGameState m_eGameState = eGameState::Loading
 Game state.
 

Additional Inherited Members

- Static Protected Attributes inherited from CCommon
static Sage::CSpriteRenderer * m_pRenderer = nullptr
 Pointer to the renderer.
 
static CObjectManagerm_pObjectManager = nullptr
 Pointer to the object manager.
 
static eBody m_eCurrentBody = (eBody)0
 Current body type.
 

Detailed Description

The game class is the object-oriented implementation of the game. This class must contain the following public member functions. Initialize() does initialization and will be run exactly once at the start of the game. ProcessFrame() will be called once per frame to create and render the next animation frame. Release() will be called at game exit but before any destructors are run.

Constructor & Destructor Documentation

◆ ~CGame()

CGame::~CGame ( )

Delete the object manager. The renderer needs to be deleted before this destructor runs so it will be done elsewhere.

Member Function Documentation

◆ BeginGame()

void CGame::BeginGame ( )
private

Set the game state to "playing", clear any old objects out of the object manager and create some new ones.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ CreateObjects()

void CGame::CreateObjects ( )
private

Ask the object manager to create the game objects.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ DrawFrameRateText()

void CGame::DrawFrameRateText ( const XMVECTORF32 & color)
private

Draw the current frame rate to a hard-coded position in the window. The frame rate will be drawn in a hard-coded position using the font specified in GameSettings.xml.

Parameters
colorText color from Colors::.
Here is the caller graph for this function:

◆ Initialize()

void CGame::Initialize ( )

Initialize the game as follows. Set the timer. Create the renderer and the object manager. Load images and sounds from files.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ KeyboardHandler()

void CGame::KeyboardHandler ( )
private

Poll the keyboard state and respond to the key presses that happened since the last frame. The keys are identified using virtual-key codes.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ LoadSounds()

void CGame::LoadSounds ( )
private

Create a media list Sage::CMediaList of eSound. For each sound, insert into the media list a pair consisting of an instance of the sound enumerated type eSound and the corresponding string used in the name field in a <sound> tag in GameSettings.xml. Pass the media list to the sound manager for loading.

Here is the caller graph for this function:

◆ LoadSprites()

void CGame::LoadSprites ( )
private

Create a media list Sage::CMediaList of eSprite. For each sprite, insert into the media list a pair consisting of an instance of the sprite enumerated type eSprite and the corresponding string used in the name field in a <sprite> tag in GameSettings.xml. Pass the media list to the renderer for loading.

Here is the caller graph for this function:

◆ ProcessFrame()

void CGame::ProcessFrame ( )

This function will be called regularly to process and render a frame of animation, which involves the following. Handle keyboard input. Notify the sound player at the start of each frame so that it can prevent multiple copies of a sound from starting on the same frame. Move the game objects. Render a frame of animation. Process any changes to the current game state.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ ProcessState()

void CGame::ProcessState ( )
private

Process any changes to the current game state. If the game is in state eGameState::Loading and both the renderer and sound manager have finished loading (which may or may not be multithreaded), then begin the game.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ Release()

void CGame::Release ( )

Release all of the DirectX12 objects by deleting the renderer.

Here is the caller graph for this function:

◆ RenderFrame()

void CGame::RenderFrame ( )
private

Draw the game objects. The renderer is notified of the start and end of the frame so that it can let Direct3D do its pipelining jiggery-pokery. If the game state indicates that media is still loading, then a Loading... string is drawn at the center of the screen. This function assumes that the font specified in GameSettings.xml has already been loaded. If all media has finished loading, then the game objects are drawn by the object manager.

Here is the call graph for this function:
Here is the caller graph for this function: