//========= Copyright Valve Corporation, All rights reserved. ============// // // Purpose: // //=============================================================================// #ifndef INFO_VEHICLE_BAY_H #define INFO_VEHICLE_BAY_H #ifdef _WIN32 #pragma once #endif #include "ihasbuildpoints.h" #include "vguiscreen.h" //----------------------------------------------------------------------------- // Purpose: Entity that provides a place to build a vehicle //----------------------------------------------------------------------------- class CInfoVehicleBay : public CBaseEntity, public IHasBuildPoints { DECLARE_CLASS( CInfoVehicleBay, CBaseEntity ); public: DECLARE_DATADESC(); void Spawn( void ); // IHasBuildPoints public: virtual int GetNumBuildPoints( void ) const; virtual bool CanBuildObjectOnBuildPoint( int iPoint, int iObjectType ); virtual bool GetBuildPoint( int iPoint, Vector &vecOrigin, QAngle &vecAngles ); virtual int GetBuildPointAttachmentIndex( int iPoint ) const; virtual void SetObjectOnBuildPoint( int iPoint, CBaseObject *pObject ); virtual int GetNumObjectsOnMe( void ); virtual CBaseEntity *GetFirstObjectOnMe( void ); virtual CBaseObject *GetObjectOfTypeOnMe( int iObjectType ); virtual int FindObjectOnBuildPoint( CBaseObject *pObject ); virtual void GetExitPoint( CBaseEntity *pPlayer, int iPoint, Vector *pAbsOrigin, QAngle *pAbsAngles ); virtual void RemoveAllObjects( void ); virtual float GetMaxSnapDistance( int iPoint ) { return 128; } virtual bool ShouldCheckForMovement( void ) { return false; } }; //----------------------------------------------------------------------------- // Purpose: Vgui screen for vehicle buying //----------------------------------------------------------------------------- class CVGuiScreenVehicleBay : public CVGuiScreen { DECLARE_CLASS( CVGuiScreenVehicleBay, CVGuiScreen ); public: DECLARE_DATADESC(); virtual void Activate( void ); void BuildVehicle( CBaseTFPlayer *pPlayer, int iObjectType ); void FinishedBuildVehicle( CBaseObject *pObject ); void SetBuildPoint( Vector &vecOrigin, QAngle &vecAngles ); void BayThink( void ); private: bool m_bBayIsClear; Vector m_vecBuildPointOrigin; QAngle m_vecBuildPointAngles; // Outputs COutputEvent m_OnStartedBuild; COutputEvent m_OnFinishedBuild; COutputEvent m_OnReadyToBuildAgain; }; #endif // INFO_VEHICLE_BAY_H