Team Fortress 2 Source Code as on 22/4/2020
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.

90 lines
2.3 KiB

  1. //========= Copyright Valve Corporation, All rights reserved. ============//
  2. //
  3. // Purpose:
  4. //
  5. // $NoKeywords: $
  6. //=============================================================================//
  7. #include "cbase.h"
  8. #include "hud.h"
  9. #include "hud_vehicle.h"
  10. #include "iclientmode.h"
  11. #include "view.h"
  12. #include <vgui_controls/Controls.h>
  13. #include <vgui/ISurface.h>
  14. #include "iclientvehicle.h"
  15. #include "c_prop_vehicle.h"
  16. // memdbgon must be the last include file in a .cpp file!!!
  17. #include "tier0/memdbgon.h"
  18. using namespace vgui;
  19. DECLARE_HUDELEMENT( CHudVehicle );
  20. CHudVehicle::CHudVehicle( const char *pElementName ) :
  21. CHudElement( pElementName ), BaseClass( NULL, "HudVehicle" )
  22. {
  23. vgui::Panel *pParent = g_pClientMode->GetViewport();
  24. SetParent( pParent );
  25. SetHiddenBits( HIDEHUD_PLAYERDEAD | HIDEHUD_VEHICLE_CROSSHAIR );
  26. }
  27. void CHudVehicle::ApplySchemeSettings( IScheme *scheme )
  28. {
  29. BaseClass::ApplySchemeSettings( scheme );
  30. SetPaintBackgroundEnabled( false );
  31. SetForceStereoRenderToFrameBuffer( true );
  32. }
  33. //-----------------------------------------------------------------------------
  34. // Purpose:
  35. // Output : IClientVehicle
  36. //-----------------------------------------------------------------------------
  37. IClientVehicle *CHudVehicle::GetLocalPlayerVehicle()
  38. {
  39. C_BasePlayer *pPlayer = C_BasePlayer::GetLocalPlayer();
  40. if ( !pPlayer || !pPlayer->IsInAVehicle() )
  41. {
  42. return NULL;
  43. }
  44. return pPlayer->GetVehicle();
  45. }
  46. //-----------------------------------------------------------------------------
  47. // Purpose:
  48. // Output : Returns true on success, false on failure.
  49. //-----------------------------------------------------------------------------
  50. bool CHudVehicle::ShouldDraw()
  51. {
  52. // Don't draw if we're getting into/out of the vehicle
  53. IClientVehicle *pVehicle = GetLocalPlayerVehicle();
  54. if ( pVehicle )
  55. {
  56. C_PropVehicleDriveable *pDrivable = dynamic_cast<C_PropVehicleDriveable*>(pVehicle);
  57. if ( ( pDrivable ) && ( pDrivable->IsRunningEnterExitAnim() ) )
  58. return false;
  59. return CHudElement::ShouldDraw();
  60. }
  61. return false;
  62. }
  63. //-----------------------------------------------------------------------------
  64. // Purpose:
  65. //-----------------------------------------------------------------------------
  66. void CHudVehicle::Paint( void )
  67. {
  68. IClientVehicle *v = GetLocalPlayerVehicle();
  69. if ( !v )
  70. return;
  71. // Vehicle-based hud...
  72. v->DrawHudElements();
  73. }