diff options
| author | Joe Ludwig <[email protected]> | 2013-06-26 15:22:04 -0700 |
|---|---|---|
| committer | Joe Ludwig <[email protected]> | 2013-06-26 15:22:04 -0700 |
| commit | 39ed87570bdb2f86969d4be821c94b722dc71179 (patch) | |
| tree | abc53757f75f40c80278e87650ea92808274aa59 /mp/src/game/shared/point_bonusmaps_accessor.cpp | |
| download | source-sdk-2013-39ed87570bdb2f86969d4be821c94b722dc71179.tar.xz source-sdk-2013-39ed87570bdb2f86969d4be821c94b722dc71179.zip | |
First version of the SOurce SDK 2013
Diffstat (limited to 'mp/src/game/shared/point_bonusmaps_accessor.cpp')
| -rw-r--r-- | mp/src/game/shared/point_bonusmaps_accessor.cpp | 147 |
1 files changed, 147 insertions, 0 deletions
diff --git a/mp/src/game/shared/point_bonusmaps_accessor.cpp b/mp/src/game/shared/point_bonusmaps_accessor.cpp new file mode 100644 index 00000000..c857fbe9 --- /dev/null +++ b/mp/src/game/shared/point_bonusmaps_accessor.cpp @@ -0,0 +1,147 @@ +//========= Copyright Valve Corporation, All rights reserved. ============//
+//
+// Purpose:
+//
+// $NoKeywords: $
+//
+//=============================================================================//
+
+#include "cbase.h"
+
+#include "GameUI/IGameUI.h"
+#include "fmtstr.h"
+#include "igameevents.h"
+
+// memdbgon must be the last include file in a .cpp file!!!
+#include "tier0/memdbgon.h"
+
+// See interface.h/.cpp for specifics: basically this ensures that we actually Sys_UnloadModule the dll and that we don't call Sys_LoadModule
+// over and over again.
+static CDllDemandLoader g_GameUI( "GameUI" );
+
+#ifndef CLIENT_DLL
+
+//-----------------------------------------------------------------------------
+// Purpose:
+//-----------------------------------------------------------------------------
+class CPointBonusMapsAccessor : public CPointEntity
+{
+public:
+ DECLARE_CLASS( CPointBonusMapsAccessor, CPointEntity );
+ DECLARE_DATADESC();
+
+ virtual void Activate( void );
+
+ void InputUnlock( inputdata_t& inputdata );
+ void InputComplete( inputdata_t& inputdata );
+ void InputSave( inputdata_t& inputdata );
+
+private:
+ string_t m_String_tFileName;
+ string_t m_String_tMapName;
+ IGameUI *m_pGameUI;
+};
+
+BEGIN_DATADESC( CPointBonusMapsAccessor )
+ DEFINE_KEYFIELD( m_String_tFileName, FIELD_STRING, "filename" ),
+ DEFINE_KEYFIELD( m_String_tMapName, FIELD_STRING, "mapname" ),
+
+ DEFINE_INPUTFUNC( FIELD_VOID, "Unlock", InputUnlock ),
+ DEFINE_INPUTFUNC( FIELD_VOID, "Complete", InputComplete ),
+ DEFINE_INPUTFUNC( FIELD_VOID, "Save", InputSave ),
+END_DATADESC()
+
+LINK_ENTITY_TO_CLASS( point_bonusmaps_accessor, CPointBonusMapsAccessor );
+
+void CPointBonusMapsAccessor::Activate( void )
+{
+ BaseClass::Activate();
+
+ CreateInterfaceFn gameUIFactory = g_GameUI.GetFactory();
+ if ( gameUIFactory )
+ {
+ m_pGameUI = (IGameUI *) gameUIFactory(GAMEUI_INTERFACE_VERSION, NULL );
+ }
+}
+
+void CPointBonusMapsAccessor::InputUnlock( inputdata_t& inputdata )
+{
+ if ( m_pGameUI )
+ m_pGameUI->BonusMapUnlock( m_String_tFileName.ToCStr(), m_String_tMapName.ToCStr() );
+}
+
+void CPointBonusMapsAccessor::InputComplete( inputdata_t& inputdata )
+{
+ if ( m_pGameUI )
+ {
+ m_pGameUI->BonusMapComplete( m_String_tFileName.ToCStr(), m_String_tMapName.ToCStr() );
+
+ int iNumAdvancedComplete = m_pGameUI->BonusMapNumAdvancedCompleted();
+
+ IGameEvent *event = gameeventmanager->CreateEvent( "advanced_map_complete" );
+ if ( event )
+ {
+ event->SetInt( "numadvanced", iNumAdvancedComplete );
+ gameeventmanager->FireEvent( event );
+ }
+ }
+}
+
+void CPointBonusMapsAccessor::InputSave( inputdata_t& inputdata )
+{
+ if ( m_pGameUI )
+ m_pGameUI->BonusMapDatabaseSave();
+}
+
+#endif
+
+void BonusMapChallengeUpdate( const char *pchFileName, const char *pchMapName, const char *pchChallengeName, int iBest )
+{
+ CreateInterfaceFn gameUIFactory = g_GameUI.GetFactory();
+ if ( gameUIFactory )
+ {
+ IGameUI *pGameUI = (IGameUI *) gameUIFactory(GAMEUI_INTERFACE_VERSION, NULL );
+ if ( pGameUI )
+ {
+ pGameUI->BonusMapChallengeUpdate( pchFileName, pchMapName, pchChallengeName, iBest );
+
+ int piNumMedals[ 3 ];
+ pGameUI->BonusMapNumMedals( piNumMedals );
+
+ IGameEvent *event = gameeventmanager->CreateEvent( "challenge_map_complete" );
+ if ( event )
+ {
+ event->SetInt( "numbronze", piNumMedals[ 0 ] );
+ event->SetInt( "numsilver", piNumMedals[ 1 ] );
+ event->SetInt( "numgold", piNumMedals[ 2 ] );
+ gameeventmanager->FireEvent( event );
+ }
+ }
+ }
+}
+
+void BonusMapChallengeNames( char *pchFileName, char *pchMapName, char *pchChallengeName )
+{
+ CreateInterfaceFn gameUIFactory = g_GameUI.GetFactory();
+ if ( gameUIFactory )
+ {
+ IGameUI *pGameUI = (IGameUI *) gameUIFactory(GAMEUI_INTERFACE_VERSION, NULL );
+ if ( pGameUI )
+ {
+ pGameUI->BonusMapChallengeNames( pchFileName, pchMapName, pchChallengeName );
+ }
+ }
+}
+
+void BonusMapChallengeObjectives( int &iBronze, int &iSilver, int &iGold )
+{
+ CreateInterfaceFn gameUIFactory = g_GameUI.GetFactory();
+ if ( gameUIFactory )
+ {
+ IGameUI *pGameUI = (IGameUI *) gameUIFactory(GAMEUI_INTERFACE_VERSION, NULL );
+ if ( pGameUI )
+ {
+ pGameUI->BonusMapChallengeObjectives( iBronze, iSilver, iGold );
+ }
+ }
+}
|