Danbias/Code/Game/GameClient/GameClientState/GameStateUI.h

58 lines
1.4 KiB
C++

#ifndef DANBIAS_CLIENT_GAMECLIENTSTATE_H
#define DANBIAS_CLIENT_GAMECLIENTSTATE_H
#include "Utilities.h"
#include "NetworkClient.h"
namespace DanBias { namespace Client
{
class GameStateUI
{
public:
enum UIState
{
UIState_same,
UIState_gaming,
UIState_main_menu,
UIState_shut_down
};
typedef ::Oyster::Network::NetEvent<::Oyster::Network::NetworkClient*, ::Oyster::Network::NetworkClient::ClientEventArgs> NetEvent;
static const NetEvent event_processed;
GameStateUI();
virtual ~GameStateUI();
virtual UIState Update( float deltaTime ) = 0;
virtual bool HaveGUIRender() const = 0;
virtual bool HaveTextRender() const = 0;
virtual void RenderGUI() const = 0;
virtual void RenderText() const = 0;
virtual bool Release() = 0;
/******************************************************************
* @param message of the event
* @return message or a reference to GameStateUI::event_processed.
******************************************************************/
virtual const NetEvent & DataRecieved( const NetEvent &message );
protected:
UIState nextState;
};
} }
namespace Utility { namespace DynamicMemory
{ // template specializationto allowuse of dynamicmemory tools
template<>
inline void SafeDeleteInstance( ::DanBias::Client::GameStateUI *dynamicInstance )
{
if( dynamicInstance )
{
dynamicInstance->Release();
delete dynamicInstance;
}
}
} }
#endif