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.
147 lines
4.0 KiB
147 lines
4.0 KiB
//========= 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 ); |
|
} |
|
} |
|
}
|
|
|