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.

76 lines
2.6 KiB

  1. //========= Copyright Valve Corporation, All rights reserved. ============//
  2. //
  3. // Purpose: motd: Handles a list of message of the day entries
  4. //
  5. //=============================================================================
  6. #ifndef MOTD_H
  7. #define MOTD_H
  8. #ifdef _WIN32
  9. #pragma once
  10. #endif
  11. #include "KeyValues.h"
  12. #include "language.h"
  13. //-----------------------------------------------------------------------------
  14. // CMOTDEntryDefinition
  15. //-----------------------------------------------------------------------------
  16. class CMOTDEntryDefinition
  17. {
  18. public:
  19. CMOTDEntryDefinition( void );
  20. ~CMOTDEntryDefinition( void ) { }
  21. bool BInitFromKV( KeyValues *pKVMOTD, CUtlVector<CUtlString> *pVecErrors = NULL );
  22. const char *GetName( void ) { return m_pKVMOTD ? m_pKVMOTD->GetName() : "Unknown Entry"; }
  23. const char *GetTitle( ELanguage eLang );
  24. const char *GetText( ELanguage eLang );
  25. const char *GetURL( void ) { return m_pKVMOTD ? m_pKVMOTD->GetString("url","") : NULL; }
  26. const char *GetImage( void ) { return m_pKVMOTD ? m_pKVMOTD->GetString("image","") : NULL; }
  27. const char *GetPostTimeStr( void ) { return m_pKVMOTD ? m_pKVMOTD->GetString("time") : NULL; }
  28. const int GetHeaderType( void ) { return m_pKVMOTD ? m_pKVMOTD->GetInt("header_type") : 0; }
  29. const char *GetHeaderTitle( ELanguage eLang );
  30. const char *GetHeaderIcon( void ) { return m_pKVMOTD ? m_pKVMOTD->GetString("header_icon","") : NULL; }
  31. // Post time is the time displayed on the client screen for this post
  32. const RTime32 GetPostTime( void ) const { return m_PostTime; }
  33. // Change time is the time at which we last changed this post. If we change wording on
  34. // a post, we need to know that the change should be sent to clients when they log on afterwards.
  35. const RTime32 GetChangedTime( void ) const { return m_ChangedTime; }
  36. const int GetNameInt ( void ) const { return m_pKVMOTD ? V_atoi( m_pKVMOTD->GetName() ) : -1; }
  37. private:
  38. KeyValues *m_pKVMOTD;
  39. RTime32 m_PostTime;
  40. RTime32 m_ChangedTime;
  41. };
  42. //-----------------------------------------------------------------------------
  43. // CMOTDMgr
  44. //-----------------------------------------------------------------------------
  45. class CMOTDManager
  46. {
  47. public:
  48. // MOTD handling
  49. bool BInitMOTDEntries( KeyValues *pKVMOTDEntries, CUtlVector<CUtlString> *pVecErrors );
  50. int GetNumMOTDAfter( RTime32 iTime );
  51. CMOTDEntryDefinition *GetNextMOTDAfter( RTime32 iTime );
  52. int GetNumMOTDs( void ) { return m_vecMOTDEntries.Count(); }
  53. CMOTDEntryDefinition *GetMOTDByIndex( int iIndex );
  54. void PurgeUnusedMOTDEntries( KeyValues *pKVMOTDEntries );
  55. private:
  56. // Contains the list of MOTD entries.
  57. CUtlVector< CMOTDEntryDefinition > m_vecMOTDEntries;
  58. };
  59. #endif // MOTD_H