123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163 |
- /*
- ===========================================================================
- Doom 3 GPL Source Code
- Copyright (C) 1999-2011 id Software LLC, a ZeniMax Media company.
- This file is part of the Doom 3 GPL Source Code (?Doom 3 Source Code?).
- Doom 3 Source Code is free software: you can redistribute it and/or modify
- it under the terms of the GNU General Public License as published by
- the Free Software Foundation, either version 3 of the License, or
- (at your option) any later version.
- Doom 3 Source Code is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- GNU General Public License for more details.
- You should have received a copy of the GNU General Public License
- along with Doom 3 Source Code. If not, see <http://www.gnu.org/licenses/>.
- In addition, the Doom 3 Source Code is also subject to certain additional terms. You should have received a copy of these additional terms immediately following the terms and conditions of the GNU General Public License which accompanied the Doom 3 Source Code. If not, please request a copy in writing from id Software at the address below.
- If you have questions concerning this license or the applicable additional terms, you may contact in writing id Software LLC, c/o ZeniMax Media Inc., Suite 120, Rockville, Maryland 20850 USA.
- ===========================================================================
- */
- #ifndef __USERINTERFACE_H__
- #define __USERINTERFACE_H__
- /*
- ===============================================================================
- Draws an interactive 2D surface.
- Used for all user interaction with the game.
- ===============================================================================
- */
- class idFile;
- class idDemoFile;
- class idUserInterface {
- public:
- virtual ~idUserInterface() {};
- // Returns the name of the gui.
- virtual const char * Name() const = 0;
- // Returns a comment on the gui.
- virtual const char * Comment() const = 0;
- // Returns true if the gui is interactive.
- virtual bool IsInteractive() const = 0;
- virtual bool IsUniqued() const = 0;
- virtual void SetUniqued( bool b ) = 0;
- // returns false if it failed to load
- virtual bool InitFromFile( const char *qpath, bool rebuild = true, bool cache = true ) = 0;
- // handles an event, can return an action string, the caller interprets
- // any return and acts accordingly
- virtual const char * HandleEvent( const sysEvent_t *event, int time, bool *updateVisuals = NULL ) = 0;
- // handles a named event
- virtual void HandleNamedEvent( const char *eventName ) = 0;
- // repaints the ui
- virtual void Redraw( int time ) = 0;
- // repaints the cursor
- virtual void DrawCursor() = 0;
- // Provides read access to the idDict that holds this gui's state.
- virtual const idDict & State() const = 0;
- // Removes a gui state variable
- virtual void DeleteStateVar( const char *varName ) = 0;
- // Sets a gui state variable.
- virtual void SetStateString( const char *varName, const char *value ) = 0;
- virtual void SetStateBool( const char *varName, const bool value ) = 0;
- virtual void SetStateInt( const char *varName, const int value ) = 0;
- virtual void SetStateFloat( const char *varName, const float value ) = 0;
- // Gets a gui state variable
- virtual const char* GetStateString( const char *varName, const char* defaultString = "" ) const = 0;
- virtual bool GetStateBool( const char *varName, const char* defaultString = "0" ) const = 0;
- virtual int GetStateInt( const char *varName, const char* defaultString = "0" ) const = 0;
- virtual float GetStateFloat( const char *varName, const char* defaultString = "0" ) const = 0;
- // The state has changed and the gui needs to update from the state idDict.
- virtual void StateChanged( int time, bool redraw = false ) = 0;
- // Activated the gui.
- virtual const char * Activate( bool activate, int time ) = 0;
- // Triggers the gui and runs the onTrigger scripts.
- virtual void Trigger( int time ) = 0;
- virtual void ReadFromDemoFile( class idDemoFile *f ) = 0;
- virtual void WriteToDemoFile( class idDemoFile *f ) = 0;
- virtual bool WriteToSaveGame( idFile *savefile ) const = 0;
- virtual bool ReadFromSaveGame( idFile *savefile ) = 0;
- virtual void SetKeyBindingNames( void ) = 0;
- virtual void SetCursor( float x, float y ) = 0;
- virtual float CursorX() = 0;
- virtual float CursorY() = 0;
- };
- class idUserInterfaceManager {
- public:
- virtual ~idUserInterfaceManager( void ) {};
- virtual void Init() = 0;
- virtual void Shutdown() = 0;
- virtual void Touch( const char *name ) = 0;
- virtual void WritePrecacheCommands( idFile *f ) = 0;
- // Sets the size for 640x480 adjustment.
- virtual void SetSize( float width, float height ) = 0;
- virtual void BeginLevelLoad() = 0;
- virtual void EndLevelLoad() = 0;
- // Reloads changed guis, or all guis.
- virtual void Reload( bool all ) = 0;
- // lists all guis
- virtual void ListGuis() const = 0;
- // Returns true if gui exists.
- virtual bool CheckGui( const char *qpath ) const = 0;
- // Allocates a new gui.
- virtual idUserInterface * Alloc( void ) const = 0;
- // De-allocates a gui.. ONLY USE FOR PRECACHING
- virtual void DeAlloc( idUserInterface *gui ) = 0;
- // Returns NULL if gui by that name does not exist.
- virtual idUserInterface * FindGui( const char *qpath, bool autoLoad = false, bool needUnique = false, bool forceUnique = false ) = 0;
- // Returns NULL if gui by that name does not exist.
- virtual idUserInterface * FindDemoGui( const char *qpath ) = 0;
- // Allocates a new GUI list handler
- virtual idListGUI * AllocListGUI( void ) const = 0;
- // De-allocates a list gui
- virtual void FreeListGUI( idListGUI *listgui ) = 0;
- };
- extern idUserInterfaceManager * uiManager;
- #endif /* !__USERINTERFACE_H__ */
|