game_server.activity
简介
基于engine层实现的活动模块
组件接口
activity.gs
基于engine层实现的活动模块
几点说明:
- 支持解释自定义的活动时间格式
- 支持扩展自定义的活动周期
- 支持扩 展自定义的活动功能模块
- 支持扩展自定义的活动对象
- 支持扩展自定义的活动相关的mongo脚本
活动初始化设置时处理:
- 先加载所有自定义活动周期、功能模块、对象、mongo脚本
- 创建所有在/etc/activity.xlsx中配置的活动对象(启动计划事件、心跳)
活动配置表(activity.xlsx)的一些说明
activity.xlsx必有字段:
- name - 活动名称
- ob - 活动开始后创建的活动对象实例的名称(可以通过activity_factory.query_entry查询到非nil值)
- mod - 活动对象实例关联的活动功能模块的名称(可以通过activity_mod.query_entry查询到非nil值)
- date_type -活动周期类型(可以通过activity_cycle.query_entry查询到非nil值),当前支持周期为:
day - 每天(可循环)
week - 每周(可循环)
period - 时间段(不可循环) - date - 活动日期列表(默认仅在date_type为'week'时起效-表示每周哪几天有活动)
- time - 活动时间列表
- switch_stage_time - 活动阶段转换时间列表(相对于开始时间)
- stage_name - 活动阶段名称(需和switch_stage_time一一对应)
- pre_start_time - 活动开始预告时间(相对于开始时间)
- pre_stop_time - 活动结束预告时间(相对于结束时间)
- after_stop_time - 活动结束后处理时间((相对于结束时间))
activity.xlsx可选字段:
- only_show - true值时表示仅用于显示,不会创建活动对象实例
基础组件的一些说明:
- FActivityCycleBase - 自定义的活动周期需要包含这个组件
- FActivityModBase - 自定义的活动功能模块需要包含这个组件
- FActivityObBase - 自定义的活动对象需要包含这个组件
函数原型 | 函数作用 |
---|---|
void setup(map para = ) | 初始化活动模块设置 |
void shutdown() | 关闭活动模块 |
void load_activity_mods(string path) | 载入指定路径的活动功能模块 |
void load_activity_obs(string path) | 载入指定路径的活动对象 |
void load_activity_cycles(string path) | 载入指定路径的活动周期对象 |
void load_activity_mongo_scripts(string path) | 载入指定路径的活动相关的mongo脚本 |
void start() | 开始服务 |
void stop() | 停止服务 |
void dump() | 调试接口-输出所有活动信息 |
object get_heart() | 获得活动模块提供的心跳对象 |
map get_activity_info(string name) | 获取指定活动的活动配置信息 |
void reload_activities() | 重新加载所有活动 |
void register_scheduler(object ob) | 为活动对象登记活动定时事件 |
object get_activity(string name) | 根据指定名称查找活动对象实例 |
void iterate_activity(function func) | 遍历所有活动对象实例 |
int calc_activity_stage(string name, int t = 0) | 计算出指定活动在指定时间时所处的活动阶段 |
array calc_activity_start_time(string name) | 计算活动的开始时间 |
int calc_activity_next_start_time(string name) | 计算活 动下一次开启的时间 |
int find_activity_batch(string name, int t = 0) | 查找指定时间处于活动的第几个活动时间段 |
int is_during_activity(string name, int t = 0) | 指定时间是不是在指定活动的活动时间段里 |
void set_parse_time_function(function func) | 设置解释自定义活动时间格式的处理回调函数 |
activity_factory.gs
活动对象工厂
函数原型 | 函数作用 |
---|---|
object load_or_create_activity(string name) | 创建一个活动对象实例 |
样例
public void pkg_sample()
{
map activity_para = {
// "parse_time_func" : (: parse_time :),
// "activity_obs" : nil,
// "activity_mods" : nil,
// "activity_cycles" : nil,
// "activity_mongo_scripts" : nil
};
activity.setup(activity_para);
}