mirror of
https://github.com/nillerusr/source-engine.git
synced 2024-12-29 09:33:00 +00:00
148 lines
4.0 KiB
C++
148 lines
4.0 KiB
C++
|
//========= 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 );
|
||
|
}
|
||
|
}
|
||
|
}
|