mirror of
https://github.com/GTAmodding/re3.git
synced 2024-11-16 23:09:38 +00:00
45 lines
1.1 KiB
C++
45 lines
1.1 KiB
C++
|
#include "common.h"
|
||
|
#include "patcher.h"
|
||
|
#include "AccidentManager.h"
|
||
|
|
||
|
#include "Ped.h"
|
||
|
|
||
|
CAccidentManager& gAccidentManager = *(CAccidentManager*)0x87FD10;
|
||
|
|
||
|
uint16 CAccidentManager::CountActiveAccidents()
|
||
|
{
|
||
|
uint16 accidents = 0;
|
||
|
for (int i = 0; i < NUM_ACCIDENTS; i++){
|
||
|
if (m_aAccidents[i].m_pVictim)
|
||
|
accidents++;
|
||
|
}
|
||
|
return accidents;
|
||
|
}
|
||
|
|
||
|
CAccident* CAccidentManager::FindNearestAccident(CVector vecPos, float* pDistance)
|
||
|
{
|
||
|
for (int i = 0; i < MAX_MEDICS_TO_ATTEND_ACCIDENT; i++){
|
||
|
int accidentId = -1;
|
||
|
float minDistance = 999999;
|
||
|
for (int j = 0; j < NUM_ACCIDENTS; j++){
|
||
|
CPed* pVictim = m_aAccidents[j].m_pVictim;
|
||
|
if (!pVictim)
|
||
|
continue;
|
||
|
if (pVictim->CharCreatedBy == MISSION_CHAR)
|
||
|
continue;
|
||
|
if (pVictim->m_fHealth != 0.0f)
|
||
|
continue;
|
||
|
if (m_aAccidents[j].m_nMedicsPerformingCPR != i)
|
||
|
continue;
|
||
|
float distance = (pVictim->GetPosition() - vecPos).Magnitude2D();
|
||
|
if (distance / 2 > pVictim->GetPosition().z - vecPos.z && distance < minDistance){
|
||
|
minDistance = distance;
|
||
|
accidentId = j;
|
||
|
}
|
||
|
}
|
||
|
*pDistance = minDistance;
|
||
|
if (accidentId != -1)
|
||
|
return &m_aAccidents[accidentId];
|
||
|
}
|
||
|
return nil;
|
||
|
}
|