Files
expvintl 419f2e4752 init
2025-02-23 17:40:52 +08:00

768 lines
19 KiB
C++

#ifndef INC_EVENT_DATA_H
#define INC_EVENT_DATA_H
// Rage Headers
#include "atl/array.h"
#include "atl/hashstring.h"
#include "Parser/macros.h"
// Game headers
// Forward declarations
class CEventDataManager;
class CEventDecisionMakerResponse;
//
// IMPORTANT - When adding to or changing this file please also update the pargen declaration in EventDataMeta.psc
// IMPORTANT - When adding to or changing this file please also update event_enums.sch
//
enum eEventType
{
// AI Events
EVENT_ACQUAINTANCE_PED_DISLIKE,
EVENT_ACQUAINTANCE_PED_HATE,
EVENT_ACQUAINTANCE_PED_LIKE,
EVENT_ACQUAINTANCE_PED_RESPECT,
EVENT_ACQUAINTANCE_PED_WANTED,
EVENT_ACQUAINTANCE_PED_DEAD,
EVENT_AGITATED,
EVENT_AGITATED_ACTION,
EVENT_ENCROACHING_PED,
EVENT_CALL_FOR_COVER,
EVENT_CAR_UNDRIVEABLE,
EVENT_CLIMB_LADDER_ON_ROUTE,
EVENT_CLIMB_NAVMESH_ON_ROUTE,
EVENT_COMBAT_TAUNT,
EVENT_COMMUNICATE_EVENT,
EVENT_COP_CAR_BEING_STOLEN,
EVENT_CRIME_REPORTED,
EVENT_DAMAGE,
EVENT_DEAD_PED_FOUND,
EVENT_DEATH,
EVENT_DRAGGED_OUT_CAR,
EVENT_DUMMY_CONVERSION,
EVENT_EXPLOSION,
EVENT_EXPLOSION_HEARD,
EVENT_FIRE_NEARBY,
EVENT_FLUSH_TASKS,
EVENT_FOOT_STEP_HEARD,
EVENT_GET_OUT_OF_WATER,
EVENT_GIVE_PED_TASK,
EVENT_GUN_AIMED_AT,
EVENT_HELP_AMBIENT_FRIEND,
EVENT_INJURED_CRY_FOR_HELP,
EVENT_CRIME_CRY_FOR_HELP,
EVENT_IN_AIR,
EVENT_IN_WATER,
EVENT_INCAPACITATED,
EVENT_LEADER_ENTERED_CAR_AS_DRIVER,
EVENT_LEADER_ENTERED_COVER,
EVENT_LEADER_EXITED_CAR_AS_DRIVER,
EVENT_LEADER_HOLSTERED_WEAPON,
EVENT_LEADER_LEFT_COVER,
EVENT_LEADER_UNHOLSTERED_WEAPON,
EVENT_MELEE_ACTION,
EVENT_MUST_LEAVE_BOAT,
EVENT_NEW_TASK,
EVENT_NONE,
EVENT_OBJECT_COLLISION,
EVENT_ON_FIRE,
EVENT_OPEN_DOOR,
EVENT_SHOVE_PED,
EVENT_PED_COLLISION_WITH_PED,
EVENT_PED_COLLISION_WITH_PLAYER,
EVENT_PED_ENTERED_MY_VEHICLE,
EVENT_PED_JACKING_MY_VEHICLE,
EVENT_PED_ON_CAR_ROOF,
EVENT_PED_TO_CHASE,
EVENT_PED_TO_FLEE,
EVENT_PLAYER_COLLISION_WITH_PED,
EVENT_PLAYER_LOCK_ON_TARGET,
EVENT_POTENTIAL_BE_WALKED_INTO,
EVENT_POTENTIAL_BLAST,
EVENT_POTENTIAL_GET_RUN_OVER,
EVENT_POTENTIAL_WALK_INTO_FIRE,
EVENT_POTENTIAL_WALK_INTO_OBJECT,
EVENT_POTENTIAL_WALK_INTO_VEHICLE,
EVENT_PROVIDING_COVER,
EVENT_RADIO_TARGET_POSITION,
EVENT_RAN_OVER_PED,
EVENT_REACTION_COMBAT_VICTORY,
EVENT_REACTION_ENEMY_PED,
EVENT_REACTION_INVESTIGATE_DEAD_PED,
EVENT_REACTION_INVESTIGATE_THREAT,
EVENT_REQUEST_HELP_WITH_CONFRONTATION,
EVENT_RESPONDED_TO_THREAT,
EVENT_REVIVED,
EVENT_SCRIPT_COMMAND,
EVENT_SHOCKING_BROKEN_GLASS,
EVENT_SHOCKING_CAR_ALARM,
EVENT_SHOCKING_CAR_CHASE,
EVENT_SHOCKING_CAR_CRASH,
EVENT_SHOCKING_BICYCLE_CRASH,
EVENT_SHOCKING_CAR_PILE_UP,
EVENT_SHOCKING_CAR_ON_CAR,
EVENT_SHOCKING_DANGEROUS_ANIMAL,
EVENT_SHOCKING_DEAD_BODY,
EVENT_SHOCKING_DRIVING_ON_PAVEMENT,
EVENT_SHOCKING_BICYCLE_ON_PAVEMENT,
EVENT_SHOCKING_ENGINE_REVVED,
EVENT_SHOCKING_EXPLOSION,
EVENT_SHOCKING_FIRE,
EVENT_SHOCKING_GUN_FIGHT,
EVENT_SHOCKING_GUNSHOT_FIRED,
EVENT_SHOCKING_HELICOPTER_OVERHEAD,
EVENT_SHOCKING_PARACHUTER_OVERHEAD,
EVENT_SHOCKING_PED_KNOCKED_INTO_BY_PLAYER,
EVENT_SHOCKING_HORN_SOUNDED,
EVENT_SHOCKING_IN_DANGEROUS_VEHICLE,
EVENT_SHOCKING_INJURED_PED,
EVENT_SHOCKING_MAD_DRIVER,
EVENT_SHOCKING_MAD_DRIVER_EXTREME,
EVENT_SHOCKING_MAD_DRIVER_BICYCLE,
EVENT_SHOCKING_MUGGING,
EVENT_SHOCKING_NON_VIOLENT_WEAPON_AIMED_AT,
EVENT_SHOCKING_PED_RUN_OVER,
EVENT_SHOCKING_PED_SHOT,
EVENT_SHOCKING_PLANE_FLY_BY,
EVENT_SHOCKING_POTENTIAL_BLAST,
EVENT_SHOCKING_PROPERTY_DAMAGE,
EVENT_SHOCKING_RUNNING_PED,
EVENT_SHOCKING_RUNNING_STAMPEDE,
EVENT_SHOCKING_SEEN_CAR_STOLEN,
EVENT_SHOCKING_SEEN_CONFRONTATION,
EVENT_SHOCKING_SEEN_GANG_FIGHT,
EVENT_SHOCKING_SEEN_INSULT,
EVENT_SHOCKING_SEEN_MELEE_ACTION,
EVENT_SHOCKING_SEEN_NICE_CAR,
EVENT_SHOCKING_SEEN_PED_KILLED,
EVENT_SHOCKING_SEEN_VEHICLE_TOWED,
EVENT_SHOCKING_SEEN_WEAPON_THREAT,
EVENT_SHOCKING_SEEN_WEIRD_PED,
EVENT_SHOCKING_SEEN_WEIRD_PED_APPROACHING,
EVENT_SHOCKING_SIREN,
EVENT_SHOCKING_STUDIO_BOMB,
EVENT_SHOCKING_VISIBLE_WEAPON,
EVENT_SHOT_FIRED,
EVENT_SHOT_FIRED_BULLET_IMPACT,
EVENT_SHOT_FIRED_WHIZZED_BY,
EVENT_FRIENDLY_AIMED_AT,
EVENT_FRIENDLY_FIRE_NEAR_MISS,
EVENT_SHOUT_BLOCKING_LOS,
EVENT_SHOUT_TARGET_POSITION,
EVENT_STATIC_COUNT_REACHED_MAX,
EVENT_STUCK_IN_AIR,
EVENT_SUSPICIOUS_ACTIVITY,
EVENT_SWITCH_2_NM_TASK,
EVENT_UNIDENTIFIED_PED,
EVENT_VEHICLE_COLLISION,
EVENT_VEHICLE_DAMAGE_WEAPON,
EVENT_VEHICLE_ON_FIRE,
EVENT_WHISTLING_HEARD,
EVENT_DISTURBANCE,
EVENT_ENTITY_DAMAGED,
EVENT_ENTITY_DESTROYED,
EVENT_WRITHE,
EVENT_HURT_TRANSITION,
EVENT_PLAYER_UNABLE_TO_ENTER_VEHICLE,
EVENT_SCENARIO_FORCE_ACTION,
EVENT_STAT_VALUE_CHANGED,
EVENT_PLAYER_DEATH,
EVENT_PED_SEEN_DEAD_PED,
NUM_AI_EVENTTYPE,
// Network events
EVENT_NETWORK_PLAYER_JOIN_SESSION,
EVENT_NETWORK_PLAYER_LEFT_SESSION,
EVENT_NETWORK_PLAYER_JOIN_SCRIPT,
EVENT_NETWORK_PLAYER_LEFT_SCRIPT,
EVENT_NETWORK_STORE_PLAYER_LEFT,
EVENT_NETWORK_SESSION_START,
EVENT_NETWORK_SESSION_END,
EVENT_NETWORK_START_MATCH,
EVENT_NETWORK_END_MATCH,
EVENT_NETWORK_REMOVED_FROM_SESSION_DUE_TO_STALL,
EVENT_NETWORK_REMOVED_FROM_SESSION_DUE_TO_COMPLAINTS,
EVENT_NETWORK_CONNECTION_TIMEOUT,
EVENT_NETWORK_PED_DROPPED_WEAPON,
EVENT_NETWORK_PLAYER_SPAWN,
EVENT_NETWORK_PLAYER_COLLECTED_PICKUP,
EVENT_NETWORK_PLAYER_COLLECTED_AMBIENT_PICKUP,
EVENT_NETWORK_PLAYER_COLLECTED_PORTABLE_PICKUP,
EVENT_NETWORK_PLAYER_DROPPED_PORTABLE_PICKUP,
EVENT_NETWORK_INVITE_ARRIVED,
EVENT_NETWORK_INVITE_ACCEPTED,
EVENT_NETWORK_INVITE_CONFIRMED,
EVENT_NETWORK_INVITE_REJECTED,
EVENT_NETWORK_SUMMON,
EVENT_NETWORK_SCRIPT_EVENT,
EVENT_NETWORK_PLAYER_SIGNED_OFFLINE,
EVENT_NETWORK_SIGN_IN_STATE_CHANGED,
EVENT_NETWORK_SIGN_IN_CHANGE_ACTIONED,
EVENT_NETWORK_NETWORK_ROS_CHANGED,
EVENT_NETWORK_NETWORK_BAIL,
EVENT_NETWORK_HOST_MIGRATION,
EVENT_NETWORK_FIND_SESSION,
EVENT_NETWORK_HOST_SESSION,
EVENT_NETWORK_JOIN_SESSION,
EVENT_NETWORK_JOIN_SESSION_RESPONSE,
EVENT_NETWORK_CHEAT_TRIGGERED,
EVENT_NETWORK_DAMAGE_ENTITY,
EVENT_NETWORK_PLAYER_ARREST,
EVENT_NETWORK_TIMED_EXPLOSION,
EVENT_NETWORK_PRIMARY_CLAN_CHANGED,
EVENT_NETWORK_CLAN_JOINED,
EVENT_NETWORK_CLAN_LEFT,
EVENT_NETWORK_CLAN_INVITE_RECEIVED,
EVENT_VOICE_SESSION_STARTED,
EVENT_VOICE_SESSION_ENDED,
EVENT_VOICE_CONNECTION_REQUESTED,
EVENT_VOICE_CONNECTION_RESPONSE,
EVENT_VOICE_CONNECTION_TERMINATED,
EVENT_TEXT_MESSAGE_RECEIVED,
EVENT_CLOUD_FILE_RESPONSE,
EVENT_NETWORK_PICKUP_RESPAWNED,
EVENT_NETWORK_PRESENCE_STAT_UPDATE,
EVENT_NETWORK_PED_LEFT_BEHIND,
EVENT_NETWORK_INBOX_MSGS_RCVD,
EVENT_NETWORK_ATTEMPT_HOST_MIGRATION,
EVENT_NETWORK_INCREMENT_STAT,
EVENT_NETWORK_SESSION_EVENT,
EVENT_NETWORK_TRANSITION_STARTED,
EVENT_NETWORK_TRANSITION_EVENT,
EVENT_NETWORK_TRANSITION_MEMBER_JOINED,
EVENT_NETWORK_TRANSITION_MEMBER_LEFT,
EVENT_NETWORK_TRANSITION_PARAMETER_CHANGED,
EVENT_NETWORK_CLAN_KICKED,
EVENT_NETWORK_TRANSITION_STRING_CHANGED,
EVENT_NETWORK_TRANSITION_GAMER_INSTRUCTION,
EVENT_NETWORK_PRESENCE_INVITE,
EVENT_NETWORK_PRESENCE_INVITE_REMOVED,
EVENT_NETWORK_PRESENCE_INVITE_REPLY,
EVENT_NETWORK_CASH_TRANSACTION_LOG,
EVENT_NETWORK_CLAN_RANK_CHANGE,
EVENT_NETWORK_VEHICLE_UNDRIVABLE,
EVENT_NETWORK_PRESENCE_TRIGGER,
EVENT_NETWORK_EMAIL_RECEIVED,
EVENT_NETWORK_FOLLOW_INVITE_RECEIVED,
EVENT_NETWORK_ADMIN_INVITED,
EVENT_NETWORK_SPECTATE_LOCAL,
EVENT_NETWORK_CLOUD_EVENT,
EVENT_NETWORK_SHOP_TRANSACTION,
EVENT_NETWORK_PERMISSION_CHECK_RESULT,
EVENT_NETWORK_APP_LAUNCHED,
EVENT_NETWORK_ONLINE_PERMISSIONS_UPDATED,
EVENT_NETWORK_SYSTEM_SERVICE_EVENT,
EVENT_NETWORK_REQUEST_DELAY,
EVENT_NETWORK_SOCIAL_CLUB_ACCOUNT_LINKED,
EVENT_NETWORK_SCADMIN_PLAYER_UPDATED,
EVENT_NETWORK_SCADMIN_RECEIVED_CASH,
EVENT_NETWORK_CLAN_INVITE_REQUEST_RECEIVED,
EVENT_NETWORK_MARKETING_EMAIL_RECEIVED,
EVENT_NETWORK_STUNT_PERFORMED,
EVENT_NETWORK_FIRED_DUMMY_PROJECTILE,
EVENT_NETWORK_PLAYER_ENTERED_VEHICLE,
EVENT_NETWORK_PLAYER_ACTIVATED_SPECIAL_ABILITY,
EVENT_NETWORK_PLAYER_DEACTIVATED_SPECIAL_ABILITY,
EVENT_NETWORK_PLAYER_SPECIAL_ABILITY_FAILED_ACTIVATION,
EVENT_NETWORK_FIRED_VEHICLE_PROJECTILE,
EVENT_NETWORK_SC_MEMBERSHIP_STATUS,
EVENT_NETWORK_SC_BENEFITS_STATUS,
NUM_NETWORK_EVENTTYPE,
EVENT_ERRORS_UNKNOWN_ERROR,
EVENT_ERRORS_ARRAY_OVERFLOW,
EVENT_ERRORS_INSTRUCTION_LIMIT,
EVENT_ERRORS_STACK_OVERFLOW,
NUM_ERRORS_EVENTTYPE,
NUM_EVENTTYPE,
eEVENTTYPE_MAX = NUM_EVENTTYPE,
EVENT_INVALID = -1,
};
enum InterpretEventAs
{
IEA_POSITION = 0,
IEA_ENTITY,
NUM_INTERPRETEVENTAS,
INTERPRETEVENTAS_MAX = NUM_INTERPRETEVENTAS,
};
enum EventSourceType
{
EVENT_SOURCE_UNDEFINED = 0,
EVENT_SOURCE_PLAYER,
EVENT_SOURCE_FRIEND,
EVENT_SOURCE_THREAT,
NUM_EVENTSOURCETYPE,
EVENTSOURCETYPE_MAX = NUM_EVENTSOURCETYPE,
};
class CEventDataResponseTask
{
public:
CEventDataResponseTask() {}
virtual ~CEventDataResponseTask() {}
const rage::atHashString & GetName() const { return m_Name; }
protected:
rage::atHashString m_Name;
PAR_PARSABLE;
};
class CEventDataResponsePoliceTaskWanted : public CEventDataResponseTask
{
public:
CEventDataResponsePoliceTaskWanted() : CEventDataResponseTask() {}
protected:
PAR_PARSABLE;
};
class CEventDataResponseSwatTaskWanted : public CEventDataResponseTask
{
public:
CEventDataResponseSwatTaskWanted() : CEventDataResponseTask() {}
protected:
PAR_PARSABLE;
};
class CEventDataResponseTaskCombat : public CEventDataResponseTask
{
public:
CEventDataResponseTaskCombat() : CEventDataResponseTask() {}
protected:
PAR_PARSABLE;
};
class CEventDataResponseTaskThreat : public CEventDataResponseTask
{
public:
CEventDataResponseTaskThreat() : CEventDataResponseTask() {}
protected:
PAR_PARSABLE;
};
class CEventDataResponseTaskCower : public CEventDataResponseTask
{
public:
CEventDataResponseTaskCower() : CEventDataResponseTask() {}
protected:
PAR_PARSABLE;
};
class CEventDataResponseTaskHandsUp : public CEventDataResponseTask
{
public:
CEventDataResponseTaskHandsUp() : CEventDataResponseTask() {}
protected:
PAR_PARSABLE;
};
class CEventDataResponseTaskGunAimedAt : public CEventDataResponseTask
{
public:
CEventDataResponseTaskGunAimedAt() : CEventDataResponseTask() {}
protected:
PAR_PARSABLE;
};
class CEventDataResponseTaskFlee : public CEventDataResponseTask
{
public:
CEventDataResponseTaskFlee() : CEventDataResponseTask(), Flee(IEA_ENTITY) {}
rage::u8 GetFlee() const { return Flee; }
protected:
rage::u8 Flee;
PAR_PARSABLE;
};
class CEventDataResponseTaskTurnToFace : public CEventDataResponseTask
{
public:
CEventDataResponseTaskTurnToFace() : CEventDataResponseTask(), Face(IEA_ENTITY) {}
rage::u8 GetFace() const { return Face; }
protected:
rage::u8 Face;
PAR_PARSABLE;
};
class CEventDataResponseTaskCrouch : public CEventDataResponseTask
{
public:
CEventDataResponseTaskCrouch() : CEventDataResponseTask(), TimeToCrouch(3.0f) {}
float GetTimeToCrouch() const { return TimeToCrouch; }
protected:
float TimeToCrouch;
PAR_PARSABLE;
};
class CEventDataResponseTaskLeaveCarAndFlee : public CEventDataResponseTask
{
public:
CEventDataResponseTaskLeaveCarAndFlee() : CEventDataResponseTask() {}
protected:
PAR_PARSABLE;
};
class CEventDataResponseTaskWalkRoundFire : public CEventDataResponseTask
{
public:
CEventDataResponseTaskWalkRoundFire() : CEventDataResponseTask() {}
protected:
PAR_PARSABLE;
};
class CEventDataResponseTaskScenarioFlee : public CEventDataResponseTask
{
public:
CEventDataResponseTaskScenarioFlee() : CEventDataResponseTask() {}
protected:
PAR_PARSABLE;
};
class CEventDataResponseTaskFlyAway : public CEventDataResponseTask
{
public:
CEventDataResponseTaskFlyAway() : CEventDataResponseTask() {}
protected:
PAR_PARSABLE;
};
class CEventDataResponseTaskWalkRoundEntity : public CEventDataResponseTask
{
public:
CEventDataResponseTaskWalkRoundEntity() : CEventDataResponseTask() {}
protected:
PAR_PARSABLE;
};
class CEventDataResponseTaskHeadTrack : public CEventDataResponseTask
{
public:
CEventDataResponseTaskHeadTrack() : CEventDataResponseTask() {}
protected:
PAR_PARSABLE;
};
class CEventDataResponseTaskShockingEventGoto : public CEventDataResponseTask
{
public:
CEventDataResponseTaskShockingEventGoto() : CEventDataResponseTask() {}
protected:
PAR_PARSABLE;
};
class CEventDataResponseTaskShockingEventHurryAway : public CEventDataResponseTask
{
public:
CEventDataResponseTaskShockingEventHurryAway() : CEventDataResponseTask() {}
protected:
PAR_PARSABLE;
};
class CEventDataResponseTaskShockingEventWatch : public CEventDataResponseTask
{
public:
CEventDataResponseTaskShockingEventWatch() : CEventDataResponseTask() {}
protected:
PAR_PARSABLE;
};
class CEventDataResponseTaskShockingPoliceInvestigate : public CEventDataResponseTask
{
public:
CEventDataResponseTaskShockingPoliceInvestigate() : CEventDataResponseTask() {}
protected:
PAR_PARSABLE;
};
class CEventDataResponseTaskEvasiveStep : public CEventDataResponseTask
{
public:
CEventDataResponseTaskEvasiveStep() : CEventDataResponseTask() {}
protected:
PAR_PARSABLE;
};
class CEventDataResponseTaskEscapeBlast : public CEventDataResponseTask
{
public:
CEventDataResponseTaskEscapeBlast() : CEventDataResponseTask() {}
PAR_PARSABLE;
};
class CEventDataResponseTaskAgitated : public CEventDataResponseTask
{
public:
CEventDataResponseTaskAgitated() : CEventDataResponseTask() {}
PAR_PARSABLE;
};
class CEventDataResponseTaskExplosion : public CEventDataResponseTask
{
public:
CEventDataResponseTaskExplosion() : CEventDataResponseTask() {}
PAR_PARSABLE;
};
class CEventDataResponseTaskDuckAndCover : public CEventDataResponseTask
{
public:
CEventDataResponseTaskDuckAndCover() : CEventDataResponseTask() {}
PAR_PARSABLE;
};
class CEventDataResponseTaskShockingEventReactToAircraft : public CEventDataResponseTask
{
public:
CEventDataResponseTaskShockingEventReactToAircraft() : CEventDataResponseTask() {}
PAR_PARSABLE;
};
class CEventDataResponseTaskShockingEventReact : public CEventDataResponseTask
{
public:
CEventDataResponseTaskShockingEventReact() : CEventDataResponseTask() {}
PAR_PARSABLE;
};
class CEventDataResponseTaskShockingEventBackAway : public CEventDataResponseTask
{
public:
CEventDataResponseTaskShockingEventBackAway() : CEventDataResponseTask() {}
PAR_PARSABLE;
};
class CEventDataResponseTaskShockingEventStopAndStare : public CEventDataResponseTask
{
public:
CEventDataResponseTaskShockingEventStopAndStare() : CEventDataResponseTask() {}
PAR_PARSABLE;
};
class CEventDataResponseTaskSharkAttack : public CEventDataResponseTask
{
public:
CEventDataResponseTaskSharkAttack() : CEventDataResponseTask() {}
PAR_PARSABLE;
};
class CEventDataResponseTaskExhaustedFlee : public CEventDataResponseTask
{
public:
CEventDataResponseTaskExhaustedFlee() : CEventDataResponseTask() {}
PAR_PARSABLE;
};
class CEventDataResponseTaskGrowlAndFlee : public CEventDataResponseTask
{
public:
CEventDataResponseTaskGrowlAndFlee() : CEventDataResponseTask() {}
PAR_PARSABLE;
};
class CEventDataResponseTaskWalkAway : public CEventDataResponseTask
{
public:
CEventDataResponseTaskWalkAway() : CEventDataResponseTask() {}
PAR_PARSABLE;
};
class CEventDataResponseAggressiveRubberneck : public CEventDataResponseTask
{
public:
CEventDataResponseAggressiveRubberneck() : CEventDataResponseTask() {}
PAR_PARSABLE;
};
class CEventDataResponseTaskShockingNiceCar : public CEventDataResponseTask
{
public:
CEventDataResponseTaskShockingNiceCar() : CEventDataResponseTask() {}
PAR_PARSABLE;
};
class CEventDataResponseFriendlyNearMiss : public CEventDataResponseTask
{
public:
CEventDataResponseFriendlyNearMiss() : CEventDataResponseTask() {}
PAR_PARSABLE;
};
class CEventDataResponseFriendlyAimedAt : public CEventDataResponseTask
{
public:
CEventDataResponseFriendlyAimedAt() : CEventDataResponseTask() {}
PAR_PARSABLE;
};
class CEventDataResponseDeferToScenarioPointFlags : public CEventDataResponseTask
{
public:
CEventDataResponseDeferToScenarioPointFlags() : CEventDataResponseTask() {}
PAR_PARSABLE;
};
class CEventDataResponseTaskShockingEventThreatResponse : public CEventDataResponseTask
{
public:
CEventDataResponseTaskShockingEventThreatResponse() : CEventDataResponseTask() {}
PAR_PARSABLE;
};
class CEventDataResponsePlayerDeath : public CEventDataResponseTask
{
public:
CEventDataResponsePlayerDeath() : CEventDataResponseTask() {}
PAR_PARSABLE;
};
enum eEventResponseFleeFlags
{
DisableCrouch,
DisableHandsUp,
DisableCover,
DisableVehicleExit,
AllowVehicleOffRoad,
IsShortTerm
};
class CEventDataDecisionMaker
{
public:
CEventDataDecisionMaker() { m_CachedDecisionMakerParent = NULL; }
virtual ~CEventDataDecisionMaker() {}
const rage::atHashString& GetName() const { return m_Name; }
rage::u32 GetDecisionMakerParentRef() const { return DecisionMakerParentRef.GetHash(); }
const CEventDataDecisionMaker* GetCachedDecisionMakerParent() const
{ return m_CachedDecisionMakerParent; }
int GetNumEventResponses() const { return EventResponse.GetCount(); }
const atHashString & GetEventResponse(const int index) const { return EventResponse[index]; }
const CEventDecisionMakerResponse* GetCachedSortedEventResponse(int index) const { return m_CachedSortedEventResponse[index]; }
eEventType GetCachedSortedEventTypeForResponse(int index) const { return (eEventType)m_CachedSortedEventTypeForResponse[index]; }
int GetNumCachedResponses() const { return m_CachedSortedEventTypeForResponse.GetCount(); }
int FindFirstPossibleCachedResponseForEventType(eEventType eventType) const;
void PostLoad();
protected:
static const rage::u8 MAX_EVENTRESPONSES = 46;
const CEventDataDecisionMaker* m_CachedDecisionMakerParent;
atFixedArray<u16 /*eEventType*/, MAX_EVENTRESPONSES> m_CachedSortedEventTypeForResponse;
atFixedArray<const CEventDecisionMakerResponse*, MAX_EVENTRESPONSES> m_CachedSortedEventResponse;
rage::atHashString m_Name;
rage::atHashString DecisionMakerParentRef;
rage::atArray<rage::atHashString> EventResponse;
PAR_PARSABLE;
};
struct CEventResponseTheDecision
{
public:
inline CEventResponseTheDecision() : m_TaskType(-1), m_FleeFlags(0), m_pResponse(NULL) {}
inline void Reset() { m_TaskType = -1; m_FleeFlags = 0; }
int GetTaskType() const { return m_TaskType; }
void SetTaskType(int val) { Assert(val >= -0x8000 && val <= 0x7fff); m_TaskType = (s16)val; }
bool HasDecision() const { return m_TaskType != -1; }
int GetFleeFlags() const { return m_FleeFlags; }
void SetFleeFlags(int val) { Assign(m_FleeFlags, val); }
u32 GetSpeechHash() const { return m_SpeechHash;}
void SetSpeechHash(const u32 val) { m_SpeechHash.SetHash(val); }
void SetResponse(const CEventDecisionMakerResponse* pResponse) { m_pResponse = pResponse; }
const CEventDecisionMakerResponse* GetResponse() const { return m_pResponse; }
private:
s16 m_TaskType;
u8 m_FleeFlags;
atHashString m_SpeechHash;
const CEventDecisionMakerResponse* m_pResponse;
};
#endif // INC_EVENT_DATA_H