%% ---------------------------------------------------------------------------
%% @doc 多人副本头文件.
%% @author zengzy
%% @since  2019-03-26
%% ---------------------------------------------------------------------------

%% 组队成员人数上限
-define(DUN_MULTI_TEAM_MAX_MEMBER, 3).

-define(DUN_INVITER_LEN,  5).

%% 保存每种组队类型有哪些组队 #dun_multi_room{}
-define(DUN_MULTI_HALL_ETS, ets_dun_multi_hall).

%% 保存组队数据 #dun_multi_team{}
-define(DUN_MULTI_TEAM_ETS, ets_dun_multi_team).

%% 保存角色加入哪个组队在哪个副本里面 #dun_multi_role{}
%% 保存下线前在哪个副本上线回到之前的副本
-define(DUN_MULTI_ROLE_ETS, ets_dun_multi_role).

%% 保存组队自增Id
-define(DUN_MULTI_TEAM_ID_ETS, ets_dun_multi_team_id).

%% 保存跨服多人副本大厅进程Pid
-define(DUN_MULTI_HALL_PID_ETS, ets_dun_multi_hall_pid).

%% 活动大类
%% 活动子类和副本id不能相同
-define(ACT_TYPE_CRUSADE, 61). %% 活动大类1 - 讨伐副本

%%新手每次匹配时间
-define(FIRST_TIME, 2).

%% 成员状态变更通知（全队广播）
-define(DUNMULTITEAM_NOTIFY_LEAVE,     1). %% 成员退出
-define(DUNMULTITEAM_NOTIFY_KICK_OUT,  2). %% 成员被踢
-define(DUNMULTITEAM_NOTIFY_IS_READY,  3). %% 准备状态 "1"准备 or "0"不准备
-define(DUNMULTITEAM_NOTIFY_START_DUN, 4). %% 开启副本
-define(DUNMULTITEAM_NOTIFY_CHANGE_LEADER, 5). %%委任队长
-define(DUNMULTITEAM_NOTIFY_MATCH,     6). %% 队伍匹配状态

-define(MATCH_TIME,     2000).     %%假人轮训匹配时间
-define(MATCH_ONE,      14).       %%匹配第一个假人时间
-define(MATCH_TWO,      2).        %%匹配第二个假人时间

-define(DUN_REAL,       0).     %% 真实玩家
-define(DUN_DUMMY,      1).     %% 假人
-define(DUN_MIRROR,     2).     %% 玩家镜像


%%副本id进程的state
-record(state, {
        id = 0,                    %% 副本Id或其他类型
        match_ref = undefined      %% 假人匹配定时器
    }).

%% 多人副本大厅房间 一个类型一个room
-record(dun_multi_room, {
        id = 0                  %% 副本Id或其他类型
        ,teams = []             %% 组队列表[#dun_multi_team_sub{}]
    }).

%% 多人副本组队
-record(dun_multi_team, {
        id = 0                  %% 组队Id
        ,dun_id = 0             %% 副本Id
        ,sub_type_dun = 0       %% 活动子类副本id
        ,power = 0              %% 战力要求
        ,password = 0           %% 0|密码纯数字6位
        ,is_auto_start = 0      %% 满员后是否自动开始副本0:不是1:是
        ,is_start = 0
        ,min_lv = 0
        ,members = []           %% 成员列表[#dun_multi_member{}]
        ,handle_mb = {[], 0}    %% 队伍操作{[玩家id],缓冲时间}
        ,match_time = 0         %% 匹配时间
        ,is_match = 0           %% 匹配状态：1匹配|0不匹配
        ,max_num = 0            %% 最大人数
        ,is_gm = 0              %% gm创建队伍
        ,first_ref = 0            %% 新手定时器
        ,vote_ref = undefined   %% 强制开始定时
        ,vote_list = {[], []}   %% 赞成列表,反对列表
        ,need_approve = 2       %% 1需要|2不需要
        ,req_list = []          %% 申请列表
        ,single_mode = 0        %% 0默认|1单人模式
    }).

%% 多人副本组队简明信息
-record(dun_multi_team_sub, {
        id = 0                  %% 组队Id
        ,leader_id = 0          %% 队长id
        ,leader_name = 0        %% 队长名
        ,leader_num = 0         %% 队长剩余次数
        ,server_id = 0          %% 角色所在的服务器id
        ,server_num = 0         %% 所在的服标示
        ,power = 0              %% 战力要求
        ,password = 0           %% 0|密码纯数字6位
        ,is_auto_start = 0      %% 满员后是否自动开始副本0:不是1:是
        ,min_lv=0
        ,is_start = 0
        ,member_num = 0         %% 成员数量
    }).

%% 多人副本组队自增Id
-record(dun_multi_team_id, {
        id = 0                  %% 组队自增Id
    }).

%% 多人副本大厅进程Pid
-record(dun_multi_hall_pid, {
        id = 0                  %% 副本id或其他类型
        ,dun_type = 0           %% 副本类型
        ,pid = 0                %% 多人副本大厅进程Pid
    }).

%% 多人副本角色数据
%% 重登使用
-record(dun_multi_role, {
        id = 0                  %% 角色Id
        ,team_id = 0            %% 组队Id
        ,dun_id = 0             %% 副本Id
        ,dun_pid = 0            %% 副本Pid
        ,is_leader = 0
    }).

%% 角色#player_status{}上的多人副本数据
-record(role_dun_multi, {
        team_id = 0             %% 组队Id
        ,dun_id = 0             %% 副本Id
        ,dun_pid = 0            %% 副本Pid
        ,inviter_list = []
        ,is_leader = 0
        ,mirror_help = []       %% 镜像协助队伍列表
        ,req_list = []          %% 队伍申请列表
        ,is_match = 0           %% 1匹配中|0无匹配
        ,merge_type = 0         %% 合并次数类型 0否|1是
    }).

%% 多人副本组队成员
-record(dun_multi_member, {
        id = 0                  %% 角色Id
        ,server_id = 0          %% 角色所在的服务器id
        ,server_num = 0         %% 所在的服标示
        ,node = 0               %% 角色所在节点
        ,figure=undefined       %% 外形信息
        ,hp_lim = 0             %% 血量上限
        ,power = 0              %% 战力
        ,pid = 0                %% 角色Pid
        ,scene = 0              %% 原场景id
        ,scene_pool_id = 0      %% 原场景进程id
        ,copy_id = 0            %% 原CopyId
        ,x = 0                  %% 原x坐标
        ,y = 0                  %% 原y坐标
        ,sid = 0                %% 角色发送协议进程pid
        ,is_leader = 0          %% 队长标识0:不是1:是
        ,is_ready = 0           %% 是否匹配0:取消匹配|1:开始匹配
        ,help_type = 0          %% 0非协助|1协助
        ,add_times = 0          %% 增加的副本次数
        ,daily_times = 0        %% 今天参加次数
        ,help_times = 0         %% 助战次数
        ,is_dummy = 0           %% 假人标志 0不是|1假人|2玩家的假人镜像
        ,is_first = 0           %% 副本是否首通
        ,attr_list = []         %% 基础属性列表
        ,skills = []            %% 技能
        ,skills_passive = []    %% 被动技能
        ,typical_data = #{}
        ,action_lock = 0        %% 是否处于其他活动中(仅在队员处于队伍中才更新状态锁数据)
        ,guard_dun_pass = []    %% 守卫信标通关记录
    }).


%% 多人副本组队配置
-record(base_dun_multi_team_cfg, {
        type = 0,               %% 跨服组队活动类型
        type_name = "",         %% 活动类型名称
        sub_type = 0,           %% 活动子类型
        sub_type_name = "",     %% 活动子类型名称
        dun_id = 0,             %% 副本id
        scene = 0,              %% 场景id
        condition = []          %% 条件
    }).


