This repository has been archived on 2024-06-13. You can view files and clone it, but cannot push or open issues or pull requests.
2020-08-04 13:13:01 -04:00

131 lines
4.4 KiB
C

//========= Copyright Valve Corporation, All rights reserved. ============//
//
// Purpose:
//
// $NoKeywords: $
//=============================================================================//
#ifndef EVENTLIST_H
#define EVENTLIST_H
#ifdef _WIN32
#pragma once
#endif
#define AE_TYPE_SERVER (1 << 0)
#define AE_TYPE_SCRIPTED (1 << 1) // see scriptevent.h
#define AE_TYPE_SHARED (1 << 2)
#define AE_TYPE_WEAPON (1 << 3)
#define AE_TYPE_CLIENT (1 << 4)
#define AE_TYPE_FACEPOSER (1 << 5)
#define AE_TYPE_NEWEVENTSYSTEM (1 << 10) // Temporary flag.
#define AE_NOT_AVAILABLE -1
typedef enum {
AE_INVALID =
-1, // So we have something more succint to check for than '-1'
AE_EMPTY,
AE_NPC_LEFTFOOT, // #define NPC_EVENT_LEFTFOOT
// 2050
AE_NPC_RIGHTFOOT, // #define NPC_EVENT_RIGHTFOOT 2051
AE_NPC_BODYDROP_LIGHT, //#define NPC_EVENT_BODYDROP_LIGHT 2001
AE_NPC_BODYDROP_HEAVY, //#define NPC_EVENT_BODYDROP_HEAVY 2002
AE_NPC_SWISHSOUND, //#define NPC_EVENT_SWISHSOUND 2010
AE_NPC_180TURN, //#define NPC_EVENT_180TURN 2020
AE_NPC_ITEM_PICKUP, //#define NPC_EVENT_ITEM_PICKUP
//2040
AE_NPC_WEAPON_DROP, //#define NPC_EVENT_WEAPON_DROP
//2041
AE_NPC_WEAPON_SET_SEQUENCE_NAME, //#define
//NPC_EVENT_WEAPON_SET_SEQUENCE_NAME
//2042
AE_NPC_WEAPON_SET_SEQUENCE_NUMBER, //#define
//NPC_EVENT_WEAPON_SET_SEQUENCE_NUMBER
//2043
AE_NPC_WEAPON_SET_ACTIVITY, //#define NPC_EVENT_WEAPON_SET_ACTIVITY
//2044
AE_NPC_HOLSTER,
AE_NPC_DRAW,
AE_NPC_WEAPON_FIRE,
AE_CL_PLAYSOUND, // #define CL_EVENT_SOUND 5004
// // Emit a sound
AE_SV_PLAYSOUND,
AE_CL_STOPSOUND,
AE_START_SCRIPTED_EFFECT,
AE_STOP_SCRIPTED_EFFECT,
AE_CLIENT_EFFECT_ATTACH,
AE_MUZZLEFLASH, // Muzzle flash from weapons held by the player
AE_NPC_MUZZLEFLASH, // Muzzle flash from weapons held by NPCs
AE_THUMPER_THUMP, // Thumper Thump!
AE_AMMOCRATE_PICKUP_AMMO, // Ammo crate pick up ammo!
AE_NPC_RAGDOLL,
AE_NPC_ADDGESTURE,
AE_NPC_RESTARTGESTURE,
AE_NPC_ATTACK_BROADCAST,
AE_NPC_HURT_INTERACTION_PARTNER,
AE_NPC_SET_INTERACTION_CANTDIE,
AE_SV_DUSTTRAIL,
AE_CL_CREATE_PARTICLE_EFFECT,
AE_RAGDOLL,
AE_CL_ENABLE_BODYGROUP,
AE_CL_DISABLE_BODYGROUP,
AE_CL_BODYGROUP_SET_VALUE,
AE_CL_BODYGROUP_SET_VALUE_CMODEL_WPN,
AE_WPN_PRIMARYATTACK, // Used by weapons that want their primary attack to
// occur during an attack anim (i.e. grenade
// throwing)
AE_WPN_INCREMENTAMMO,
AE_WPN_HIDE, // Used to hide player weapons
AE_WPN_UNHIDE, // Used to unhide player weapons
AE_WPN_PLAYWPNSOUND, // Play a weapon sound from the weapon script file
AE_RD_ROBOT_POP_PANELS_OFF,
AE_TAUNT_ENABLE_MOVE,
AE_TAUNT_DISABLE_MOVE,
LAST_SHARED_ANIMEVENT,
} Animevent;
typedef struct evententry_s evententry_t;
//=========================================================
//=========================================================
extern void EventList_Init(void);
extern void EventList_Free(void);
extern bool EventList_RegisterSharedEvent(const char *pszEventName,
int iEventIndex, int iType = 0);
extern Animevent EventList_RegisterPrivateEvent(const char *pszEventName);
extern int EventList_IndexForName(const char *pszEventName);
extern const char *EventList_NameForIndex(int iEventIndex);
Animevent EventList_RegisterPrivateEvent(const char *pszEventName);
// This macro guarantees that the names of each event and the constant used to
// reference it in the code are identical.
#define REGISTER_SHARED_ANIMEVENT(_n, b) \
EventList_RegisterSharedEvent(#_n, _n, b);
#define REGISTER_PRIVATE_ANIMEVENT(_n) _n = EventList_RegisterPrivateEvent(#_n);
// Implemented in shared code
extern void EventList_RegisterSharedEvents(void);
extern int EventList_GetEventType(int eventIndex);
#endif // EVENTLIST_H