text: //========= Copyright Valve Corporation, All rights reserved. ============//
  //
  // The copyright to the contents herein is the property of Valve, L.L.C.
  // The contents may be used and/or copied only with the written permission of
  // Valve, L.L.C., or in accordance with the terms and conditions stipulated in
  // the agreement/contract under which the contents have been supplied.
  //
  // $Header: $
  // $NoKeywords: $
  //
  // The application objects for apps that use tier3
  //=============================================================================
  
  #ifndef TIER3APP_H
  #define TIER3APP_H
  
  #ifdef _WIN32
  #pragma once
  #endif
  
  
  #include "appframework/tier2app.h"
  #include "tier3/tier3.h"
  #include "vgui_controls/Controls.h"
  
  
  //-----------------------------------------------------------------------------
  // The application object for apps that use tier3
  //-----------------------------------------------------------------------------
  class CTier3SteamApp : public CTier2SteamApp
  {
  	typedef CTier2SteamApp BaseClass;
  
  public:
  	// Methods of IApplication
  	virtual bool PreInit()
  	{
  		if ( !BaseClass::PreInit() )
  			return false;
  
  		CreateInterfaceFn factory = GetFactory();
  		ConnectTier3Libraries( &factory, 1 );
  		return true;			
  	}
  
  	virtual void PostShutdown()
  	{
  		DisconnectTier3Libraries();
  		BaseClass::PostShutdown();
  	}
  };
  
  
  //-----------------------------------------------------------------------------
  // The application object for apps that use tier3
  //-----------------------------------------------------------------------------
  class CTier3DmSteamApp : public CTier2DmSteamApp
  {
  	typedef CTier2DmSteamApp BaseClass;
  
  public:
  	// Methods of IApplication
  	virtual bool PreInit()
  	{
  		if ( !BaseClass::PreInit() )
  			return false;
  
  		CreateInterfaceFn factory = GetFactory();
  		ConnectTier3Libraries( &factory, 1 );
  		return true;			
  	}
  
  	virtual void PostShutdown()
  	{
  		DisconnectTier3Libraries();
  		BaseClass::PostShutdown();
  	}
  };
  
  
  //-----------------------------------------------------------------------------
  // The application object for apps that use vgui
  //-----------------------------------------------------------------------------
  class CVguiSteamApp : public CTier3SteamApp
  {
  	typedef CTier3SteamApp BaseClass;
  
  public:
  	// Methods of IApplication
  	virtual bool PreInit()
  	{
  		if ( !BaseClass::PreInit() )
  			return false;
  
  		CreateInterfaceFn factory = GetFactory();
  		return vgui::VGui_InitInterfacesList( "CVguiSteamApp", &factory, 1 );
  	}
  };
  
  
  //-----------------------------------------------------------------------------
  // The application object for apps that use vgui
  //-----------------------------------------------------------------------------
  class CVguiDmSteamApp : public CTier3DmSteamApp
  {
  	typedef CTier3DmSteamApp BaseClass;
  
  public:
  	// Methods of IApplication
  	virtual bool PreInit()
  	{
  		if ( !BaseClass::PreInit() )
  			return false;
  
  		CreateInterfaceFn factory = GetFactory();
  		return vgui::VGui_InitInterfacesList( "CVguiSteamApp", &factory, 1 );
  	}
  };
  
  
  #endif // TIER3APP_H
  