%%% ----------------------------------------------------
%%% @Module:        3v3
%%% @Author:        zhl
%%% @Description:   跨服3v3头文件
%%% @Created:       2017/07/04
%%% ----------------------------------------------------
-define(ETS_RANK_DATA,                 kf_rank_data).  %% 排行数据
-define(ETS_TEAM_DATA,                 kf_team_data).  %% 队伍数据
-define(ETS_ROLE_DATA,                 kf_role_data).  %% 玩家数据
-define(ETS_PK_DATA,                   kf_pk_data).    %% 战斗数据

-define(PK_3V3_SCENE_ID,                6000).         %% 3v3战斗场景id
-define(PK_3V3_SCENE,                   [?PK_3V3_SCENE_ID]).    %% 跨服3v3战斗场景列表
-define(PK_3V3_SCENE_POOL_ID_LIST,      [1,2,3,4,5]).   %% 进程池Id列表

-define(PK_3V3_ONLINE,    1).
-define(PK_3V3_OFFLINE,   2).
-define(PK_3V3_MAX_SCORE, 300).

-define(KF_3V3_LV_LIMIT,               270).            %% 开放等级限制
-define(KF_3V3_ROOM_LIMIT,             45).             %% 房间数量限制 - 一个场景限制人数270以内
-define(KF_3V3_MATCH_TIME,             30).             %% 最大匹配时间
-define(KF_3V3_PK_TIME,                180).            %% 战斗时间3min
-define(KF_3V3_CREATE_BUFF_TIME,       30).             %% buff刷出时间2min
-define(KF_3V3_RANK_LIMIT,             100).            %% 排行榜上限
-define(KF_3V3_MEMBER_LIMIT,           3).              %% 队伍人员限制##只是初始化的默认值,修改人数需要同步mod_3v3_center和mod_3v3_local进程中的member_limit字段
-define(KF_3V3_REVIVE_TIME,            0).              %% 3v3复活时间
-define(SERVER_OPEN_DAY,               4).              %% 开服天数
-define(SEASON_REWARD_PK_COUNT,        20).             %% 赛季奖励领取场次条件

-define(KF_3V3_STATE_YET,              1).              %% 活动状态 - 还未开始
-define(KF_3V3_STATE_START,            2).              %% 活动状态 - 开始
-define(KF_3V3_STATE_END,              3).              %% 活动状态 - 结束

-define(KF_3V3_PK_READY,               1).              %% 战斗状态 - 准备中
-define(KF_3V3_PK_START,               2).              %% 战斗状态 - 开始
-define(KF_3V3_PK_END,                 3).              %% 战斗状态 - 结束

-define(KF_3V3_IS_AUTO,                1).              %% 满员自动开始
-define(KF_3V3_UNREADY,                0).              %% 还未准备好
-define(KF_3V3_IS_READY,               1).              %% 已准备好了

-define(KF_3V3_START_ROLE,             1).              %% 开始匹配 - 组队
-define(KF_3V3_STOP_ROLE,              2).              %% 取消匹配 - 组队

-define(KF_3V3_GROUP_BLUE,             1).              %% 蓝色
-define(KF_3V3_GROUP_RED,              2).              %% 红色

-define(KF_3V3_RESULT_DRAW,            0).              %% 打平
-define(KF_3V3_RESULT_BLUE,            1).              %% 蓝方胜利
-define(KF_3V3_RESULT_RED,             2).              %% 红方胜利

-define(SQL_SELECT_3V3_RANK, "select server_name, server_num, server_id, role_id, nickname, career,
    sex, lv, vip_lv, power, tier, star, score, time, season_pk from kf_3v3_rank order by (rank_id) asc").
-define(SQL_REPLACE_3V3_RANK_ONE, "replace into kf_3v3_rank (rank_id, server_name, server_num, server_id, role_id, nickname,
    career, sex, lv, vip_lv, power, tier, star, score, time, season_pk) values ~ts").
-define(SQL_REPLACE_3V3_RANK_VALUES, "(~w, '~s', ~w, ~w, ~w, '~ts', ~w, ~w, ~w, ~w, ~w, ~w, ~w, ~w, ~w, ~w)").

-define(SQL_DELETE_3V3_RANK_ONE, "delete from kf_3v3_rank where ~ts").
-define(SQL_DELETE_3V3_RANK_VALUES, "(role_id = ~w)").

-define(SQL_SELECT_3V3_ROLE, "select old_tier, old_star, tier, star, continued_win, daily_win,
    daily_pk, daily_honor, pack_reward, pack_time, daily_time, season_pk from role_3v3 where role_id = ~w").
-define(SQL_REPLACE_3V3_ROLE, "replace into role_3v3 (role_id, old_tier, old_star, tier, star,
    continued_win, daily_win, daily_pk, daily_honor, pack_reward, pack_time, daily_time, season_pk) values (~w, ~w, ~w, ~w, ~w,
    ~w, ~w, ~w, ~w, '~ts', ~w, ~w, ~w)").

%% =========================  跨服中心数据  ===============================


%% 跨服3v3数据
-record(center_state, {
        state_3v3 = 0,                               %% 活动状态
        ed_time = 0,                                 %% 结束时间
        % scenelist = [],                              %% 剩余场景列表
        auto_id = 1,                                 %% 队伍ID - 自增ID
        candinates = [],                             %% 候选队伍 - 匹配中
        pk_timer = [],                               %% 战斗匹配倒计时
        match_role = [],                             %% 候选玩家 - 匹配中
        team_timer = [],                             %% 队伍匹配倒计时
        act_timer = [],                              %% 活动倒计时
        member_limit = ?KF_3V3_MEMBER_LIMIT          %% 人数限制
    }).

%% 跨服3v3排行数据
-record(kf_3v3_rank_data, {
        server_name = "",                            %% 平台
        server_num = 0,                              %% 服号
        server_id = 0,                               %% 角色所在的服务器id
        role_id = 0,                                 %% 玩家ID
        nickname = "",                               %% 玩家昵称
        career = 0,                                  %% 职业
        sex = 0,                                     %% 性别
        lv = 0,                                      %% 等级
        vip_lv = 0,                                  %% VIP等级
        power = 0,                                   %% 战力
        tier = 0,                                    %% 段位
        star = 0,                                    %% 星数
        time = 0,                                    %% 上榜时间
        season_pk = 0,                               %% 赛季参与次数
        score = 0                                    %% 每赛季所得积分 - 每赛季都需要重置
    }).

%% 跨服3v3战斗数据
-record(kf_3v3_pk_data, {
        pk_pid = 0,                                  %% 战斗进程PID
        scene_id = 0,                                %% 场景ID
        scene_pool_id = 0,                           %% 场景PoolId
        room_id = 0,                                 %% 房间号
        state = 0,                                   %% PK状态

        %% ===================== 成员退出战斗不清除战斗数据中的队友数据 =================
        team_data_a = [],                            %% A 队伍数据 - #kf_3v3_team_data{}
        team_data_b = []                             %% B 队伍数据 - #kf_3v3_team_data{}
    }).

%% 跨服3v3队伍数据
-record(kf_3v3_team_data, {
        team_id = 0,                                 %% 队伍ID
        captain_name = "",                           %% 队长名
        server_name = "",                            %% 平台
        server_num = 0,                              %% 服号
        server_id = 0,                               %% 服id
        captain_id = 0,                              %% 队长ID
        password = 0,                                %% 密码
        lv_limit = 0,                                %% 等级要求
        power_limit = 0,                             %% 战力要求
        is_auto = 0,                                 %% 是否自动开始
        member_num = 0,                              %% 队伍人数
        map_power = 0,                               %% 映射战力，用于战斗匹配
        average_power = 0,                           %% 平均战力
        match_count = 0,                             %% 匹配次数
        is_pk = 0,                                   %% 是否在pk
        member_data = []                             %% 成员数据 [#kf_3v3_role_data{}]
    }).

%% 跨服3v3玩家数据
-record(kf_3v3_role_data, {
        node = 0,                                    %% 节点
        server_name = "",                            %% 平台
        server_num = 0,                              %% 服号
        server_id = 0,                               %% 角色所在的服务器id
        role_id = 0,                                 %% 玩家ID
        sid = 0,                                     %% 玩家消息进程
        figure = undefined,                          %% #figure{}
        power = 0,                                   %% 战力
        power_view = 0,                              %% 战力：用于显示
        is_ready = 0,                                %% 是否准备好了
        pk_time = 0,                                 %% 上一次PK时间
        tier = 0,                                    %% 段位
        star = 0,                                    %% 星数
        continued_win = 0,                           %% 连续胜利场次
        old_scene_info=undefined,                    %% 进入时的坐标 {OldScene, OldScenePooldId, OldCopyId, OldX, OldY}
        season_pk = 0,                               %% 赛季参与次数

        %% =============== 每次进入新的队伍都要重置 =================
        match_count = 0,                             %% 匹配队伍次数
        team_id = 0,                                 %% 队伍ID
        group = 0,                                   %% 组别
        pk_pid = 0                                   %% 3v3 pk进程
    }).

%% ==========================  pk进程数据  ===============================

%% 个人积分
-record(role_score, {
        team_id = 0,
        group = 0,
        server_name = "",                       %% 平台
        server_num = 0,                         %% 服号
        server_id = 0,                          %% 服务器独立唯一标识
        role_id = 0,                            %% 玩家ID
        figure = undefined,                     %% #figure{}
        power = 0,                              %% 战力
        power_view = 0,                         %% 战力：用于显示
        sid = 0,                                %% 消息进程
        tier = 0,                               %% 段位
        star = 0,                               %% 星数
        continued_win = 0,                      %% 连胜场次
        honor = 0,                              %% 奖励
        season_pk = 0,                          %% 赛季参与次数
        collect = 0,                            %% 采集神塔次数
        kill = 0,                               %% 击杀次数
        killed = 0,                             %% 被击杀次数
        assist = 0,                             %% 助攻次数
        continued_kill = 0,                     %% 连杀次数
        old_scene_info = undefined,             %% 进来前的场景信息 {OldScene, OldScenePooldId, OldCopyId, OldX, OldY}
        online = 0                              %% 是否在线标志
    }).

%% 队伍积分
-record(team_score, {
        team_id = 0,
        group = 0,
        map_power =0,
        score = 0,                              %% 队伍总积分
        occupy_time = 0,                        %% 占据神塔时间
        kill = 0,                               %% 总击杀次数
        killed = 0,                             %% 总被击杀次数
        assist = 0                              %% 总助攻次数
    }).

%% 神塔数据
-record(tower_data, {
        mon_id = 0,                             %% 神塔ID
        time = 0,                               %% 占据时间
        group = 0                               %% 占据组别
    }).

-record(center_pk_state, {
        scene_id = 0,                           %% 场景id
        scene_pool_id = 0,                      %% 场景PoolId
        room_id = 0,                            %% 房间id
        pk_state = 0,                           %% 战斗状态
        ed_time = 0,                            %% 结束时间戳 - 不是进程结束时间戳
        team_score = [],                        %% 队伍积分
        role_score = [],                        %% 玩家积分
        tower_data = [],                        %% 神塔数据
        timer = []                              %% 积分倒计时
    }).

%% ============================  本服数据  ===============================

%% 3v3数据
-record(local_state, {
        state_3v3 = 0,                               %% 活动状态
        ed_time = 0,                                 %% 结束时间
        score_rank = undefined,                      %% [{Platform, ServerNum, Nickname, Star} | List]
        attention_list = [],                         %% 关注列表
        match_role = [],                             %% 候选玩家 - 匹配中
        team_timer = [],                             %% 队伍匹配倒计时
        act_timer = [],
        member_limit = ?KF_3V3_MEMBER_LIMIT          %% 人数限制
    }).

%% 关注列表
-record(attention_list, {
        role_id = 0,                                 %% 玩家ID
        sid = 0                                      %% 消息进程
    }).


-define(DEFAULT_TIER, 1).                           %% 默认段位
-define(DEFAULT_STAR, 3).                           %% 默认星数

%% 玩家3v3数据
-record(role_3v3, {
        tier = ?DEFAULT_TIER,                        %% 段位
        star = ?DEFAULT_STAR,                        %% 星数
        old_tier = ?DEFAULT_TIER,                    %% 段位(默认青铜Ⅲ)
        old_star = ?DEFAULT_STAR,                    %% 星数
        continued_win = 0,                           %% 连续胜利场次
        daily_win = 0,                               %% 每日胜利场次
        daily_pk = 0,                                %% 每日战斗场次
        daily_honor = 0,                             %% 每日可得荣誉值 - 与昨天的段位星数
        pack_time = 0,                               %% 今日领取荣誉时间
        pack_reward = [{0, 0}, {1, 0}, {2, 0}, {3, 0}],      %% 今日领取的活跃奖励 [{id, time}]
        pk_time = 0,                                 %% 上一次PK时间
        daily_time = 0,                              %% 上次日常刷新时间
        season_pk = 0                                %% 本赛季战斗场次
    }).

%% 玩家基本数据
-record(role_data, {
        node = 0,                                    %% 节点
        server_name = "",                            %% 平台
        server_num = 0,                              %% 服号
        server_id = 0,                               %% 角色所在的服务器id
        role_id = 0,                                 %% 玩家ID
        sid = 0,                                     %% 玩家消息进程
        figure = undefined,                          %% #figure{}
        power = 0,                                   %% 战力：历史最高战力，用于匹配
        power_view = 0,                              %% 战力：用于显示
        tier = 0,                                    %% 段位
        star = 0,                                    %% 星数
        continued_win = 0,                           %% 连续胜利场次
        old_scene_info=undefined,                    %% 进入时的坐标 {OldScene, OldScenePooldId, OldCopyId, OldX, OldY}
        season_pk = 0,                               %% 赛季场次数量

        %% ================= 以下字段用于创建队伍所用 ===================
        password = 0,                                %% 密码
        lv_limit = 0,                                %% 等级要求
        power_limit = 0,                             %% 战力要求
        is_auto = 0,                                 %% 是否自动开始

        %% ================= 以下字段用于匹配组队所用 ===================
        match_count = 0                              %% 匹配队伍次数
    }).

%% 活动时间配置
-record(act_info, {
        id = 0,                                      %% 活动ID
        week = [],                                   %% 开启周
        time = []                                    %% 开启时间
    }).

%% 段位配置
-record(tier_info, {
        tier = 0,                                    %% 段位
        stage = 0,                                   %% 客户端用的段位
        tier_name = "",                              %% 段位名称
        star = 0,                                    %% 升级星数
        daily_reward = 0,                            %% 每日段位奖励
        win_star = 0,                                %% 单场胜利星数
        lose_star = 0,                               %% 单场失败星数
        win_reward = 0,                              %% 单场胜利黑暗值
        lose_reward = 0                              %% 单场失败黑暗值
    }).

