对于游戏的一些活动,应该尽量减少重复性的劳动。(lua语言)
有一下几个思路:
- 可以把一个活动分为几个文件,不要全部放到一个文件里,这会使得代码很臃肿,每个文件都有自己的功能,只需要把这个几个文件放到一个文件夹中就可以了。
- 我们可以定义一个文件,里面用来定义每个活动的id,方便添加修改和查询。
- 很多的活动其实都大相径庭,我们可以用一个基类作为模板,其他的活动只要基于这个模板进行修改就可以了。
- 这个基类中我们可以定义一些函数,通常点的就比如虚函数,或者说抽象函数,定义一个空的函数,留给后面的子类去重载。其实,我们可以定义一切基础函数,适合所有的规则,能够通用。还可以定义一个注册函数(比如注册一些函数方便客户端调用),通过活动的id获取活动的类,再将需要注册的函数以键值对的形式保存在活动类中专门的对象中。
--通用函数
function eventBase:Init()
self.c2sFun ={}
end
--注册函数
function eventBase:RegC2sFun(szName,fun)
local event = EventBase:tbEventBases(self.eventId);
event.c2sFun[szName] = fun;
end
- 还可以注册一些活动通用的函数,比如活动开始函数,活动结束函数等等。
- 可以将活动的基类保存在tbEventBases[0]位,后续的基于衍生。
- 那么如何快速注册活动呢,其实定义一个通用的函数,我们创建一个活动和获取这个活动都只需要传递 活动的名称和活动的id ,然后这个函数会去判断tbEventBases里面有没有对于id的活动,如果有,则直接返回,如果没有,则根据基类创建一个新类,对其进行相应的初始化,再保存到tbEventBases当中,这样,获取活动和创建活动都变得很方便了。