%% ---------------------------------------------------------------------------
%% @doc team.hrl
%% @author ming_up@foxmail.com
%% @since  2016-11-02
%% @deprecated  组队模块记录
%% ---------------------------------------------------------------------------

%%------------------------------组队ETS宏定义---------------------------------
-define(ETS_TEAM, ets_team).                  %% 队伍缓存
%%------------------------------组队ETS宏定义----------------------------------

-define(TEAM_NEED_LV, 0).                   %% 队伍等级开放条件
-define(TEAM_MEMBER_MAX, 3).                %% 队伍最大人数

%% 成员类型
-define(TEAM_LEADER, 1).                    %% 队长
-define(TEAM_MEMBER, 2).                    %% 队员
-define(TEAM_FAKER,  3).                    %% 假人

-define(CREATE_TYPE_NORMAL, 1).             %% 正常的创建
-define(CREATE_TYPE_TAKE_OVER, 2).          %% 因为队伍发生节点迁移而创造一个队伍来接管原来的队伍

-define(FAKE_JOIN_IN_TIME, 30000).          %% 假人进入时间 ms
-define(FAKE_LEAVE_TIME, 600000).           %% 假人离队时间 ms

-define(MATCH_NO,        0).                % 不可匹配
-define(MATCH_FAKE_YES,  1).                % 可匹配假人
-define(MATCH_FAKE_NO,   2).                % 不可匹配假人

-define(NOTIFY_MATCH_OUT_TIME, 60*10).      %% 通知匹配队伍超时时间(s)
-define(LOGIN_BACK_TEAM_TIME,  300).        %% 允许登录归队的最大离线时长(s)

-define(ZONE_PARTITION,  []).    % 队伍只能在所在分区内匹配的场景

-define(OPEN_DAY_LIMITS, []).  %% 有开服天数限制的活动

%% 组队大类
-define(MATCH_STATE_DUNGEON, 2).

%% 默认密码
-define(DEFAULT_PASS, "10000").

%% 队伍暂离成员列表
-record(ets_tmb_offline, {
        id = 0,                             %% 角色id
        team_pid = none,                    %% 组队进程pid
        offtime = 0,                        %% 离线时间
        dungeon_scene = 0,                  %% 离开时副本的场景id
        dungeon_pid = none,                 %% 副本进程
        dungeon_begin_sid = 0               %% 副本刚开始id
    }).

-record (waiting_status, {
        time = 0,
        info = undefined,
        msg_list = []
    }).

%%队伍资料
-record(team, {
        id = 0,                             %% 队伍id
        pid = 0,                            %% 队伍进程pid
        cls_type = 0,                       %% 队伍所在节点(1游戏节点,2中心节点)
        leader_id = 0,                      %% 队长玩家id
        leader_name = <<>>,                 %% 队长玩家名字
        leader_pid = none,                  %% 队长pid
        leader_node = undefined,            %% 队长所在节点(本服为undefined)
        name = "",                          %% 队名
        member = [],                        %% 队员列表
        free_location = [],                 %% 空闲位置
        join_type = 1,                      %% 1:不自动，2:自动
        init_join_type = 1,                 %% 创队时加入类型
        create_type = 0,                    %% 1:普通创建；2:副本创建
        is_allow_mem_invite = 0,            %% 队员邀请玩家加入队伍(0:不允许，1:允许)
        arbitrate = undefined,              %% 队伍仲裁记录 include/team.hrl #team_arbitrate{}
        dungeon = undefined,                %% 队伍副本相关参数 include/team.hrl #team_dungeon{}
        enlist = undefined,                 %% 队伍招募相关参数 include/team.hrl #team_enlist{}
        target_enlist = undefined,          %% 队伍目标相关参数 include/team.hrl #team_enlist{}
        arbitrate_result_ref = 0,           %% 投票系统定时器
        fake_mb_ref,                        %% 假队员进队定时器
        rela = [],                          %% 亲密度列表[{IdA, IdB, Rela}...]
        pre_num_full = 0,                   %% 藏宝图副本首次满4人之后不允许再新增人员 每次进藏宝图副本都是重新建队，暂时不用考虑重置
        his_teammate = [],                  %%  藏宝图副本记录队伍历史人员，不允许再次邀请玩家进入队伍,服务端未做处理，由客户端限制
        reqlist = [],                       %% 申请列表
        lv_limit_min = 0,                   %% 最小等级限制
        lv_limit_max = 0,                   %% 最大等级限制
        is_matching = 0,                    %% 是否正在自动匹配 0否 1是
        delay_update_ref = undefined,       %% 延迟处理队员发生变化的计时器
        max_num = ?TEAM_MEMBER_MAX,         %% 最大组队人数
        team_skill = [],                    %% 荆棘之心：队伍谁有这个技能[{Id, Skill}]
        waiting_status = [],                %% 有些请求需要别的进程完成后，才能继续操作，因此在请求后，保存个状态
        is_task = false,                    %% 任务队伍不参与真实玩家匹配
        power_limit = 0,                    %% 战力限制
        password = ?DEFAULT_PASS            %% 是否需要密码 默认"10000"为不需要|四位整数字符串
    }).

%% 组队参数
-record(team_args, {
        id = 0                              %% 组队Id
        ,create_type = 0                    %% 创造类型 1:普通创建；2:副本创建
        ,act_id = 0                         %% 活动大类型
        ,act_sub_id = 0                     %% 活动子类型
        ,scene_id = 0                       %% 场景Id
        ,name = <<>>                        %% 组队名字
        ,join_type = 1                      %% 1:不自动，2:自动
        ,password = <<>>                    %% 密码
        ,power = 0                          %% 战力限制
        ,is_allow_mem_invite = 1            %% 是否允许队员邀请玩家加入队伍(0:不允许，1:允许)
        ,member = []                        %% 队员列表
        ,is_matching = 0                    %% 是否正在自动匹配 0否 1是
        ,lev_min = 0                        %% 最小等级限制
        ,lev_max = 0                        %% 最大等级限制
        ,is_task = false                    %% 任务队伍不参与真实玩家匹配
        ,leader_scene_id = 0                %% 队长所在场景id
        ,leader_scene_pool_id = 0           %% 队长所在场景分线id
        ,leader_x = 0                       %% 队长x坐标
        ,leader_y = 0                       %% 队长y坐标
        ,key_value_list = []                %% 其他参数[{Key, Value}]
    }).

%% 队伍仲裁
-record(team_arbitrate, {
        id = 0,                             %% id
        agree_num = 0,                      %% 同意玩家数量
        refuse_num = 0,                     %% 拒绝玩家数量
        vote_list = [],                     %% 投票 [{RoleId, 投票结果(0:不赞同1:赞同)}]
        end_time = 0                        %% 结束时间
    }).

%% 投票信息
-record (vote_info, {
        role_id = 0,                       %% 玩家id
        res = 0                            %% 投票结果 0拒绝 1接受
    }).

%% 队伍副本数据
-record(team_dungeon, {
        dun_id=0,                           %% 副本id
        dun_pid=0                           %% 副本进程pid mod_dungeon
    }).

%% 队伍招募面板数据
%% PS:队伍逻辑根据模块id和模块子模块进行处理
-record(team_enlist, {
        activity_id = 0,                    %% 活动大类id##作为排序
        subtype_id = 0,                     %% 活动子类id
        module_id = 0,                      %% 模块id
        sub_module = 0,                     %% 模块子id
        dun_id = 0,                         %% 副本id
        scene_id = 0                        %% 相关场景id
    }).

%% 队伍招募面板数据配置
-record(team_enlist_cfg, {
        activity_id = 0,                    %% 活动大类id##作为排序
        subtype_id = 0,                     %% 活动子类id
        module_id = 0,                      %% 模块id
        sub_module = 0,                     %% 模块子id
        dun_id = 0,                         %% 副本id
        dun_sub_id = 0,                     %% 副本子类型id(前端使用)
        scene_id = 0,                       %% 相关场景id
        activity_name = "",                 %% 目标名
        subtype_name = "",                  %% 目标子名
        auto_pos = [],                      %% 自动挂机点
        default_lv_min = 0,                 %% 等级下限
        default_lv_max = 0,                 %% 等级上限
        can_set_lv_limit = 0,               %% 能否设置等级限制 0否 1是
        can_set_power_limit = 0,            %% 能否设置战力限制 0否 1是
        auto_pair = 1,                      %% 是否自动匹配
        exp_scale_type = 1,                 %% 经验加成类型 0不加成 1同场景加成 2同队伍加成
        num = ?TEAM_MEMBER_MAX,             %% 人数要求
        power_limit = 0,                    %% 战力限制
        proficiency = []                    %% 熟练度要求 0不限制|非0 有限制
    }).

%% ----------------------- 助战类型 -----------------------
%% 副本通用:助战是没有奖励的,没有篝火.
-define(HELP_TYPE_NO, 0).                   %% 非助战
-define(HELP_TYPE_YES, 1).                  %% 助战

-define(HELP_TYPE_TRANS_ANY, 1).            %% 任意都替换
-define(HELP_TYPE_TRANS_NOT_ENOUGH, 2).     %% 不够次数才转换

%%队员数据
-record(mb, {
        id = 0,                             %% 队员id
        node = undefined,                   %% 队员所在节点
        platform="",                        %% 平台
        server_num=0,                       %% 服数
        server_id = 0,                      %% 所在服真实id
        chat_zone = 0,                      %% 所在服所属跨服聊天分区编号
        srv_open_time = 0,                  %% 开服时间
        figure=undefined,                   %% 形象
        pid = 0,                            %% 队员pid
        sid = 0,                            %% 玩家sid
        scene = 0,                          %% 队员场景
        scene_pool_id = 0,                  %% 队员场景进程池id
        x = 0,                              %% 队员x坐标
        y = 0,                              %% 队员y坐标
        copy_id = 0,                        %% 队员房间id
        power = 0,                          %% 战力
        location = 0,                       %% 队员位置
        picture = <<>>,                     %% 玩家上传的头像
        help_type = 0,                      %% 助战类型
        online = 1,                         %% 是否真实在线
        follow_id = 0,                      %% 跟战目标id
        follows = [],                       %% 跟战者ids
        join_time = undefined,              %% 入伍时间
        dungeon_id = 0,                     %% 现在在什么副本
        drop_ratio = 0,                     %% 每个人自己的自身掉落加成
        %% onhook_ref = undefined,          %% 离线挂机邀请队友
        skill = 0,                          %% 玩家特殊的被动技能
        target_start_data = []              %% 开始参数
        ,match_ok = 0
        ,is_task = false                    %% 是否任务玩家
        ,action_lock = free                 %% 入队时的状态，free玩家才能加入一个正在匹配的队伍
        ,dungeon_count = []                 %% 副本次数
        ,welfare = []                       %% 尊享卡数据[{Type, EndTime}]
    }).

-record (slim_mb, {
        id = 0,                             % 玩家id
        scene = 0,                          % 当前场景
        server = 0,                         % 玩家服务器id
        online = 1                          % 是否在线
    }).

%% 队伍进程id缓存
-record(ets_team, {
        team_id = 0,
        pid = 0
    }).

%% 玩家缓存
-record(status_team, {
        team_id = 0,                        %% 队伍id
        leader_name = "",                   %% 队长名字
        positon = 0,                        %% 队伍职位(?TEAM_LEADER | ?TEAM_MEMBER)
        reqlist = [],                       %% 请求进入的队伍列表
        exp_scale = 0,                      %% 组队经验加成 千分数
        team_skill = 0,                     %% 玩家队伍临时技能:11000012(荆棘之心)
        skill_num = 0,                      %% 拥有技能11000012的玩家数量
        cls_create_time = 0,                %% 跨服队伍组建时间
        arbitrate_info = [],                %% 正在进行的投票信息
        match_info = [],                    %% 正在进行的投票信息
        intimacy_lv = 0                     %% 好友度等级
    }).
