CTeamPlayer* CTeam::GetPlayer(uint32 dwPlayerID) { // Look for this player... CTeamPlayer* pPlayer = GetFirstPlayer(); while (pPlayer) { if (pPlayer->GetID() == dwPlayerID) { return(pPlayer); } pPlayer = GetNextPlayer(pPlayer); } // If we get here, this player is not in the team... return(NULL); }
void Engine::Play( void ) { m_pCurrentPlayer = GetFirstPlayer(); try { while( !IsGameOver() ) { m_pCurrentPlayer->PlayTurn(); if( m_OutpostFlag ) { // do not increment the pPlayer pointer; } else { m_pCurrentPlayer = GetNextPlayer( m_pCurrentPlayer ); } } } catch( std::wstring* errorString ) { std::wcout << L"Exception raised: " << errorString << L"\n"; } }
void CTeam::SortPlayers(int nSortKey, int nDir) { // Sanity checks... if (nSortKey == TM_KEY_SCORE) return; if (GetNumPlayers() <= 1) return; // Remove each player from our list, and insert it, sorted, into a temp list... CTeamPlayerList lsTemp; CTeamPlayer* pCurPlr = GetFirstPlayer(); while (pCurPlr) { CTeamPlayer* pNextPlr = GetNextPlayer(pCurPlr); m_lsPlayers.Delete(pCurPlr); // Insert the player from our main list, sorted, into our temp list... CTeamPlayer* pTmpPlr = lsTemp.GetFirst(); if (!pTmpPlr) { lsTemp.Insert(pCurPlr); } else { while (pTmpPlr) { if (nDir == TM_SORT_DESCENDING && IsGreater(pCurPlr, pTmpPlr, nSortKey)) { lsTemp.InsertBefore(pTmpPlr, pCurPlr); pTmpPlr = NULL; } else if (nDir == TM_SORT_ASCENDING && IsLess(pCurPlr, pTmpPlr, nSortKey)) { lsTemp.InsertBefore(pTmpPlr, pCurPlr); pTmpPlr = NULL; } else { pTmpPlr = pTmpPlr->GetNext(); if (!pTmpPlr) { lsTemp.InsertLast(pCurPlr); } } } } pCurPlr = pNextPlr; } // Re-insert all items into our main list... CTeamPlayer* pPlr = lsTemp.GetFirst(); while (pPlr) { CTeamPlayer* pNextPlr = pPlr->GetNext(); m_lsPlayers.InsertLast(pPlr); pPlr = pNextPlr; } }