示例#1
0
// decrement the player count advertised on this session
//
DWORD XBL_MM_RemovePlayer( bool usePrivateSlot )
{
	if(!logged_on || !session.Exists())
		return -1;

	// The value we're given only tells us if they were eligble for a private slot when
	// they joined, but they may have actually ended up in a public slot. As such, this
	// can get pretty wacky. Oh well.
	if ( usePrivateSlot && session.PrivateFilled )
	{
		session.PrivateFilled--;
		session.PrivateOpen++;
		session.TotalPlayers--;
	}
	else
	{
		if ( session.PublicFilled )
		{
			session.PublicFilled--;
			session.PublicOpen++;
			session.TotalPlayers--;
		}
		else
		{
			assert( 0 );
		}
	}

	session.Update();

	return 0;
}
示例#2
0
// increment the player count advertised on this session
//
DWORD XBL_MM_AddPlayer( bool usePrivateSlot )
{
	if (!logged_on || !session.Exists())
		return -1;

	// SOF2 had a really bad system that checked for server's friends. We do what
	// MS says is good - all invites/joins go into private, everyone else goes public.
    if( usePrivateSlot && session.PrivateOpen )
    {
		session.PrivateFilled++;
		session.PrivateOpen--;
		session.TotalPlayers++;
    }
    else
    {
		// Either joined via matchmaking, or we don't have any more private slots
		// Give them a public slot.
		if ( session.PublicOpen )
		{
			session.PublicFilled++;
			session.PublicOpen--;
			session.TotalPlayers++;
		}
		else
		{
			assert( 0 );
		}
    }

	session.Update();

    return 0;
}
示例#3
0
void XBL_MM_Update_Session()
{
	// VVFIXME - Do we need to ensure that slot counts are right?
	// Our gamertag hasn't changed (I hope) so we leave that alone.

	// Get current map index, and gametype
	int index = mapNameToIndex( sv_mapname->string );
	if (index == MAP_ARRAY_SIZE)
	{
		Com_Error( ERR_FATAL, "Bad map name: %s\n", sv_mapname->string );
	}
	session.CurrentMap = index;
	session.GameType = sv_gametype->integer;

	// All other game options:
	session.FriendlyFire	= g_friendlyFire.integer;
	session.JediMastery		= g_maxForceRank.integer;
	session.SaberOnly		= HasSetSaberOnly();
	session.Dedicated		= com_dedicated->integer;

	// Update the advertised session info
	session.Update();
}