Remove member ID as it's not needed.

This commit is contained in:
HikikoMarmy
2025-07-16 08:25:39 +01:00
parent 81c6f94a5b
commit 2fb47ce46e
4 changed files with 14 additions and 27 deletions

View File

@@ -8,6 +8,7 @@ GameSession::GameSession( uint32_t index ) : m_gameId( index )
{
m_members.fill( std::weak_ptr< RealmUser >() );
m_type = GameType::Public;
m_state = GameState::NotReady;
m_currentPlayers = 0;
m_maximumPlayers = 4;
@@ -19,6 +20,7 @@ GameSession::GameSession( uint32_t index ) : m_gameId( index )
m_networkSave = 0;
m_hostNatPort = 0;
m_hostLocalPort = 0;
m_hostLocalAddr.clear();
m_hostExternalAddr.clear();
m_gameName.clear();
@@ -56,16 +58,13 @@ bool GameSession::IsJoinable( sptr_user user ) const
{
if( user )
{
if( user->m_memberId >= 0 )
return false;
for( const auto &m : m_members )
{
if( m.expired() )
continue;
const auto &member = m.lock();
if( member->m_sessionId == user->m_sessionId )
if( member == user )
{
return false;
}
@@ -129,8 +128,7 @@ std::vector<sptr_user> GameSession::GetMembers() const
bool GameSession::AddMember( sptr_user user )
{
if( !user || user->m_memberId >= 0 )
return false;
if( !user ) return false;
int8_t freeIndex = -1;
@@ -155,7 +153,6 @@ bool GameSession::AddMember( sptr_user user )
return false;
}
user->m_memberId = freeIndex;
user->m_gameId = m_gameId;
m_members[ freeIndex ] = user;
@@ -169,27 +166,22 @@ bool GameSession::AddMember( sptr_user user )
bool GameSession::RemoveMember( sptr_user user )
{
if( !user || user->m_memberId < 0 || user->m_memberId >= static_cast< int8_t >( m_members.size() ) )
return false;
if( !user ) return false;
int8_t index = static_cast< int8_t >( user->m_memberId );
auto memberPtr = m_members[ index ].lock();
if( !memberPtr || memberPtr->m_sessionId != user->m_sessionId )
for( int8_t i = 0; i < static_cast< int8_t >( m_members.size() ); ++i )
{
Log::Error( "User [{}] not found in game session [{}] at index {}",
user->m_username, m_gameName, index );
return false;
auto memberPtr = m_members[ i ].lock();
if( memberPtr && memberPtr == user )
{
user->m_gameId = -1;
m_members[ i ].reset();
break;
}
}
user->m_memberId = -1;
user->m_gameId = -1;
m_members[ index ].reset();
m_currentPlayers--;
Log::Info( "Removed user [{}] from game session [{}] at index {}",
user->m_username, m_gameName, index );
Log::Info( "Removed user [{}] from game session [{}]", user->m_username, m_gameName );
return true;
}

View File

@@ -302,8 +302,6 @@ bool GameSessionManager::RequestJoin( sptr_user join_user )
return false;
}
join_user->m_isHost = false;
if( host_user->m_gameType == RealmGameType::CHAMPIONS_OF_NORRATH )
{
ProcessJoinNorrath( join_user, host_user );

View File

@@ -18,7 +18,6 @@ RealmUser::RealmUser()
m_isLoggedIn = false;
m_isHost = false;
m_memberId = -1;
m_gameId = -1;
m_publicRoomId = -1;
m_privateRoomId = -1;
@@ -45,7 +44,6 @@ RealmUser::~RealmUser()
m_isLoggedIn = false;
m_isHost = false;
m_memberId = 0;
m_gameId = 0;
m_publicRoomId = -1;
m_privateRoomId = -1;

View File

@@ -37,7 +37,6 @@ public:
bool m_isLoggedIn; // True if the user has successfully authenticated and logged in
bool m_isHost; // True if this user is the host of a realm
int8_t m_memberId;
int32_t m_gameId; // Unique ID of the realm
int32_t m_publicRoomId; // Used for public chat rooms