buffer设计
来源:互联网 发布:c语言数字后面加u 编辑:程序博客网 时间:2024/06/10 22:40
游戏中存在各种各样的buffer状态给玩家增强属性或者消减属性 本人 大体设计buffer如下:
在state.h / state.cpp 真正buffer对象的文件
class CBuffer:public IStateInfo //所有的buffer都继承自 IStateInfo
{
public:
CBuffer{}
~CBuffer{}
public:
virtual OnAdd(CState*);//实施具体加buffer操作发消息给客户端显示buffer增加玩家属性等
virtual OnDel(CState*);//告诉客户端删除buffer 并恢复玩家属性
virtual OnLoad(CState*){};
virtual OnTrigger(CState*);//定时器 定时处理buffer状态
protected:
virtual bool OnLoadProperty( XCmlCfgLoader &){return true;} //额外配置需要
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
class IStateInfo
{
//此类主要是读取配置中buffer 的基本属性
virtual void OnAdd( CState* ){}
virtual bool OnTrigger( CState* ) = 0;
virtual void OnDel( CState* ){}
virtual void OnLoad( CState *pState )
{
OnAdd(pState);
OnTrigger(pState);
}
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//可以当做接口类
class CState
{
//定义了一些与外界相关的数据 比如说技能属性指针 还有 本身的 buffer 属性指针等信息
void OnCreate() //重载
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
//buff管理类 静态的
class CStateMgrImpl
{
bool Init();//初始化所有buff的信息填充IStateInfo指针并且存进map里面
CState* CreateState( string statename , IBiology *pBiologyHolder , IBiology *pCaster )
}
读配置:
IStateInfo *CStateMgrImpl::CreateStateFromXML()
{
stStateTable *pItem = std::lower_bound( StateTable , StateTable+_countof( StateTable) , iType)
IStateInfo *pStateInfo = pItem -> CreateObject();
pStateInfo->LoadProperty();
return pStateInfo;//构造出了buffer信息
}
里面配置的一个数据结构 看起来挺高端的
struct stStateTable
{
enStateType eType;
IStateInfo* (*CreateObject);
}
template<class State>
static IStateInfo* CreateStateObject(){ return new State() ; }
typedef enum enStateType
{
enStateAddHpm = 1,//buff Typeid
}
stStateTable StateTable[]=
{
enStateAddHpm, &CreateStateObject<CAddHPState>},//枚举 -》 具体buffer类型
}
- buffer设计
- 流媒体 Buffer 设计原理
- 缓冲设计-buffer
- buffer类的设计
- Cindy 3.0中的Buffer设计
- muduo中buffer的设计
- 环形buffer的两种设计方式
- zfs的双buffer设计问题
- 一个特殊需求的环形Buffer设计
- muduo网络库中buffer的设计
- muduo源码分析之Buffer设计
- muduo应用层缓冲区buffer设计
- muduo网络库中buffer的设计
- python 数字信号的滤波器设计 signal.buffer
- buffer
- buffer
- Buffer
- Buffer
- 刷新iframe也的方法
- Android消息推送
- nginx+tomcat优化转载初步尝试流量项目
- vs2010 mfc 添加下拉菜单
- Xcode6中如何对scrollview进行自动布局(autolayout)
- buffer设计
- 基于opencv检测斑马鱼重心
- 请求转发与重定向的区别
- Java语法----Java中equals和==的区别
- 数据挖掘十大经典算法学习之Naive Bayes朴素贝叶斯
- 织梦调用指定栏目名称
- 获取两个字符串所有公共的子串算法
- SAP EXCEL OLE常用方法和属性+例子
- Eclipse 一直Building Workspace 的解决办法