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.

123 lines
3.2 KiB

  1. //========= Copyright Valve Corporation, All rights reserved. ============//
  2. //
  3. // Purpose:
  4. //
  5. //=============================================================================//
  6. #include "cbase.h"
  7. #include <KeyValues.h>
  8. #include <vgui/IScheme.h>
  9. #include <vgui/ISurface.h>
  10. #include <vgui/ISystem.h>
  11. #include <vgui_controls/AnimationController.h>
  12. #include <vgui_controls/EditablePanel.h>
  13. #include <vgui_controls/ImagePanel.h>
  14. #include <vgui/ISurface.h>
  15. #include "c_dod_team.h"
  16. #include "c_dod_playerresource.h"
  17. #include "c_dod_player.h"
  18. #include "weapon_dodfireselect.h"
  19. #include "dodcornercutpanel.h"
  20. #include "dod_hud_playerstatus_fireselect.h"
  21. //-----------------------------------------------------------------------------
  22. // Purpose:
  23. //-----------------------------------------------------------------------------
  24. CDoDHudFireSelect::CDoDHudFireSelect( vgui::Panel *parent, const char *name ) : vgui::EditablePanel( parent, name )
  25. {
  26. m_pBackground = new CDoDCutEditablePanel( this, "FireSelectBackground" );
  27. m_pIconMP44 = new CIconPanel( this, "Icon_MP44" );
  28. m_pIconBAR = new CIconPanel( this, "Icon_BAR" );
  29. m_pBulletLeft = new CIconPanel( this, "Bullet_Left" );
  30. m_pBulletCenter = new CIconPanel( this, "Bullet_Center" );
  31. m_pBulletRight = new CIconPanel( this, "Bullet_Right" );
  32. m_pBulletRight->SetVisible( true );
  33. }
  34. void CDoDHudFireSelect::ApplySchemeSettings( vgui::IScheme *pScheme )
  35. {
  36. LoadControlSettings( "resource/UI/HudPlayerStatusFireSelect.res" );
  37. BaseClass::ApplySchemeSettings( pScheme );
  38. }
  39. //-----------------------------------------------------------------------------
  40. // Purpose:
  41. //-----------------------------------------------------------------------------
  42. void CDoDHudFireSelect::SetVisible( bool state )
  43. {
  44. if ( m_pBackground && m_pBackground->IsVisible() != state )
  45. {
  46. m_pBackground->SetVisible( state );
  47. }
  48. m_pBulletLeft->SetVisible( state );
  49. m_pBulletCenter->SetVisible( state );
  50. m_pBulletRight->SetVisible( state );
  51. }
  52. //-----------------------------------------------------------------------------
  53. // Purpose:
  54. //-----------------------------------------------------------------------------
  55. void CDoDHudFireSelect::OnThink()
  56. {
  57. BaseClass::OnThink();
  58. C_DODPlayer *pPlayer = C_DODPlayer::GetLocalDODPlayer();
  59. if ( pPlayer )
  60. {
  61. CWeaponDODBase *pWeapon = pPlayer->GetActiveDODWeapon();
  62. if ( pWeapon )
  63. {
  64. bool bSemiAutoWpn = false;
  65. if ( pWeapon->IsA( WEAPON_MP44 ) )
  66. {
  67. m_pIconBAR->SetVisible( false );
  68. m_pIconMP44->SetVisible( true );
  69. bSemiAutoWpn = true;
  70. }
  71. else if ( pWeapon->IsA( WEAPON_BAR ) )
  72. {
  73. m_pIconBAR->SetVisible( true );
  74. m_pIconMP44->SetVisible( false );
  75. bSemiAutoWpn = true;
  76. }
  77. else
  78. {
  79. m_pIconBAR->SetVisible( false );
  80. m_pIconMP44->SetVisible( false );
  81. }
  82. if ( bSemiAutoWpn )
  83. {
  84. SetVisible( true );
  85. CDODFireSelectWeapon *pFireSelect = dynamic_cast<CDODFireSelectWeapon *>(pWeapon);
  86. if ( pFireSelect && pFireSelect->IsSemiAuto() )
  87. {
  88. m_pBulletLeft->SetVisible( false );
  89. m_pBulletCenter->SetVisible( false );
  90. }
  91. else
  92. {
  93. m_pBulletLeft->SetVisible( true );
  94. m_pBulletCenter->SetVisible( true );
  95. }
  96. }
  97. else
  98. {
  99. SetVisible( false );
  100. }
  101. }
  102. }
  103. }