Counter Strike : Global Offensive Source Code
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

116 lines
3.3 KiB

//========= Copyright © 1996-2005, Valve Corporation, All rights reserved. ============//
//
// Purpose:
//
// $NoKeywords: $
//=============================================================================//
#ifndef GAMELAYER_H
#define GAMELAYER_H
#ifdef _WIN32
#pragma once
#endif
#include "igameuisystemmgr.h"
#include "gamegraphic.h"
#include "dmxloader/dmxelement.h"
#include "materialsystem/materialsystemutil.h"
#include "bitmap/psheet.h"
#include "rendersystem/irenderdevice.h"
#include "mathlib/vertexcolor.h"
#include "resourcesystem/stronghandle.h"
#include "tier1/utldict.h"
#include "tier1/UtlStringMap.h"
class IRenderContext;
struct GameGraphicMap_t;
class CGameGraphic;
class GameUIDefinition;
//-----------------------------------------------------------------------------
// GameUI vertex format
//-----------------------------------------------------------------------------
struct GameUIVertex_t
{
Vector m_vecPosition;
VertexColor_t m_color;
Vector2D m_vecTexCoord;
};
//-----------------------------------------------------------------------------
// A class that contains all of the rendering objects in a gameui layer
//-----------------------------------------------------------------------------
// There are currently 3 types of these, for static/dynamic/and font.
class CGameLayer
{
DECLARE_DMXELEMENT_UNPACK()
public:
CGameLayer( SublayerTypes_t layerType = SUBLAYER_STATIC );
~CGameLayer();
void Shutdown();
bool Unserialize( CDmxElement *pLayer, CUtlDict< CGameGraphic *, int > &unserializedGraphicMapping );
const char *GetName() const { return m_pName; }
const SublayerTypes_t GetLayerType() { return m_LayerType; }
void SetLayerType( SublayerTypes_t layerType ) { m_LayerType = layerType; }
bool InitSheetTexture();
bool InitSheetTexture( const char *pBaseTextureName );
void GetSheetTextureSize( int &nWidth, int &nHeight );
int AddGraphic( CGameGraphic *pGraphic );
bool RemoveGraphic( CGameGraphic *pGraphic );
void ClearGraphics();
bool HasGraphic( CGameGraphic *pGraphic );
CGameGraphic *FindGraphicByName( const char *pName );
IMaterial *GetMaterial();
HRenderTextureStrong GetTexture() { return m_hTexture; }
// Sheet symbols (used to avoid string->symbol conversions)
void InvalidateSheetSymbol();
void CacheSheetSymbol( CUtlSymbol sheetSymbol );
bool IsSheetSymbolCached() const { return m_bSheetSymbolCached; }
CUtlSymbol GetSheetSymbol() const;
void StartPlaying();
void StopPlaying();
void AdvanceState();
void InitAnims();
void UpdateGeometry();
void UpdateRenderTransforms( const StageRenderInfo_t &stageRenderInfo );
void UpdateRenderData( CGameUIDefinition &gameUIDef, color32 parentColor, CUtlVector< LayerRenderLists_t > &renderLists );
CGameGraphic *GetGraphic( int x, int y );
CGameGraphic *GetMouseFocus( int x, int y );
CGameGraphic *GetNextFocus( bool &bGetNext, CGameGraphic *pCurrentGraphic );
private:
// Graphics in this layer
CUtlVector< CGameGraphic * > m_LayerGraphics;
CSheet *LoadSheet( IMaterial *pMaterial );
CSheet *LoadSheet( char const *pszFname, ITexture *pTexture );
CUtlString m_pName;
SublayerTypes_t m_LayerType;
CUtlString m_pTextureName;
HRenderTextureStrong m_hTexture;
CMaterialReference m_Material;
CUtlReference< CSheet > m_Sheet;
CUtlSymbol m_SheetSymbol;
bool m_bSheetSymbolCached;
};
#endif // GAMELAYER_H