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.

108 lines
3.3 KiB

  1. //========= Copyright Valve Corporation, All rights reserved. ============//
  2. //
  3. // Purpose:
  4. //
  5. //=============================================================================
  6. #ifndef BASEANIMSETPRESETFADERPANEL_H
  7. #define BASEANIMSETPRESETFADERPANEL_H
  8. #ifdef _WIN32
  9. #pragma once
  10. #endif
  11. #include "dme_controls/AnimSetAttributeValue.h"
  12. #include "datamodel/dmehandle.h"
  13. #include "vgui_controls/EditablePanel.h"
  14. //-----------------------------------------------------------------------------
  15. // Forward declarations
  16. //-----------------------------------------------------------------------------
  17. class CPresetSlider;
  18. class CBaseAnimationSetEditor;
  19. class CDmeAnimationSet;
  20. class CSliderListPanel;
  21. class CAddPresetDialog;
  22. class CDmePreset;
  23. class CDmePresetGroupEditorFrame;
  24. namespace vgui
  25. {
  26. class InputDialog;
  27. }
  28. struct FaderPreview_t
  29. {
  30. FaderPreview_t() :
  31. name( 0 ),
  32. amount( 0 ),
  33. isbeingdragged( false ),
  34. holdingctrl( false ),
  35. values( 0 )
  36. {
  37. }
  38. const char *name;
  39. float amount;
  40. bool isbeingdragged;
  41. bool holdingctrl;
  42. AttributeDict_t *values;
  43. CDmeHandle< CDmePreset > preset;
  44. };
  45. //-----------------------------------------------------------------------------
  46. // Base class for the preset fader panel
  47. //-----------------------------------------------------------------------------
  48. class CBaseAnimSetPresetFaderPanel : public vgui::EditablePanel
  49. {
  50. DECLARE_CLASS_SIMPLE( CBaseAnimSetPresetFaderPanel, vgui::EditablePanel );
  51. public:
  52. CBaseAnimSetPresetFaderPanel( vgui::Panel *parent, const char *className, CBaseAnimationSetEditor *editor );
  53. void GetPreviewFader( FaderPreview_t& fader );
  54. void ChangeAnimationSet( CDmeAnimationSet *newAnimSet );
  55. void UpdateControlValues();
  56. void ApplyPreset( float flScale, AttributeDict_t& dict );
  57. // Takes slider current values and creates a new preset
  58. void AddNewPreset( const char *pGroupName, const char *pName );
  59. void SetPresetFromSliders( CDmePreset *pPreset );
  60. virtual void OnOverwritePreset( CDmePreset *pPreset );
  61. void OnDeletePreset( CDmePreset *pPreset );
  62. virtual void ApplySchemeSettings( vgui::IScheme *scheme );
  63. virtual void ProceduralPreset_UpdateCrossfade( CDmePreset *pPreset, bool bFadeIn );
  64. protected:
  65. MESSAGE_FUNC( OnTextChanged, "TextChanged" );
  66. MESSAGE_FUNC( OnAddPreset, "AddPreset" );
  67. MESSAGE_FUNC_PARAMS( OnAddNewPreset, "AddNewPreset", params );
  68. MESSAGE_FUNC( OnPresetsChanged, "PresetsChanged" );
  69. MESSAGE_FUNC( OnSetCrossfadeSpeed, "SetPresetCrossfadeSpeed" );
  70. MESSAGE_FUNC( OnManagePresets, "ManagePresets" );
  71. MESSAGE_FUNC_PARAMS( OnInputCompleted, "InputCompleted", params );
  72. MESSAGE_FUNC_PARAMS( OnPresetNameSelected, "PresetNameSelected", params );
  73. protected:
  74. void OnAddCompleted( const char *pText, KeyValues *pContextKeyValues );
  75. void PopulateList( bool bChanged );
  76. void AddNewPreset( CDmePreset *pPreset );
  77. vgui::DHANDLE< CBaseAnimationSetEditor > m_hEditor;
  78. vgui::EditablePanel *m_pWorkspace;
  79. vgui::TextEntry *m_pFilter;
  80. CSliderListPanel *m_pSliders;
  81. CDmeHandle< CDmeAnimationSet > m_AnimSet;
  82. float m_flLastFrameTime;
  83. CUtlString m_Filter;
  84. vgui::DHANDLE< vgui::InputDialog > m_hInputDialog;
  85. vgui::DHANDLE< CAddPresetDialog > m_hAddPresetDialog;
  86. vgui::DHANDLE< CDmePresetGroupEditorFrame > m_hPresetEditor;
  87. CUtlVector< CDmeHandle< CDmePreset > > m_CurrentPresetList;
  88. };
  89. #endif // BASEANIMSETPRESETFADERPANEL_H