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

87 lines
2.5 KiB
C++

//========= Copyright Valve Corporation, All rights reserved. ============//
//
// Purpose:
//
// $NoKeywords: $
//=============================================================================//
#ifndef ACTIVITYLIST_H
#define ACTIVITYLIST_H
#ifdef _WIN32
#pragma once
#endif
#include <KeyValues.h>
typedef struct activityentry_s activityentry_t;
class CActivityRemap {
public:
CActivityRemap() { pExtraBlock = NULL; }
void SetExtraKeyValueBlock(KeyValues *pKVBlock) { pExtraBlock = pKVBlock; }
KeyValues *GetExtraKeyValueBlock(void) { return pExtraBlock; }
Activity activity;
Activity mappedActivity;
private:
KeyValues *pExtraBlock;
};
class CActivityRemapCache {
public:
CActivityRemapCache() {}
CActivityRemapCache(const CActivityRemapCache &src) {
int c = src.m_cachedActivityRemaps.Count();
for (int i = 0; i < c; i++) {
m_cachedActivityRemaps.AddToTail(src.m_cachedActivityRemaps[i]);
}
}
CActivityRemapCache &operator=(const CActivityRemapCache &src) {
if (this == &src) return *this;
int c = src.m_cachedActivityRemaps.Count();
for (int i = 0; i < c; i++) {
m_cachedActivityRemaps.AddToTail(src.m_cachedActivityRemaps[i]);
}
return *this;
}
CUtlVector<CActivityRemap> m_cachedActivityRemaps;
};
void UTIL_LoadActivityRemapFile(const char *filename, const char *section,
CUtlVector<CActivityRemap> &entries);
//=========================================================
//=========================================================
extern void ActivityList_Init(void);
extern void ActivityList_Free(void);
extern bool ActivityList_RegisterSharedActivity(const char *pszActivityName,
int iActivityIndex);
extern Activity ActivityList_RegisterPrivateActivity(
const char *pszActivityName);
extern int ActivityList_IndexForName(const char *pszActivityName);
extern const char *ActivityList_NameForIndex(int iActivityIndex);
extern int ActivityList_HighestIndex();
// This macro guarantees that the names of each activity and the constant used
// to reference it in the code are identical.
#define REGISTER_SHARED_ACTIVITY(_n) \
ActivityList_RegisterSharedActivity(#_n, _n);
#define REGISTER_PRIVATE_ACTIVITY(_n) \
_n = ActivityList_RegisterPrivateActivity(#_n);
// Implemented in shared code
extern void ActivityList_RegisterSharedActivities(void);
class ISaveRestoreOps;
extern ISaveRestoreOps *ActivityDataOps();
#endif // ACTIVITYLIST_H