game_server.rank
简介
组件接口
FRankBoard.gs
为排行榜对象提供启动、收集参与者数据等接口,所有排行榜对象都应该包含本组件
函数原型 | 函数作用 |
---|---|
string get_board_id() | 获取排行榜id |
string get_group_id() | 获取排行榜的分组id |
string get_board_name() | 获取排行榜的名字(跟排行榜服务器中存储排行数据的KEY相关) |
bool start() | 启动排行榜 |
float calc_time_score(mixed t) | 将时间值转换城一个介于0和1之间的浮点数(用来辅助排名权重计算,时间越小,值越大) |
string desc() | 排行榜对象的描述对象(本函数用于调试) |
RankRequest new_request(string cmd) | 新建一个对排行榜进行操作的排行服务器请求 |
bool drop() | 删除排行服务器上的排行数据并切析构自己 |
FRankPlayer.gs
为排行榜参与者提供一组更新排行榜上排名和数据接口的组件 所有排行榜参与者都应该包含该组件
函数原型 | 函数作用 |
---|---|
void refresh_rank(string board_id) | 立刻刷新指定排行榜 |
void refresh_all_ranks() | 刷新所有和参与者类型一致的排行榜 |
void refresh_rank_fields(string board_id, map fields) | 只更新指定排行榜数据但不更新排名 |
void refresh_all_rank_fields(map fields) | 所有排行榜只更新指定排行榜数据但不更新排名 |
void heartbeat_rank() | 排行榜心跳函数,定时刷新参与的带有指定刷新间隔的排行榜排名(可在参与者的心跳函数中执行) |
rank.gs
基于engine层实现的排行榜功能模块 由三方组成:
- 排行榜对象,排行榜对象必须包含FRankBoard组件
- 参与排行的实体对象,实体对象必须包含本模块提供的FRankPlayer组件
- 排行榜管理对象(rank.gs) 流程简要概括:
- 加 载排行榜管理对象 a. rank_board.xlsx表配置 b. rank_server的连接配置(通过cfg.get_config读取) c. 加载排行榜对象的静态对象(rank.load_all_entry方式加载)
- 排行榜管理对象启动服务 管理对象将为rank_board.xlsx表中指定的所有排行榜逐一创建排行榜对象(new_object)并执行 启动操作;需要自行确保所有排行榜对象都创建并且启动
- 一般的,参与排行的实体对象,通过在心跳函数中执行heartbeat_rank()函数更新自己所有的排行榜数据; 同时也可以调用refresh_all_ranks()/reresh_rank()立刻更新所有或者指定的排行榜数据
样例
public void pkg_sample()
{
write("sample");
}