|
| 1 | +/* |
| 2 | + Plugin-SDK (Grand Theft Auto San Andreas) header file |
| 3 | + Authors: GTA Community. See more here |
| 4 | + https://github.com/DK22Pac/plugin-sdk |
| 5 | + Do not delete this comment block. Respect others' work! |
| 6 | +*/ |
| 7 | +#pragma once |
| 8 | +#include "PluginBase.h" |
| 9 | +#include "CTaskComplex.h" |
| 10 | +#include "CTaskTimer.h" |
| 11 | +#include "eMoveState.h" |
| 12 | + |
| 13 | +class CEntity; |
| 14 | + |
| 15 | +class PLUGIN_API CTaskComplexSeekEntityMove : public CTaskComplex { |
| 16 | +protected: |
| 17 | + CTaskComplexSeekEntityMove(plugin::dummy_func_t a) : CTaskComplex(a) {} |
| 18 | + |
| 19 | +public: |
| 20 | + CEntity* m_entity; |
| 21 | + uint32_t m_time; |
| 22 | + uint32_t m_scanInterval; |
| 23 | + float m_maxEntityDist2D; |
| 24 | + float m_moveStateRadius; |
| 25 | + float m_minEntityDist2D; |
| 26 | + float m_followNodeThresholdHeightChange; |
| 27 | + CTaskTimer m_scanTimer; |
| 28 | + CTaskTimer m_timer; |
| 29 | + |
| 30 | + // position calculator |
| 31 | + void* posCalculatorVTable; // TODO: add posCalculator classes |
| 32 | + |
| 33 | + eMoveState m_moveState; |
| 34 | + bool m_playTiredAnim : 1; |
| 35 | + bool m_faceEntityWhenDone : 1; |
| 36 | + bool m_achievedSeekEntity : 1; // distance lesser than m_maxEntityDist2D |
| 37 | + bool m_trackingEntity : 1; |
| 38 | + |
| 39 | + CTaskComplexSeekEntityMove( |
| 40 | + CEntity* entity, // target entity |
| 41 | + uint32_t time, // task timeout |
| 42 | + uint32_t scanInterval, // target position refresh period |
| 43 | + float maxEntityDist2D, // goal distance |
| 44 | + float moveStateRadius, // switch from run to walk |
| 45 | + float followNodeThresholdHeightChange, |
| 46 | + bool playTiredAnim, // if timeouted play tired animation |
| 47 | + bool faceEntityWhenDone); |
| 48 | +}; |
| 49 | + |
| 50 | +VALIDATE_OFFSET(CTaskComplexSeekEntityMove, m_entity, 0xC); |
| 51 | +VALIDATE_OFFSET(CTaskComplexSeekEntityMove, m_time, 0x10); |
| 52 | +VALIDATE_OFFSET(CTaskComplexSeekEntityMove, m_scanInterval, 0x14); |
| 53 | +VALIDATE_OFFSET(CTaskComplexSeekEntityMove, m_maxEntityDist2D, 0x18); |
| 54 | +VALIDATE_OFFSET(CTaskComplexSeekEntityMove, m_moveStateRadius, 0x1C); |
| 55 | +VALIDATE_OFFSET(CTaskComplexSeekEntityMove, m_minEntityDist2D, 0x20); |
| 56 | +VALIDATE_OFFSET(CTaskComplexSeekEntityMove, m_followNodeThresholdHeightChange, 0x24); |
| 57 | +VALIDATE_OFFSET(CTaskComplexSeekEntityMove, m_scanTimer, 0x28); |
| 58 | +VALIDATE_OFFSET(CTaskComplexSeekEntityMove, m_timer, 0x34); |
| 59 | +VALIDATE_OFFSET(CTaskComplexSeekEntityMove, posCalculatorVTable, 0x40); |
| 60 | +VALIDATE_OFFSET(CTaskComplexSeekEntityMove, m_moveState, 0x44); |
| 61 | +VALIDATE_SIZE(CTaskComplexSeekEntityMove, 0x4C); |
0 commit comments