接下来就是构建事件类与事件管理器了:
先考虑一个事件如何进行归类,用到了虚函数与继承
构造好的事件类如下:
class Event{
bool EventController* evenController();
bool ConditionController* conditionController();
void ActionController* actionController();
void check(){
if(eventController->Fucntion())
if(conditionController->Function())
actionController->Function()
}
};
class EventController{
public:
virtual bool Function();
};
class ConditionController{
public:
virtual bool Function();
};
class ActionController{
public:
virtual void Function();
};
例如还是上面那个例子,我们既要分别去继承EventController,ConditionController和ActionController三个类:
class EventEnter:public EventController{
public:
Man m;
Region r;
virtual bool Function()
{
if(m in r)
return true;
return false;
}
};
class ConditionIs:public ConditionController{
public:
Man m;
Unit u;
virtual bool Function()
{
if(m==u.master)
return true;
return false;
}
};
class ActionAttack:public ActionController{
public:
Man &m;
Unit &u;
virtual void Action()
{
order u attack m;
}
};
以上变量都定义为了public,为了方便操作。
而事件管理器相当简单
class EventManager{
vector<Event> events;
public:
void checkEvents();
void addEvent();
...
};
完成了这些类之后就开始加入事件了。
具体请看下面代码:
这样就完成了一个事件的设计与添加,如果游戏中有更多的事件类,那就要去派生EventController等3个类。大概就是这样。
没怎么写过文章,可能语言上有些错误,请谅解。