ngl_server 1.0
基于 Actor 模型的 C++ 服务器框架
ngl::rank_item Struct Reference

排行榜条目数据结构 More...

#include <rank_item.h>

Public Types

enum  ecompare { eless_bigger = 1 , eless_less = -1 , eless_equal = 0 }
 比较结果枚举

Public Member Functions

const pbdb::db_brief * get () const
 获取玩家简要信息
bool init (const pbdb::db_brief &abrief, data_modified< pbdb::db_ranklist > *aranklist, pbdb::eranklist atype, const std::function< int64_t(const pbdb::db_brief &)> &avalfun)
 初始化排行榜条目(通用版本)
template<int ACTIVITYID>
int64_t activitylv (const pbdb::db_brief &abrief)
 获取活动等级数值
template<int ACTIVITYID>
int64_t activitygold (const pbdb::db_brief &abrief)
 获取活动金币数值
bool init (pbdb::eranklist atype, const pbdb::db_brief &abrief, data_modified< pbdb::db_ranklist > *aranklist)
 初始化排行榜条目(按类型分发)
void change (pbdb::eranklist atype, pbdb::db_ranklist &aranklist)
 更新排行榜条目数据到数据库记录
ecompare value_compare (int64_t al, int64_t ar)
 比较两个64位整数值
ecompare value_compare (pbdb::eranklist atype, rank_item &ar)
 比较两个条目在指定排行榜类型下的数值
ecompare time_compare (pbdb::eranklist atype, rank_item &ar)
 比较两个条目的时间戳(时间越早排名越高)
bool compare (pbdb::eranklist atype, rank_item &ar)
 综合比较两个条目的排名(数值优先,时间次之,ID兜底)
bool equal_value (pbdb::eranklist atype, rank_item &ar)
 判断两个条目在指定排行榜类型下数值是否相等
int64_t value (pbdb::eranklist atype)
 获取指定排行榜类型的数值

Public Attributes

i64_actorid m_actorid = nguid::make()
std::map< pbdb::eranklist, rank_pairm_data

Detailed Description

排行榜条目数据结构

每个玩家在排行榜中的数据载体,包含多个排行榜维度的数值和时间。 支持初始化、比较、排序等操作。

Member Function Documentation

◆ activitygold()

template<int ACTIVITYID>
int64_t ngl::rank_item::activitygold ( const pbdb::db_brief & abrief)
inline

获取活动金币数值

Parameters
[in]abrief玩家简要信息
Returns
返回活动金币值,未找到返回-1

◆ activitylv()

template<int ACTIVITYID>
int64_t ngl::rank_item::activitylv ( const pbdb::db_brief & abrief)
inline

获取活动等级数值

Parameters
[in]abrief玩家简要信息
Returns
返回活动等级值,未找到返回-1

◆ change()

void ngl::rank_item::change ( pbdb::eranklist atype,
pbdb::db_ranklist & aranklist )
inline

更新排行榜条目数据到数据库记录

Parameters
[in]atype排行榜类型
[in,out]aranklist排行榜数据库记录

◆ compare()

bool ngl::rank_item::compare ( pbdb::eranklist atype,
rank_item & ar )
inline

综合比较两个条目的排名(数值优先,时间次之,ID兜底)

Parameters
[in]atype排行榜类型
[in]ar另一个排行榜条目
Returns
当前条目排名更高返回true

◆ equal_value()

bool ngl::rank_item::equal_value ( pbdb::eranklist atype,
rank_item & ar )
inline

判断两个条目在指定排行榜类型下数值是否相等

Parameters
[in]atype排行榜类型
[in]ar另一个排行榜条目
Returns
数值相等返回true

◆ get()

const pbdb::db_brief * ngl::rank_item::get ( ) const

获取玩家简要信息

Returns
返回玩家db_brief数据的常量指针

◆ init() [1/2]

bool ngl::rank_item::init ( const pbdb::db_brief & abrief,
data_modified< pbdb::db_ranklist > * aranklist,
pbdb::eranklist atype,
const std::function< int64_t(const pbdb::db_brief &)> & avalfun )
inline

初始化排行榜条目(通用版本)

Parameters
[in]abrief玩家简要信息
[in]aranklist排行榜数据修改器
[in]atype排行榜类型
[in]avalfun数值提取函数
Returns
数据有变化返回true

◆ init() [2/2]

bool ngl::rank_item::init ( pbdb::eranklist atype,
const pbdb::db_brief & abrief,
data_modified< pbdb::db_ranklist > * aranklist )
inline

初始化排行榜条目(按类型分发)

Parameters
[in]atype排行榜类型
[in]abrief玩家简要信息
[in]aranklist排行榜数据修改器
Returns
数据有变化返回true

◆ time_compare()

ecompare ngl::rank_item::time_compare ( pbdb::eranklist atype,
rank_item & ar )
inline

比较两个条目的时间戳(时间越早排名越高)

Parameters
[in]atype排行榜类型
[in]ar另一个排行榜条目
Returns
比较结果枚举

◆ value()

int64_t ngl::rank_item::value ( pbdb::eranklist atype)
inline

获取指定排行榜类型的数值

Parameters
[in]atype排行榜类型
Returns
返回排行榜数值

◆ value_compare() [1/2]

ecompare ngl::rank_item::value_compare ( int64_t al,
int64_t ar )
inline

比较两个64位整数值

Parameters
[in]al左值
[in]ar右值
Returns
比较结果枚举

◆ value_compare() [2/2]

ecompare ngl::rank_item::value_compare ( pbdb::eranklist atype,
rank_item & ar )
inline

比较两个条目在指定排行榜类型下的数值

Parameters
[in]atype排行榜类型
[in]ar另一个排行榜条目
Returns
比较结果枚举

The documentation for this struct was generated from the following files: