diff options
author | Nikolay Korolev <nickvnuk@gmail.com> | 2019-09-15 02:28:07 +0300 |
---|---|---|
committer | Nikolay Korolev <nickvnuk@gmail.com> | 2019-09-15 02:28:07 +0300 |
commit | 368ce0d4e5607b2c7e442efe73da71b266c8727b (patch) | |
tree | 6e3b9e8bb1f43b4952ed5f4910e3d7f05d47037f /src/core/Fire.cpp | |
parent | 67701df91f179f9b73305924e6d27db18f3010fe (diff) |
CCarCtrl
Diffstat (limited to 'src/core/Fire.cpp')
-rw-r--r-- | src/core/Fire.cpp | 25 |
1 files changed, 25 insertions, 0 deletions
diff --git a/src/core/Fire.cpp b/src/core/Fire.cpp index a2894d43..2181f91c 100644 --- a/src/core/Fire.cpp +++ b/src/core/Fire.cpp @@ -6,5 +6,30 @@ CFireManager &gFireManager = *(CFireManager*)0x8F31D0; WRAPPER void CFire::Extinguish(void) { EAXJMP(0x479D40); } +CFire* CFireManager::FindNearestFire(CVector vecPos, float* pDistance) +{ + for (int i = 0; i < MAX_FIREMEN_ATTENDING; i++) { + int fireId = -1; + float minDistance = 999999; + for (int j = 0; j < NUM_FIRES; j++) { + if (!m_aFires[j].m_bIsOngoing) + continue; + if (m_aFires[j].m_bIsScriptFire) + continue; + if (m_aFires[j].m_nFiremenPuttingOut != i) + continue; + float distance = (m_aFires[j].m_vecPos - vecPos).Magnitude2D(); + if (distance < minDistance) { + minDistance = distance; + fireId = j; + } + } + *pDistance = minDistance; + if (fireId != -1) + return &m_aFires[fireId]; + } + return nil; +} + WRAPPER void CFireManager::StartFire(CEntity *entityOnFire, CEntity *culprit, float, uint32) { EAXJMP(0x479590); } WRAPPER CFire *CFireManager::FindFurthestFire_NeverMindFireMen(CVector coors, float, float) { EAXJMP(0x479430); } |