diff options
author | aap <aap@papnet.eu> | 2019-09-15 09:36:38 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-09-15 09:36:38 +0200 |
commit | ca6d2d3181c740d98205ea3fd0f20e87ea52ddc3 (patch) | |
tree | 6e3b9e8bb1f43b4952ed5f4910e3d7f05d47037f /src/control/AccidentManager.cpp | |
parent | Merge pull request #207 from Nick007J/master (diff) | |
parent | Merge branch 'carctrl_dev' (diff) | |
download | re3-ca6d2d3181c740d98205ea3fd0f20e87ea52ddc3.tar re3-ca6d2d3181c740d98205ea3fd0f20e87ea52ddc3.tar.gz re3-ca6d2d3181c740d98205ea3fd0f20e87ea52ddc3.tar.bz2 re3-ca6d2d3181c740d98205ea3fd0f20e87ea52ddc3.tar.lz re3-ca6d2d3181c740d98205ea3fd0f20e87ea52ddc3.tar.xz re3-ca6d2d3181c740d98205ea3fd0f20e87ea52ddc3.tar.zst re3-ca6d2d3181c740d98205ea3fd0f20e87ea52ddc3.zip |
Diffstat (limited to '')
-rw-r--r-- | src/control/AccidentManager.cpp | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/src/control/AccidentManager.cpp b/src/control/AccidentManager.cpp new file mode 100644 index 00000000..e2b1f6d0 --- /dev/null +++ b/src/control/AccidentManager.cpp @@ -0,0 +1,45 @@ +#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; +}
\ No newline at end of file |