mirror of
https://github.com/nillerusr/source-engine.git
synced 2026-08-08 01:39:36 +00:00
1
This commit is contained in:
@@ -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 );
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user