IGameEventManager: Difference between revisions

From Valve Developer Community
Jump to navigation Jump to search
No edit summary
No edit summary
Line 20: Line 20:
}
}
</pre>
</pre>
== Checking for Events ==
<pre>
class Plugin :
public IGameEventListener2 {
virtual void FireGameEvent( IGameEvent* event ) {
const char* eventName = event->GetName();
if( FStrEq( eventName, "player_say") ) {
int userId = event->GetInt( "userid");
std::string text = event->GetString( "text");
SayTextf( "Got player_say event: userid=%i text=%s\n", userId, text.c_str());
}
}
}
</pre>


== See Also ==
== See Also ==
* {{doxygen|igameevents_8h-source.html igameevents.h on HL2 SDK Doxygen}}
* {{doxygen|igameevents_8h-source.html igameevents.h on HL2 SDK Doxygen}}
[[Category:Programming]][[Category:Interfaces]]
[[Category:Programming]][[Category:Interfaces]]

Revision as of 13:09, 16 August 2006

Note on IGameEventManager2

With the release of the updated SDK for Ep1 the IGameEventManager was upgraded to version 2. This version allows for registering for only the events that are explicitly desired instead of registering for all events. Beware of changes in the API for this version.

Getting an Instance if the IGameEventManager2

bool Plugin::Load( CreateInterfaceFn interfaceFactory, CreateInterfaceFn gameServerFactory ) {
	IGameEventManager2* gameeventmanager = 
		(IGameEventManager2*) interfaceFactory( INTERFACEVERSION_GAMEEVENTSMANAGER2, NULL);
}

Subscribing for Events

void Plugin::LevelInit( char const* pMapName ) {
	Msg( "Level \"%s\" has been loaded\n", pMapName );
	gameeventmanager->AddListener( this, "player_say", true );
}

Checking for Events

class Plugin :
	public IGameEventListener2 {
	virtual void FireGameEvent( IGameEvent* event ) {
		const char* eventName = event->GetName();

		if( FStrEq( eventName, "player_say") ) {
			int userId = event->GetInt( "userid");
			std::string text = event->GetString( "text");
			SayTextf( "Got player_say event: userid=%i text=%s\n", userId, text.c_str());
		}
	}
}


See Also