The-Simpsons-Hit-and-Run/game/code/presentation/gui/guiwindow.h

189 lines
5.8 KiB
C++

//===========================================================================
// Copyright (C) 2000 Radical Entertainment Ltd. All rights reserved.
//
// Component: CGuiWindow
//
// Description: Interface for the CGuiWindow class.
//
// Authors: Darwin Chau
// Tony Chu
//
// Revisions Date Author Revision
// 2000/09/20 DChau Created
// 2002/05/29 TChu Modified for SRR2
//
//===========================================================================
#ifndef GUIWINDOW_H
#define GUIWINDOW_H
//===========================================================================
// Nested Includes
//===========================================================================
#include <presentation/gui/guientity.h>
#include <presentation/gui/guimenu.h>
#ifdef RAD_WIN32
#include <input/FEMouse.h>
#endif
//===========================================================================
// Forward References
//===========================================================================
class CGuiManager;
//===========================================================================
// Interface Definitions
//===========================================================================
class CGuiWindow : public CGuiEntity
{
public:
enum eGuiWindowID
{
GUI_WINDOW_ID_UNDEFINED = -1,
// generic screens
//
GUI_SCREEN_ID_GENERIC_MESSAGE,
GUI_SCREEN_ID_GENERIC_PROMPT,
GUI_SCREEN_ID_ERROR_PROMPT,
// bootup and backend screens
//
GUI_SCREEN_ID_BOOTUP_LOAD,
GUI_SCREEN_ID_LICENSE,
GUI_SCREEN_ID_LANGUAGE,
GUI_SCREEN_ID_LOADING,
GUI_SCREEN_ID_LOADING_FE,
GUI_SCREEN_ID_DEMO,
GUI_SCREEN_ID_MEMORY_CARD,
GUI_SCREEN_ID_MEMORY_CARD_CHECK,
GUI_SCREEN_ID_AUTO_LOAD,
// front-end screens
//
GUI_SCREEN_ID_SPLASH,
GUI_SCREEN_ID_INTRO_TRANSITION,
GUI_SCREEN_ID_MAIN_MENU,
GUI_SCREEN_ID_LOAD_GAME,
GUI_SCREEN_ID_SCRAP_BOOK,
GUI_SCREEN_ID_SCRAP_BOOK_CONTENTS,
GUI_SCREEN_ID_SCRAP_BOOK_STATS,
GUI_SCREEN_ID_CARD_GALLERY,
GUI_SCREEN_ID_MISSION_GALLERY,
GUI_SCREEN_ID_SKIN_GALLERY,
GUI_SCREEN_ID_VEHICLE_GALLERY,
// GUI_SCREEN_ID_MULTIPLAYER_SETUP,
// GUI_SCREEN_ID_MULTIPLAYER_CHOOSE_CHARACTER,
GUI_SCREEN_ID_OPTIONS,
GUI_SCREEN_ID_CONTROLLER,
GUI_SCREEN_ID_SOUND,
GUI_SCREEN_ID_VIEW_MOVIES,
GUI_SCREEN_ID_VIEW_CREDITS,
#ifdef RAD_WIN32
GUI_SCREEN_ID_DISPLAY,
#endif
GUI_SCREEN_ID_PLAY_MOVIE,
GUI_SCREEN_ID_PLAY_MOVIE_DEMO,
GUI_SCREEN_ID_PLAY_MOVIE_INTRO,
GUI_SCREEN_ID_PLAY_MOVIE_NEW_GAME,
// in-game screens
//
GUI_SCREEN_ID_HUD,
GUI_SCREEN_ID_MULTI_HUD,
GUI_SCREEN_ID_PAUSE_SUNDAY,
GUI_SCREEN_ID_PAUSE_MISSION,
GUI_SCREEN_ID_MISSION_SELECT,
GUI_SCREEN_ID_SETTINGS,
GUI_SCREEN_ID_LEVEL_STATS,
GUI_SCREEN_ID_VIEW_CARDS,
GUI_SCREEN_ID_SAVE_GAME,
GUI_SCREEN_ID_MISSION_LOAD,
GUI_SCREEN_ID_MISSION_OVER,
GUI_SCREEN_ID_MISSION_SUCCESS,
GUI_SCREEN_ID_LETTER_BOX,
GUI_SCREEN_ID_PHONE_BOOTH,
GUI_SCREEN_ID_PURCHASE_REWARDS,
GUI_SCREEN_ID_IRIS_WIPE,
GUI_SCREEN_ID_LEVEL_END,
GUI_SCREEN_ID_TUTORIAL,
// mini-game screens
//
GUI_SCREEN_ID_MINI_MENU,
GUI_SCREEN_ID_MINI_HUD,
GUI_SCREEN_ID_MINI_PAUSE,
GUI_SCREEN_ID_MINI_SUMMARY,
NUM_GUI_WINDOW_IDS
};
CGuiWindow( eGuiWindowID id, CGuiEntity* pParent );
virtual ~CGuiWindow();
virtual void HandleMessage( eGuiMessage message,
unsigned int param1 = 0,
unsigned int param2 = 0 );
virtual CGuiMenu* HasMenu() { return NULL; }
eGuiWindowID GetWindowID( void ) const { return( m_ID ); };
void ForceClearTransitions();
bool IsRunning(void) {return m_state == GUI_WINDOW_STATE_RUNNING;}
#ifdef RAD_WIN32
virtual eFEHotspotType CheckCursorAgainstHotspots( float x, float y )
{
return HOTSPOT_NONE;
}
#endif
protected:
//---------------------------------------------------------------------
// Protected Functions
//---------------------------------------------------------------------
virtual void InitIntro() = 0;
virtual void InitRunning() = 0;
virtual void InitOutro() = 0;
virtual void CleanUp();
enum eGuiWindowState
{
GUI_WINDOW_STATE_UNITIALIZED,
GUI_WINDOW_STATE_INTRO,
GUI_WINDOW_STATE_RUNNING,
GUI_WINDOW_STATE_PAUSED,
GUI_WINDOW_STATE_IDLE,
GUI_WINDOW_STATE_OUTRO,
GUI_WINDOW_STATE_DISABLED,
GUI_WINDOW_STATE_COUNT
};
eGuiWindowState m_state;
eGuiWindowState m_prevState;
eGuiWindowID m_ID;
int m_numTransitionsPending;
bool m_firstTimeEntered;
private:
//---------------------------------------------------------------------
// Private Functions
//---------------------------------------------------------------------
// No copying or assignement. Declare but don't define.
//
CGuiWindow( const CGuiWindow& );
CGuiWindow& operator= ( const CGuiWindow& );
};
#endif // GUIWINDOW_H