%%%------------------------------------
%%% @Module  : rush_rank.hrl
%%% @Author  : hejiahua
%%% @Created : 2015-12-18
%%% @Description: 开服冲榜
%%%------------------------------------

-define(OFFSET_TYPE,20).  %%战力和对应进阶的类型偏差

%%(冲榜)
%% --------------------#common_rank_role.rank_type 类型---------------------
-define(RANK_TYPE_RUSH_HORSE,        1).           %% 坐骑
-define(RANK_TYPE_RUSH_WING,         2).           %% 炫翼
-define(RANK_TYPE_RUSH_PEARL,        3).           %% 宝具
-define(RANK_TYPE_RUSH_WEAPON,       4).           %% 武器

-define(RANK_TYPE_RUSH_JARVIS,       5).           %% AI娘
-define(RANK_TYPE_RUSH_GUN,          6).           %% 磁炮
-define(RANK_TYPE_RUSH_CLOUD,        7).           %% 星翼
-define(RANK_TYPE_RUSH_ARMOUR,       8).           %% 幻甲

-define(RANK_TYPE_RUSH_COMBAT,       9).           %% 战力

-define(RANK_TYPE_RUSH_GRADE_HORSE,        21).           %% 坐骑进阶
-define(RANK_TYPE_RUSH_GRADE_WING,         22).           %% 炫翼进阶
-define(RANK_TYPE_RUSH_GRADE_PEARL,        23).           %% 宝具进阶
-define(RANK_TYPE_RUSH_GRADE_WEAPON,       24).           %% 武器进阶

-define(RANK_TYPE_RUSH_GRADE_JARVIS,       25).           %% AI娘进阶
-define(RANK_TYPE_RUSH_GRADE_GUN,          26).           %% 磁炮进阶
-define(RANK_TYPE_RUSH_GRADE_CLOUD,        27).           %% 星翼进阶
-define(RANK_TYPE_RUSH_GRADE_ARMOUR,       28).           %% 幻甲进阶

-define(RANK_TYPE_RUSH_WARSOUL,     31).          %% 战魂战力
-define(RANK_TYPE_RUSH_RED_EQUIP,   32).          %% 红装战力

-define(RANK_TYPE_LIST, [
             ?RANK_TYPE_RUSH_HORSE
            ,?RANK_TYPE_RUSH_WING
            ,?RANK_TYPE_RUSH_WEAPON
            ,?RANK_TYPE_RUSH_JARVIS
            ,?RANK_TYPE_RUSH_PEARL
            ,?RANK_TYPE_RUSH_GUN
            ,?RANK_TYPE_RUSH_CLOUD
            ,?RANK_TYPE_RUSH_ARMOUR
            ,?RANK_TYPE_RUSH_COMBAT
            ,?RANK_TYPE_RUSH_GRADE_HORSE
            ,?RANK_TYPE_RUSH_GRADE_WING
            ,?RANK_TYPE_RUSH_GRADE_WEAPON
            ,?RANK_TYPE_RUSH_GRADE_JARVIS
            ,?RANK_TYPE_RUSH_GRADE_PEARL
            ,?RANK_TYPE_RUSH_GRADE_GUN
            ,?RANK_TYPE_RUSH_GRADE_CLOUD
            ,?RANK_TYPE_RUSH_GRADE_ARMOUR
            ,?RANK_TYPE_RUSH_WARSOUL
            ,?RANK_TYPE_RUSH_RED_EQUIP
]).

%%进阶榜单列表
-define(RANK_TYPE_FOSTER_GRADE_LIST, [
             ?RANK_TYPE_RUSH_GRADE_HORSE
            ,?RANK_TYPE_RUSH_GRADE_WING
            ,?RANK_TYPE_RUSH_GRADE_WEAPON
            ,?RANK_TYPE_RUSH_GRADE_JARVIS
            ,?RANK_TYPE_RUSH_GRADE_PEARL
            ,?RANK_TYPE_RUSH_GRADE_GUN
            ,?RANK_TYPE_RUSH_GRADE_CLOUD
            ,?RANK_TYPE_RUSH_GRADE_ARMOUR
]).

%%战力榜单列表
-define(RANK_TYPE_COMBAT_GRADE_LIST, [
    ?RANK_TYPE_RUSH_WARSOUL
    ,?RANK_TYPE_RUSH_RED_EQUIP
    ,?RANK_TYPE_RUSH_COMBAT
]).


-define(NOT_REWARD,                   0).           %% 不可领状态
-define(HAVE_REWARD,                  1).           %% 可领奖励状态
-define(FINISH,                       2).           %% 完成状态


-define(REFRESH_LV_EXP_RANK_TIME,  10 * 60).        %% 等级榜刷新时间


%% 冲榜活动配置
-record(base_rush_rank, {
       id               = 0,            % 活动id
       name             = "",           % 活动名称
       start_day        = 0,            % 开服第几天开始
       clear_day        = 0,            % 开服第几天结算
       max_len          = 0,            % 榜单长度
       limit            = [],           % 上榜阈值
       figure_id        = []            % 形象列表
       }).

%% 冲榜排行奖励配置
-record(base_rush_rank_reward, {
       id               = 0,            % 活动id
       reward_id        = 0,            % 奖励Id
       rank_min         = 0,            % 排名上限
       rank_max         = 0,            % 排名下限
       rank_limit       = [],           % 排名限制
       reward           = [],           % 奖励
       about            = ""            % 描述
       }).

%% 冲榜目标奖励配置
-record(base_rush_goal_reward, {
       id               = 0,            % 活动id
       reward_id        = 0,            % 奖励Id
       goal_value       = [],           % 目标值
       reward           = [],           % 奖励
       about            = ""            % 描述
       }).

%% 冲榜榜单的角色信息
-record(rush_rank_role, {
        role_key        = undefined,    % 玩家的唯一键 {RankType,id}
        rank_type       = 0,            % 榜单类型
        sub_type        = 0,
        role_id         = 0,            % 角色Id
        value           = 0,            % 值
        value2          = 0,            %
        value3          = 0,            %
        value4          = 0,
        value5          = 0,
        time            = 0,            % 时间
        rank            = 0             % 名次
        }).

%% 通用榜单的进程状态
-record(rush_rank_state, {
        rank_maps = maps:new(),         % Key:{RankType,SubType} Value:[#rush_rank_role{}|...]
        rank_limit = maps:new(),        % {RankType, SubType} => Limit
        goal_maps = maps:new()          %% 目标奖励信息 {RankType, SubType, RoleId} => [{GoalId, RewardState}]
        }).

-record(status_rush_rank, {
        lv_rank_ref = undefined,        %% 等级榜刷新定时器
        lv_rank_cl_ref = undefined      %% 等级榜结算刷新定时器
        }).


-define(sql_rush_rank_role_select, <<"
    SELECT
        rank_type, sub_type, player_id, value, value2, value3,value4,value5, time
    FROM rush_rank_role">>).

-define(sql_rush_rank_goal_select, <<"
    SELECT
        rank_type, sub_type, player_id, goal_id, state
    FROM rush_rank_goal">>).

-define(sql_rush_rank_role_save, <<"
    replace into rush_rank_role(
        rank_type, sub_type, player_id, value, value2, value3,value4,value5, time
    ) values(~p, ~p, ~p, ~p, ~p, ~p, ~p,~p,~p)">>).

-define(sql_rush_rank_goal_save, <<"
    replace into rush_rank_goal(
        rank_type, sub_type, player_id, goal_id, state
    ) values(~p, ~p, ~p, ~p, ~p)">>).

-define(sql_rush_rank_role_delete_by_role_id, <<"delete from rush_rank_role
            where rank_type = ~p and sub_type = ~p and player_id = ~p">>).

-define(sql_rush_rank_role_delete_by_value, <<"delete from rush_rank_role
             where rank_type = ~p and sub_type = ~p and value < ~p ">>).
