%%%-------------------------------------------------------------------
%%% @author liushl
%%% @doc
%%%     跳一跳
%%% @end
%%%-------------------------------------------------------------------
-author("liushl").

-define(JUMP_ACT_TICKET, "666JKLSDFRTYABJK666").
%% 事件类型
-define(JUMP_ACT_EVENT_COMMON, 0).  %%
-define(JUMP_ACT_EVENT_MATCH,  1).  %% 匹配
-define(JUMP_ACT_EVENT_PLAY,   2).  %% 跳一跳
%% 玩法模式
-define(JUMP_ACT_PATTERN_SINGLE,   1).  %% 单人模式
-define(JUMP_ACT_PATTERN_MULTIPLE, 2).  %% 多人模式

-define(JUMP_ACT_PRC_DATA, jump_info).  %% 玩法数据

-define(JUMP_ACT_SCENE,       20010).   %% 活动场景
-define(JUMP_ACT_MATCH_TIME_4,  5  ).   %% 4人匹配开始时间
-define(JUMP_ACT_WAIT_TIME,     20 ).   %% 即使玩家没有进来，20秒后也强制开始
-define(JUMP_ACT_READY_TIME,    3  ).   %% 5秒倒计时开始
-define(JUMP_ACT_END_TIME,      5  ).   %% 5秒倒计时结束

-define(JUMP_ACT_JUMP_TIME,         custom_act_jump_act:data_cfg(jump_time, 15)).               %% 15秒跳跃超时
-define(JUMP_ACT_MAX_LIFE,          custom_act_jump_act:data_cfg(jump_life, 3)).                %% 每个人最大生命值
-define(JUMP_ACT_MAX_MATCH,         custom_act_jump_act:data_cfg(jump_day_max, 0)).             %% 每个人最大匹配次数
-define(JUMP_ACT_MAX_AWARD,         custom_act_jump_act:data_cfg(jump_everyday_times, 0)).      %% 每个人最大奖励次数
-define(JUMP_ACT_MATCH_MIN_NUM,     custom_act_jump_act:data_cfg(jump_min_num, 3)).             %% 最少开始人数
-define(JUMP_ACT_MATCH_MAX_NUM,     custom_act_jump_act:data_cfg(jump_max_num, 4)).             %% 最大开始人数
-define(JUMP_ACT_MATCH_WAIT_TIME,   custom_act_jump_act:data_cfg(jump_wait, 180)).              %% 达到最少人数后多久开始
-define(JUMP_ACT_SINGLE_LEFT,       custom_act_jump_act:data_cfg(jump_single_life, 100)).            %% 单人模式100条命
-define(JUMP_ACT_SINGLE_PLAY,       custom_act_jump_act:data_cfg(jump_single_everyday_times, 10)).   %% 单人模式每日匹配次数
%% 跳跃进度
-define(JUMP_PROGRESS_NONE, 0).     %% 未跳跃
-define(JUMP_PROGRESS_PRE,  1).     %% 准备跳跃
-define(JUMP_PROGRESS_JUMP, 2).     %% 跳跃中
%% 跳跃结果
-define(JUMP_ACT_JUMP_SUCCESS, 1).  %% 成功
-define(JUMP_ACT_JUMP_FAIL,    0).  %% 失败

%% 每日计数器
-define(JUMP_ACT_COUNTER_DAILY_COUNT, 1).
%% 终生计数器
-define(JUMP_ACT_COUNTER_LIFE_COUNT,  1).

%% 活动管理
-record(jump_act_center, {
    room_id       = 1     %% 房间编号-递增
    , act_data      = #{}   %% #{sub_type => #jump_act_act{}}
}).

-record(jump_act_act, {
    sub_type        = 0     %% 定制活动子类型
    , ref_state             %% 活动定时器
    , end_time      = 0     %% 单场活动结束
    
    , match_list    = []    %% 匹配列表：匹配成功后，房间数据存于进程字典
    , match_ref             %% 匹配成功倒计时：满3人后180s倒计时，
    , match_time    = 0     %% 匹配成功时间
    
    , temp_room     = []    %% 临时数据，存放离线时在玩法中的玩家信息[{role_id,room_id}|_]
    , rooms         = #{}
}).

%% 玩家管理
-record(jump_act_state, {
    sub_type        = 0     %% 定制活动子类型
    , ref_state             %% 活动定时器
    , end_time      = 0     %% 单场活动结束
    
    , match_list    = []    %% 匹配列表：匹配成功后，房间数据存于进程字典
    , match_ref             %% 匹配成功倒计时：满3人后180s倒计时，
    , match_time    = 0     %% 匹配成功时间
    , room_id       = 1     %% 房间编号-递增
    , temp_room     = []    %% 临时数据，存放离线时在玩法中的玩家信息[{role_id,room_id}|_]
}).

%% 台子
-record(jump_act_step, {
    x         = 0       %% 台子坐标
    , y         = 0
    , radius    = 0     %% 台子半径
    , model     = 0     %% 台子模型
}).

%% 房间数据 进程字典
-record(jump_act_room, {
    id          = 0         %% 房间编号
    , pattern   = 0         %% 模式：1单人|2多人
    , begin_time= 0         %% 开始时间
    , scene_pool= 0         %% 房间分线id
    , roles     = []        %% 参与玩家列表[#jump_act_role{}]
    , all_enter = []        %% 开始标识，为空的时候表明玩家全部进来
    , ref_act               %% 玩法定时器
                            %% 满4人后5s倒计时/15秒跳跃超时计时
    , round     = 0         %% 轮次
    , step_coming           %% 预告台子
    , step_foot             %% 当前脚下台子
                            %% 下一个台子
    , x         = 0         %% 下一个台子坐标
    , y         = 0
    , radius    = 0         %% 下一个台子半径
    , model     = 0         %% 下一个台子模型
    , step_end  = 0         %% 是否该地图最后一个台子
    
    , map_id    = 0         %% 地图id
    , jump_status = 0       %% 跳跃结果：1成功|0失败
    , jump_role = 0         %% 当前可跳跃玩家
    , jump_time = 0         %% 跳跃超时时间：15s超时
    , jump_progress = 0     %% 跳跃进度
}).

%% 玩家
-record(jump_act_role, {
    role_id         = 0     %% 玩家id
    , node          = 0     %% 节点信息
    , server_num    = 0     %% 服务器信息
    , figure                %% 玩家信息
    , life          = 0     %% 命
    , can_get_award = false %% 是否能获得奖励
    , award_info    = []    %% 结算奖励
    , stop_round    = 0     %% 止步轮次
    , rank          = 0     %% 排名
    , is_out        = 0     %% 是否已经离开活动场景：离开活动场景则结算
    , is_online     = 0     %% 是否在线
}).

