跳到主要内容

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);
}