// uses the marine list to quickly find all marines within a box int CASW_Game_Resource::EnumerateMarinesInBox(Vector &mins, Vector &maxs) { m_iNumEnumeratedMarines = 0; for (int i=0;i<GetMaxMarineResources();i++) { CASW_Marine_Resource *pMR = GetMarineResource(i); if (!pMR) continue; CASW_Marine *pMarine = pMR->GetMarineEntity(); if (!pMarine) continue; #ifdef CLIENT_DLL if (asw_debug_clientside_avoidance.GetBool()) { Vector mid = (pMarine->WorldAlignMins() + pMarine->WorldAlignMaxs()) / 2.0f; Vector omin = pMarine->WorldAlignMins() - mid; Vector omax = pMarine->WorldAlignMaxs() - mid; debugoverlay->AddBoxOverlay( mid, omin, omax, vec3_angle, 0, 0, 255, true, 0 ); } #endif Vector omins = pMarine->WorldAlignMins() + pMarine->GetAbsOrigin(); Vector omaxs = pMarine->WorldAlignMaxs() + pMarine->GetAbsOrigin(); if (IsBoxIntersectingBox(mins, maxs, omins, omaxs)) { m_pEnumeratedMarines[m_iNumEnumeratedMarines] = pMR->GetMarineEntity(); m_iNumEnumeratedMarines++; if (m_iNumEnumeratedMarines >=12) break; } } return m_iNumEnumeratedMarines; }
int C_ASW_Game_Resource::GetIndexFor(C_ASW_Marine_Resource* pMarineResource) { for (int i=0;i<GetMaxMarineResources();i++) { if (m_MarineResources[i] == pMarineResource) return i; } return -1; }
CASW_Marine* CASW_Game_Resource::FindMarineByVoiceType( ASW_Voice_Type voice ) { int m = GetMaxMarineResources(); for (int i=0;i<m;i++) { if (GetMarineResource(i) && GetMarineResource(i)->GetProfile() && GetMarineResource(i)->GetProfile()->m_VoiceType == voice) { return GetMarineResource(i)->GetMarineEntity(); } } return NULL; }
int CASW_Game_Resource::GetMarineResourceIndex( CASW_Marine_Resource *pMR ) { if ( !pMR ) return -1; for ( int i=0; i < GetMaxMarineResources(); i++ ) { if ( pMR == GetMarineResource( i ) ) return i; } return -1; }
// returns true if at least one marine has been selected bool CASW_Game_Resource::AtLeastOneMarine() { int m = GetMaxMarineResources(); for (int i=0;i<m;i++) { if (GetMarineResource(i)) { return true; } } return false; }
CASW_Marine_Resource* CASW_Game_Resource::GetFirstMarineResourceForPlayer( CASW_Player *pPlayer ) { for ( int i=0; i < GetMaxMarineResources(); i++ ) { CASW_Marine_Resource *pMR = GetMarineResource(i); if (!pMR) continue; if ( pMR->GetCommander() == pPlayer ) return pMR; } return NULL; }
int CASW_Game_Resource::GetAliensKilledInThisMission() { int nCount = 0; int m = GetMaxMarineResources(); for ( int i = 0; i < m; i++ ) { CASW_Marine_Resource *pMR = GetMarineResource( i ); if ( !pMR ) continue; nCount += pMR->m_iAliensKilled.Get(); } return nCount; }
// returns how many marines this player has selected int CASW_Game_Resource::GetNumMarines(CASW_Player *pPlayer, bool bAliveOnly) { int m = GetMaxMarineResources(); int iMarines = 0; for (int i=0;i<m;i++) { if (GetMarineResource(i) && (GetMarineResource(i)->GetCommander() == pPlayer || pPlayer == NULL) ) { if (!bAliveOnly || GetMarineResource(i)->GetHealthPercent() > 0) iMarines++; } } return iMarines; }
void CASW_Game_Resource::RemoveAMarineFor(CASW_Player *pPlayer) { if (!pPlayer || !ASWGameRules()) return; // find this player's first marine and remove it int m = GetMaxMarineResources(); for (int i=0;i<m;i++) { if (GetMarineResource(i) && GetMarineResource(i)->GetCommander() == pPlayer) { ASWGameRules()->RosterDeselect(pPlayer, GetMarineResource(i)->GetProfileIndex()); return; } } }
int CASW_Game_Resource::CountAllAliveMarines( void ) { int m = GetMaxMarineResources(); int iMarines = 0; for ( int i = 0; i < m; i++ ) { CASW_Marine_Resource *pMR = GetMarineResource( i ); if ( !pMR ) continue; CASW_Marine *pMarine = pMR->GetMarineEntity(); if ( !pMarine ) continue; if ( pMR->GetHealthPercent() > 0 ) { iMarines++; } } return iMarines; }