actiontable.h

来自「C人工智能游戏开发的一些实例源代码 C Game development in 」· C头文件 代码 · 共 76 行

H
76
字号
#ifndef ActionTable_H
#define ActionTable_H

//
// This is an optimized version of the ActionTable.
// It uses one multimap rather than nested maps.
//

#pragma warning(disable:4786)
#include <Map>

#define MAX_PATH 80

#define CREATE_KEY(condition, action) (condition << 16) | action


enum EnumAction
{
	kAct_Invalid	= -1,
	kAct_Default	=  0,
	kAct_Idle,
	kAct_Walk,
	kAct_Run,
	kAct_Attack,
};

enum EnumAnimCondition
{
	kACond_Invalid	= -1,
	kACond_Default	=  0,
	kACond_OneHanded,
	kACond_TwoHanded,
	kACond_Bow,
	kACond_Staff,
};

enum EnumActionDescriptor
{
	kADesc_Invalid	= -1,
	kADesc_None		=  0,
	kADesc_Swing,
	kADesc_Jab,
};

// --------------------------------------------------------------------------

struct ActionAnimInfoStruct
{
	char					szAnimFileName[MAX_PATH];
	EnumActionDescriptor	eActionDesc;
};

// --------------------------------------------------------------------------

typedef	std::multimap<unsigned long, ActionAnimInfoStruct> CONDITION_ACTION_MAP;	// <ActionConditionKey, (szAnimFileName, eActionDesc)>

// --------------------------------------------------------------------------

class CActionTable {

public:
	
	void		Read(void);

	const char*	GetAnimation(EnumAnimCondition eAnimCond, EnumAction eAction, EnumActionDescriptor* peActionDesc);

protected:

	CONDITION_ACTION_MAP	m_condActionMap;
};

// --------------------------------------------------------------------------

#endif // ActionTable_H

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?