void PersonaStateChange( PersonaStateChange_t obj ) { txtCallbacks.Invoke( ( MethodInvoker )delegate { txtCallbacks.AppendText( "PersonaStateChange_t: " + context.SteamFriends.GetFriendPersonaName( obj.m_ulSteamID ) + " (" + new CSteamID( obj.m_ulSteamID ).Render() + ") Flags: " + obj.m_nChangeFlags + Environment.NewLine ); txtCallbacks.ScrollToCaret(); } ); }
void OnStateChange_OnRun( PersonaStateChange_t param ) { lock ( closeLock ) { if ( bClosing ) return; this.Invoke( new MethodInvoker( () => HandleStateChange( param ) ) ); } }
void HandleStateChange( PersonaStateChange_t param ) { FriendControl fc = friendsFlow.GetFriendControl( new Friend( param.m_ulSteamID ) ); if ( fc == null ) return; // force update fc.SetSteamID( fc.Friend ); }
void PersonaStateChange_OnRun( PersonaStateChange_t param ) { if ( param.m_ulSteamID != SteamContext.SteamUser.GetSteamID() ) { // we're only interested in our own persona changes return; } if ( !SkypeContext.IsReady ) { Log( "Warning: Detect game launch, but skype isn't attached!" ); return; } if ( ( param.m_nChangeFlags & EPersonaChange.k_EPersonaChangeGamePlayed ) != 0 ) { this.Invoke( new MethodInvoker( () => { UpdateSkypeMood( param ); } ) ); } }
private void UpdateSkypeMood( PersonaStateChange_t param ) { FriendGameInfo_t gameInfo = new FriendGameInfo_t(); if ( !SteamContext.SteamFriends.GetFriendGamePlayed( param.m_ulSteamID, ref gameInfo ) ) { // this happens when we stop playing a game SetSkypeMood( "Stopped playing" ); return; } CGameID gameId = gameInfo.m_gameID; if ( gameId.AppType != CGameID.EGameID.k_EGameIDTypeApp ) { Log( "Info: Detected game launch, but wasn't steam game. Only official steam apps are supported!" ); return; } StringBuilder sb = new StringBuilder( 256 ); int len = SteamContext.SteamApps.GetAppData( gameId.AppID, "name", sb ); string name = sb.ToString(); if ( string.IsNullOrWhiteSpace( name ) || len == 0 ) { Log( "Info: Detect game launch, but wasn't able to get the name! AppID: {0}, GameID: {1}", gameId.AppID, gameId.ConvertToUint64() ); Log( "Will try to pick up a delayed game update!" ); delayAppId = gameId.AppID; return; } SetSkypeMood( "Now Playing: {0}", name ); Log( "Now playing: {0}", name ); }
//all interfaces are a go, now callbacks and other necessary functions void stateChange(PersonaStateChange_t perState) { CSteamID stateChangeUId = new CSteamID(perState.m_ulSteamID); EPersonaState newState = steamFriends.GetFriendPersonaState(stateChangeUId); string uName = steamFriends.GetFriendPersonaName(stateChangeUId); //if (newState == EPersonaState.k_EPersonaStateOffline) //person is offline, remove from pug Program.logToWindow(uName + " (" + perState.m_ulSteamID + "/" + stateChangeUId + ") changed state to " + newState); }
void StateChange( PersonaStateChange_t perState ) { }