#ifndef INCLUDED_funfact_cs #define INCLUDED_funfact_cs #pragma once #include "cs_shareddefs.h" struct FunFact { FunFact() : id(-1), szLocalizationToken(NULL), iPlayer(0), iData1(0), iData2(0), iData3(0), fMagnitude(0.0f) {} int id; const char* szLocalizationToken; int iPlayer; int iData1; int iData2; int iData3; float fMagnitude; }; typedef CUtlVector FunFactVector; class FunFactEvaluator { DECLARE_CLASS_NOBASE( FunFactEvaluator ); public: FunFactEvaluator( int id, const char* szLocalizationToken, float fCoolness ) : m_id(id), m_pLocalizationToken(szLocalizationToken), m_fCoolness(fCoolness) {} virtual ~FunFactEvaluator() {} int GetId() const { return m_id; } const char* GetLocalizationToken() const { return m_pLocalizationToken; } float GetCoolness() const { return m_fCoolness; } virtual bool Evaluate( e_RoundEndReason iRoundResult, FunFactVector& results ) const = 0; private: int m_id; const char* m_pLocalizationToken; float m_fCoolness; }; typedef FunFactEvaluator* (*funfactCreateFunc) (void); class CFunFactHelper { public: CFunFactHelper ( funfactCreateFunc createFunc ) { m_pfnCreate = createFunc; m_pNext = s_pFirst; s_pFirst = this; } funfactCreateFunc m_pfnCreate; CFunFactHelper *m_pNext; static CFunFactHelper *s_pFirst; }; #endif // INCLUDED_funfact_cs