%% ---------------------------------------------------------
%% @doc arena
%% @author fwx
%% @since  2017-11-20
%% @deprecated 竞技场
%% ----------------------------------------------------------
-define(ARENA_FREE_NUM_MAX,    1).           %% 最大挑战次数
-define(ARENA_INSPIRE_NUM_MAX, 2).           %% 最大鼓舞次数
-define(ARENA_CONFIG_LV,       3).           %% 竞技场开放等级
-define(ARENA_MAX_RANK,        4).           %% arena最低排名
-define(ARENA_ROBOT_LV,        5).           %% 假人等级
-define(ARENA_ROBOT_CAREER,    6).           %% 假人职业
-define(ARENA_ROBOT_CLOTH,     7).           %% 假人衣服Id
-define(ARENA_ROBOT_WEAPON,    8).           %% 假人武器Id
-define(ARENA_MAX_RECORD,      10).          %% 战斗记录最大数量
-define(ARENA_SCENE_ID,        11).          %% 竞技场景id
-define(ARENA_BORN_POS,        12).          %% 竞技场景出生坐标列表
-define(ARENA_START_TIME,      13).          %% 开始前倒计时间
-define(ARENA_BATTLE_TIME,     14).          %% 战斗持续时间
-define(ARENA_SELF_POS,        15).          %% 真人坐标
-define(ARENA_REWARD_TIME,     16).          %% 结算界面持续时间
-define(ARENA_COOLDOWN_CD,     17).          %% 玩家每次挑战不论胜负均会增加多少秒冷却时间
-define(ARENA_COOLDOWN_MAX_CD, 18).          %% 当前冷却时间大于等于多少秒时玩家不可再挑战
-define(ARENA_COOLDOWN_PRICE,  19).          %% 冷却时间扣费：{价格, 秒数}
-define(ARENA_COOLDOWN_VIP,    20).          %% 多少级VIP等级以及以上的玩家不会累计挑战冷却时间
-define(ARENA_SEASON_CONFIG,   21).          %% 赛季结算配置
-define(ARENA_BATTLE_POS,      22).          %% 竞技场战斗坐标列表
-define(ARENA_QUICK_CONF,      23).          %% 秒杀条件
-define(ARENA_ROBOT_NMAE,      24).          %% 假人名字
-define(ARENA_SP_MAX_NUM,      25).          %% 大神挑战每日次数
-define(ARENA_SP_MAX_RANK,     26).          %% 大神挑战允许排名
-define(ARENA_SP_ROLE_NUM,     27).          %% 大神数量

-define(BATTLE_STATUS_UNLOCK, 40).          %% 位置锁定时间
-define(ARENA_BATTLE_REWARD_NUM, 5).        %% 5战可获得奖励
%% 排名变化情况
-define(RANK_STAY,          0).            %% 排名没变化
-define(RANK_UP,            1).            %% 排名上升
-define(RANK_DOWN,          2).            %% 排名下降
%% 奖励领取状态
-define(HAVE_GET_REWARD,    2).            %% 已领取
-define(HAVE_CAN_REWARD,    1).            %% 可领奖励
-define(HAVE_NOT_REWARD,    0).            %% 不可领
%% 计数器
-define(ARENA_FIRST_WIN,      1).            %% 每日首胜状态 0没达到|1达到未领取|2达到已领取
-define(ARENA_USE_NUM,        2).            %% 已挑战次数
-define(ARENA_BUY_NUM,        3).            %% 购买次数
-define(ARENA_DAILY,          4).            %% 每日奖励领取状态
-define(ARENA_FIVE_BATTLE,    5).            %% 5战奖励领取状态
-define(ARENA_SP_NUM,         6).            %% 大神挑战次数
-define(ARENA_SP_AWARD,       7).            %% 大神奖励领取状态
%% 战斗结果
-define(ARENA_WIN,            1).            %% 胜利
-define(ARENA_FAIL,           0).            %% 失败
%% 战斗状态
-define(BATTLE_STATUS,      1).            %% 战斗中
-define(NOT_BATTLE_STATUS,  0).            %% 不在战斗中
%% 挑战方式
-define(CHALLENGE,          1).            %% 主动挑战
-define(BE_CHALLENGED,      2).            %% 被挑战
%% 结束状态
-define(ARENA_BATTLE_END_TYPE_FORCE, 1).   %% 跳过战斗/超时结束战斗
-define(ARENA_BATTLE_END_TYPE_NORMAL, 2).  %% 正常结束战斗
%% 奖励形式
-define(ARENA_AWARD_DAILY,      1). %% 每日奖励
-define(ARENA_AWARD_FIRST_WIN,  2). %% 首胜奖励
-define(ARENA_AWARD_FIVE,       3). %% 5战奖励
-define(ARENA_AWARD_SP,         4). %% 大神奖励

%% 最大排名
-define(ARENA_MAX_RANK_TRULY, case data_arena:get_arena_value(?ARENA_MAX_RANK) of
                                    [ArenaMaxRank] -> ArenaMaxRank;
                                    _ -> 3000
                              end).


%%-------------竞技场玩家冷却配置-------------------------
-define(TIME_COOLER, 17).   % 玩家每次挑战不论胜负均会增加多少秒冷却时间,此字段的标识符
-define(MAX_COOLER, 18).    % 当前冷却时间大于等于多少秒时玩家不可再挑战，此字段的标识符      
-define(ONLINE_LIMIT, 28). 
-record(arena_role_cd,{
    roleid ,
    % onlinetime = 0,     %% 玩家在线时长(当日总计不是单次登陆)
    last_use,           %% 最后一次使用竞技场时间点
    rest_time,          %% 剩余冷却时间
    trigger             %% 是否触发冷却限制，触发后只能等冷却变为0才可以继续挑战， 0为不触发，1为触发
}).

%%---------------------------------------------------   

%% 竞技场管理数据
-record(arena_state, {
    rank_maps = maps:new(),             %% 排名 rank => role_id
    battle_status_maps = maps:new(),    %% 是否战斗状态中 rank => UpdateTime
    season = 0,                         %% 赛季Id(当前的赛季Id还没结算，结算后Id+1)
    season_ref = 0                      %% 赛季定时器
    }).

%% 真实玩家数据
-record(real_role, {
    role_id      = 0,         %% 角色id
    rank         = 0,         %% 排名
    rank_time    = 0,         %% 数据变更时间
                              %% 获取昨日排名的时候，如果rank_time是今天，则直接取reward_rank，如果rank_time是过去，则取rank
    history_rank = 0,         %% 历史最高排名
    reward_rank  = 3000      %% 奖励根据的排名
    }).



%% 挑战用record
-record(challenge_role, {
    role_id      = 0,       %% 角色id
    self_name    = "",      %% 我的名字
    self_power   = 0,       %% 我的战力
    self_rank    = 0,       %% 自己的排名
    self_scene   = 0,       %% 挑战用场景
    self_x       = 0,       %% 自己坐标
    self_y       = 0,
    history_rank = 0,       %% 历史最高排名
    rival_id     = 0,       %% 对手id
    rival_power  = 0,       %% 对手战力
    rival_rank   = 0,       %% 对手排名
    sp           = 0        %% 挑战类型：1大神、0普通
    }).

%% 比赛记录
-record(challenge_record, {
    code         = 0,       %% 挑战还是被挑战 1挑战 2被挑战
    role_id      = 0,       %% 角色id
    time         = 0,       %% 时间戳
    rival_id     = 0,       %% 挑战你的玩家id
    rival_name   = <<>>,    %% 挑战你的玩家名字
    result       = 0,       %% 胜负结果 1：胜 0 ：负
    rank_change  = 0        %% 排名变化
    ,role_power  = 0        %% 角色战力
    ,rival_power = 0        %% 挑战你的玩家战力
    }).

%% 购买次数配置
-record(arena_buy_cfg, {
    num   = 0,           %% 购买次数
    type  = 0,           %% 货币类型
    price = 0            %% 价格
    ,need_vip = 0        %% 需要达到vip等级
}).

%% 对手搜索配置
-record(arena_search_cfg, {
    id    = 0,           %% 区域id
    max   = 0,           %% 排名上限
    min   = 0,           %% 排名下限
    max_range = 0,           %% 搜索范围参数
    min_range = 0            %% 排名范围搜索比例
}).

%% 竞技场假人配置
-record(arena_fake_role_cfg, {
    fake_role_id = 0,                   %% 假人id
    fake_role_lv = 0,                   %% 假人等级
    fake_role_carrer = 0,               %% 假人职业
    combat = []                         %% 假人战力
}).

%% 竞技场排名突破奖励
-record(arena_break_reward_cfg, {
    id = 0,                   %% 配置编号
    min_rank = 0,             %% 最小排名
    max_rank = 0,             %% 最大排名
    bgold_coefficient = 0,    %% 绑钻系数
    max_receive = 0,          %% 最大领取数
    award = []                %% 突破奖励
}).

%% 竞技场赛季排名奖励配置
-record(arena_season_award, {
    award = []              %% 奖励
    ,rare_award = []        %% 珍稀奖励
    ,daily_award = []       %% 每日奖励
}).

-define(sql_select_db_real_role,
    <<"select role_id, rank from arena_real_role where rank > 0 and rank <= ~p">>).

-define (sql_select_real_role_by_id,
    <<"select rank, history_rank, reward_rank, rank_time
    from arena_real_role where role_id = ~p">>).

-define(sql_replace_db_real_role,
    <<"replace into arena_real_role (role_id, rank, history_rank, reward_rank, rank_time)
    values (~p, ~p, ~p, ~p, ~p)">>).


% -----------------竞技场玩家挑战冷却表----------------------------------------------------------

-define(sql_select_db_arenacd,
    <<"select last_use, rest_time, trigger1 from arena_challenge_cd where role_id = ~p">>).

-define(sql_replace_db_arenacd,
    <<"replace into arena_challenge_cd (role_id, last_use, rest_time, trigger1)
    values (~p, ~p, ~p, ~p)">>).
% ----------------------------------------------------------------------------------------------


-define(sql_select_db_arena_season_info, <<"SELECT id FROM arena_season_info ORDER BY id DESC LIMIT 1">>).
-define(sql_replace_db_arena_season_info, <<"REPLACE INTO arena_season_info (id, time) VALUES (~p, ~p)">>).

