Main Page   Namespace List   Class Hierarchy   Compound List   File List   Namespace Members   Compound Members   File Members  

ZE::ZEngine Class Reference

#include <ZE_ZEngine.h>

List of all members.


Detailed Description

ZEngine Singleton Class, accessible from anywhere in a ZEngine-based program by nature. Controls core elements of program and does majority of SDL and OpenGL wrapping.


Public Member Functions

void SetupDisplay (int width, int height, int bpp, bool fullscreen)
 Setup Display for SDL.

void SetupSound (int rate, bool stereo)
 Setup Sound for SDL.

bool CreateDisplay (std::string title, std::string icon="")
 Create Display with predefined settings.

void CloseDisplay ()
 Quit SDL and any Subsystems.

void ToggleFullscreen ()
 Toggle fullscreen/windowed mode.

bool Initialized ()
 Check state of ZEngine.

SDL_Surface * Display ()
 Allow access to Screen Surface.

void Update ()
 Update display contents.

void Clear (Uint8 red=0, Uint8 green=0, Uint8 blue=0, Uint8 alpha=255)
 Clear screen to a certain color (Black by default).

void SetGL2D ()
 Setup OpenGL ortho mode.

void Delay (Uint32 milliseconds)
 Sleep for a certain amount of time.

Uint32 GetTime ()
 Get Global ZEngine time.

void PauseTimer ()
 Pause ZEngine.

void UnpauseTimer ()
 Unpause ZEngine.

double GetFrameTime ()
 Get Seconds Per Frame.

double GetFramerate ()
 Get Frames Per Second.

void SetDesiredFramerate (Uint8 rate)
 Set Desired Framerate.

Uint8 GetDesiredFramerate ()
 Get Desired Framerate.

bool IsPaused ()
 Check Engine Paused State.

bool IsActive ()
 Find out if application is active.

void RequestQuit ()
 Request A Quit.

bool QuitRequested ()
 Find out if user has requested to quit.

void SetReloadNeed (bool state)
 Set State of ImagesNeedReload.

bool ImagesNeedReload ()
 Find out if images should be reloaded.

void SetKeyRepeatRate (int rate)
 Set Key repeat rate.

bool KeyIsPressed (SDLKey key)
 Find the state of a key.

bool KeyPress (SDLKey key)
 Find if key has been pressed since last check.

void HideCursor ()
 Hide mouse cursor.

void ShowCursor ()
 Show mouse cursor.

int MouseX ()
 Get X Position of Mouse.

int MouseY ()
 Get Y Position of Mouse.

bool LButtonPressed ()
 Get Status of Left Button.

bool RButtonPressed ()
 Get Status of Right Button.

bool MButtonPressed ()
 Get status of Middle Button.

bool MouseInRect (SDL_Rect *rect)
 Check if mouse is in given rectangle.

bool MouseInRect (ZRect rect)
 Check if mouse is in given rectangle.

void CheckEvents ()
 Check for Activation, Window Manager, and Quit Events.

void SetEventFilter (SDL_EventFilter filter)
 Add a SDL Event Filter for user processing of events.

void SetErrorLog (bool logAll, std::string logFile="")
 Modify Error Logging.

void ReportError (ZErrorCode code, std::string desc="", std::string file="", unsigned int line=0)
 Report an error.

ZErrorCode GetLastError ()
 Get the last error.

void WriteLog (std::string str)
 Write to the log.

void FlushErrors ()
 Flush Stack of Errors to file.

void SeedRandGen (unsigned long seed)
 Seed random number generator.

unsigned int Rand (unsigned int max)
 Obtain random integer [0,max).

unsigned long Rand (unsigned long max)
 Obtain random integer [0,max).

int Rand (int min, int max)
 Obtain random integer [min,max].

long Rand (long min, long max)
 Obtain random integer [min,max].

float Rand (float min, float max)
 Obtain random integer [min,max].

double Rand (double min, double max)
 Obtain random integer [min,max].

double RandDouble ()
 Obtain random double [0,1).

int DisplayWidth ()
 Get Current Display Width.

int DisplayHeight ()
 Get Current Display Height.

int DisplayDepth ()
 Get Current Display BPP.

bool IsFullscreen ()
 Get Fullscreen setting.


Static Public Member Functions

ZEngine * GetInstance ()
 Get Instance.

void ReleaseInstance ()
 Release Instance.


Static Public Attributes

VersionInfo Version
 Static version information.


Private Member Functions

 ZEngine ()
 Constructor for ZEngine.

void LogError (ZError error)
 Writes an error to file.


Private Attributes

int mWidth
 Width of Display.

int mHeight
 Height of Display.

int mBPP
 BPP Setting of Display.

bool mFullscreen
 Fullscreen setting of Display.

bool mInitialized
 If ZEngine display has been setup.

SDL_Surface * mScreen
 Pointer to Display.

bool mPaused
 Keep track of paused state of game.

bool mUnpauseOnActive
 Keep track of if ZEngine should unpause on active event.

Uint8 mDesiredFramerate
 Value framerate strives to be at, set by SetDesiredFramerate.

Uint32 mNextUpdate
 Time scheduled for next update (used for framerate locked movement).

Uint32 mLastPause
 Keep track of time game was last paused.

Uint32 mPausedTime
 Keep track of total globally paused time.

Uint32 mLastTime
 Keep track of last screen update time.

double mSecPerFrame
 Seconds per frame.

bool mNeedReload
 bool which is only set to true if the engine thinks the images need to be reloaded (loss of focus in fullscreen).

bool mActive
 bool describing Active or Inactive State of Game

bool mQuit
 bool for checking if a Quit event has been detected

Uint8 * mKeyIsPressed
 Pointer to array of Keys.

bool mKeyPress [SDLK_LAST]
 Array of keys, used by KeyPress.

int mMouseX
 X Position of Mouse.

int mMouseY
 Y Position of Mouse.

Uint8 mMouseB
 Mouse Button Information.

std::queue< ZErrormErrorQueue
 Stack of Errors which have occured.

ZError mCurError
 Current error.

bool mLogAllErrors
 Option controlling how logfile is used.

std::FILE * mErrlog
 C-style FILE* for error logging.

SDL_EventFilter mEventFilter
 Event filter, for users who need to process their own events.

ZRandGen mRandGen
 Random Generator for general use.

int mRate
 Sound Bitrate.

bool mStereo
 Stereo setting of Sound Subsystem.


Static Private Attributes

ZEngine * sInstance = NULL
 Static Pointer to Instance of ZEngine for Singleton.


Constructor & Destructor Documentation

ZE::ZEngine::ZEngine  )  [private]
 

Initialize ZEngine values to defaults. (Private so that only one instance may be created.)


Member Function Documentation

ZEngine * ZE::ZEngine::GetInstance  )  [static]
 

Static function, returns pointer to instance of ZEngine, creating an instance if none exist.

Returns:
Instance to the ZEngine.

void ZE::ZEngine::ReleaseInstance  )  [static]
 

Release memory held by instance of engine and closes window.

void ZE::ZEngine::SetupDisplay int  width,
int  height,
int  bpp,
bool  fullscreen
 

Sets display parameters to specified parameters. (called before CreateDisplay)

Parameters:
width Desired width of screen or window.
height Desired height of screen or window.
bpp Desired BPP for screen, generally use 8,16 or 32, pass -1 if you want ZEngine to guess the best choice.
fullscreen A bool for fullscreen setting.

void ZE::ZEngine::SetupSound int  rate,
bool  stereo
 

Set sound settings to specified parameters. (If not called before CreateDisplay rate will default to 22050+mono)

Parameters:
rate Desired sound bitrate.
stereo A bool for stereo setting.

bool ZE::ZEngine::CreateDisplay std::string  title,
std::string  icon = ""
 

SetupDisplay and SetupSound should be called prior to this to change settings, settings from those do not go into effect until this function is called. Specify no icon file to use default icon for OS. Returns result of setting up ZEngine, and logs error if false is returned (Trys not to fail + returns bool in versions >= 0.8.2).

Parameters:
title Window Title.
icon Path to Icon File.
Returns:
result of setting up the display, true if everything went ok, false if any setup failed (check GetLastError).

void ZE::ZEngine::CloseDisplay  ) 
 

Shut down SDL (and SDL_ttf,SDL_mixer if necessary) You shouldn't ever have to call this, ReleaseInstance calls this for you.

void ZE::ZEngine::ToggleFullscreen  ) 
 

Safely toggles fullscreen/windowed mode, generally toggling modes will bring the need to reload images so it will set the ImagesNeedReload state to true.

Since:
0.8.2

bool ZE::ZEngine::Initialized  ) 
 

Checks if ZEngine display has been properly setup.

Since:
0.8.2
Returns:
Boolean status of ZEngine, true if CreateDisplay has been successfully called, false if ZEngine has no display.

SDL_Surface * ZE::ZEngine::Display  ) 
 

Get pointer to screen SDL_Surface, allowing direct screen manipulation using SDL.

Returns:
Pointer to Display Surface.

void ZE::ZEngine::Update  ) 
 

Swap OpenGL buffers, and update screen, if a desired framerate is set it will delay to stay under that rate. Must be called every frame.

void ZE::ZEngine::Clear Uint8  red = 0,
Uint8  green = 0,
Uint8  blue = 0,
Uint8  alpha = 255
 

Clears a rectangle on screen to a color, defaults to solid black.

Parameters:
red Red component (0-255) of new color.
green Green component (0-255) of new color.
blue Blue component (0-255) of new color.
alpha Alpha component (0-255) of new color.

void ZE::ZEngine::SetGL2D  ) 
 

Sets the OpenGL scaled orthographic mode, called once at beginning, no need to call unless you change the OpenGL mode manually.

void ZE::ZEngine::Delay Uint32  milliseconds  ) 
 

Freeze everything for given number of milliseconds.

Parameters:
milliseconds Number of milliseconds to freeze.

Uint32 ZE::ZEngine::GetTime  ) 
 

Get active time since ZEngine initialization in milliseconds, paused time doesn't count.

Returns:
Number of active milliseconds since initialization.

void ZE::ZEngine::PauseTimer  ) 
 

Pause ZEngine timer and all ZTimer objects that rely on ZEngine.

void ZE::ZEngine::UnpauseTimer  ) 
 

Unpause ZEngine timer and all ZTimer objects that rely on ZEngine.

double ZE::ZEngine::GetFrameTime  ) 
 

Get double that describes the time passed between screen updates. (should be used for Framerate Independant Movement)

Returns:
Time between screen updates.

double ZE::ZEngine::GetFramerate  ) 
 

Get double representing current (approximate) FPS. This value is always the same as 1/GetFrameTime().

Since:
0.8.2
Returns:
Current Framerate.

void ZE::ZEngine::SetDesiredFramerate Uint8  rate  ) 
 

Sets desired framerate, if engine gets ahead of desired rate during a frame it will stall in Update until current framerate is closer to that desired. Acceptable values are 1-255, setting this value to 0 will disable this feature. (Desired framerate is disabled upon initialization of ZEngine.)

Since:
0.8.2
Parameters:
rate Desired framerate 1-255, or 0 to disable.

Uint8 ZE::ZEngine::GetDesiredFramerate  ) 
 

Get desired framerate set by SetDesiredFramerate.

Since:
0.8.2
Returns:
Current setting for desired framerate.

bool ZE::ZEngine::IsPaused  ) 
 

Find out if engine timer is paused.

Returns:
Paused State of engine.

bool ZE::ZEngine::IsActive  ) 
 

Function to find out if application currently has focus.

Returns:
bool telling active/inactive state of application.

void ZE::ZEngine::RequestQuit  ) 
 

Tell the engine that it should behave as if a Quit was requested, does not call any shutdown functions.

bool ZE::ZEngine::QuitRequested  ) 
 

Function to find out if user or operating system has requested program cease execution, can be set by Alt-F4, SDL_Quit event or ZEngine::RequestQuit().

Returns:
bool telling if quit has been requested.

void ZE::ZEngine::SetReloadNeed bool  state  ) 
 

Parameters:
state False if images need to be reloaded, True if images have been reloaded.

bool ZE::ZEngine::ImagesNeedReload  ) 
 

Function that is good to call every frame to check if images should be reloaded, usually only caused by loss of focus in fullscreen.

Returns:
bool, True if images should be reloaded, false otherwise.

void ZE::ZEngine::SetKeyRepeatRate int  rate  ) 
 

Calls SDL_EnableKeyRepeat(rate,rate) because usually this is the desired movement style for games. 0 to disable. If 2 different values are needed SDL_EnableKeyRepeat can be called separately: http://sdldoc.csn.ul.ie/sdlenablekeyrepeat.php.

Parameters:
rate Desired key repeat rate.

bool ZE::ZEngine::KeyIsPressed SDLKey  key  ) 
 

Function returns true/false based on if key is currently pressed or not. This is used when using keys as buttons, and you need to check if the button/key is currently pressed (ex. arrow keys).

Parameters:
key Code of key to find status of.
Returns:
State of requested key.

bool ZE::ZEngine::KeyPress SDLKey  key  ) 
 

Function returns true/false based on if key has been pressed since last check. This is what is good to use if you are trying to get user input where a key is only counted once per press. (ex. typing in a name for a high scores list)

Parameters:
key Code of key to find status of.
Returns:
State of requested key.

void ZE::ZEngine::HideCursor  ) 
 

Hide the system mouse cursor.

void ZE::ZEngine::ShowCursor  ) 
 

Show the system mouse cursor.

int ZE::ZEngine::MouseX  ) 
 

Find X Position of Mouse on screen.

Returns:
X Position of Mouse.

int ZE::ZEngine::MouseY  ) 
 

Find Y Position of Mouse on screen.

Returns:
Y Position of Mouse.

bool ZE::ZEngine::LButtonPressed  ) 
 

Get pressed status of left button of mouse.

Returns:
true if left button is pressed, false otherwise.

bool ZE::ZEngine::RButtonPressed  ) 
 

Get pressed status of right button of mouse.

Returns:
true if right button is pressed, false otherwise.

bool ZE::ZEngine::MButtonPressed  ) 
 

Get pressed status of middle button if available.

Returns:
true if middle button is pressed, false if it is not or if it does not exist.
Since:
0.8.5

bool ZE::ZEngine::MouseInRect SDL_Rect *  rect  ) 
 

Return status of mouse in current rectangle (eg. GUI buttons).

Parameters:
rect Rectangle to check if mouse is in.
Returns:
true if mouse is in rectangle, false otherwise

bool ZE::ZEngine::MouseInRect ZRect  rect  ) 
 

Return status of mouse in current rectangle (eg. GUI buttons).

Parameters:
rect Rectangle to check if mouse is in.
Returns:
true if mouse is in rectangle, false otherwise

void ZE::ZEngine::CheckEvents  ) 
 

Cycle through event queue, processing events, updating all Event Related variables, should be called once per frame.

void ZE::ZEngine::SetEventFilter SDL_EventFilter  filter  ) 
 

This is only needed when you need tight control with ZEngine. The parameter processed as if it were passed to SDL_SetEventFilter, generally only those with a good amount of SDL experience should use this function or ZEngine's internal message state could be corrupted. For more information on SDL_SetEventFilter see http://sdldoc.csn.ul.ie/sdlseteventfilter.php. (FYI: The parameter is now actually processed in check events, not passed to the SDL function, this is done because of problems with singletons and event threading.)

Since:
0.8.2
Parameters:
filter An SDL_EventFilter (A function that takes a const SDL_Event* and returns 0 if the event should be removed from the event queue and 1 otherwise.)

void ZE::ZEngine::LogError ZError  error  )  [private]
 

Writes error to current error file.

Since:
0.8.2
Parameters:
error ZError to write to file.

void ZE::ZEngine::SetErrorLog bool  logAll,
std::string  logFile = ""
 

Change the way errors are logged and the file they are logged to, before calling this errors are logged to stderr. (SDL may define stderr.txt on some platforms.)

Since:
0.8.2
Parameters:
logAll If set to true every error will be written to file instead of stored in the logfile.
logFile Name of file to use as log, passing in stderr or stdio will set the log to the C streams. Passing in nothing will not change the current error log file, which defaults to stderr.

void ZE::ZEngine::ReportError ZErrorCode  code,
std::string  desc = "",
std::string  file = "",
unsigned int  line = 0
 

Adds the error to the the error queue, and sets the current error to this error.

Since:
0.8.2
Parameters:
code ZErrorCode of error.
desc Optional std::string describing error.
file Optional argument specifying the file the error occured in.
line Optional argument specifying the line the error occured on.

ZErrorCode ZE::ZEngine::GetLastError  ) 
 

Get the last error reported.

Since:
0.8.2
Returns:
ZErrorCode of last error reported.

void ZE::ZEngine::WriteLog std::string  str  ) 
 

Write a std::string to the log, allowing special usage of the error log.

Since:
0.8.2
Parameters:
str String to write to log file.

void ZE::ZEngine::FlushErrors  ) 
 

Write the error stack to the error log.

Since:
0.8.2

void ZE::ZEngine::SeedRandGen unsigned long  seed  ) 
 

Reseed Mersenne Twister random number generator. NOTE: Generator is initialized upon creation of object using time.

Parameters:
seed Seed for random sequence.

unsigned int ZE::ZEngine::Rand unsigned int  max  ) 
 

Obtain random int l where 0 <= l < max.

Parameters:
max Limit for random number.
Returns:
Random unsigned int.

unsigned long ZE::ZEngine::Rand unsigned long  max  ) 
 

Obtain random long l where 0 <= l < max.

Parameters:
max Limit for random number.
Returns:
Random unsigned long.

int ZE::ZEngine::Rand int  min,
int  max
 

Obtain random int l where min <= l <= max.

Parameters:
min Lower limit for random number.
max Upper limit for random number.
Returns:
Random int.

long ZE::ZEngine::Rand long  min,
long  max
 

Obtain random long l where min <= l <= max.

Parameters:
min Lower limit for random number.
max Upper limit for random number.
Returns:
Random long.

float ZE::ZEngine::Rand float  min,
float  max
 

Obtain random float l where min <= l <= max.

Parameters:
min Lower limit for random number.
max Upper limit for random number.
Returns:
Random float.

double ZE::ZEngine::Rand double  min,
double  max
 

Obtain random double l where min <= l <= max.

Parameters:
min Lower limit for random number.
max Upper limit for random number.
Returns:
Random double.

double ZE::ZEngine::RandDouble  ) 
 

Obtain random double d where 0 <= d < 1.

Returns:
Random double [0,1).

int ZE::ZEngine::DisplayWidth  ) 
 

Get Width of Window or Fullscreen mode.

Returns:
Width of Display.

int ZE::ZEngine::DisplayHeight  ) 
 

Get Height of Window or Fullscreen mode.

Returns:
Height of Display.

int ZE::ZEngine::DisplayDepth  ) 
 

Get color depth of Window or Fullscreen mode. BPP means bits per pixel.

Returns:
BPP or depth of Display.

bool ZE::ZEngine::IsFullscreen  ) 
 

Get Fullscreen setting of Display.

Returns:
True if Fullscreen, False if Windowed


The documentation for this class was generated from the following files:
Generated on Sun Oct 5 19:34:46 2003 for ZEngine by doxygen1.3