%%%-------------------------------------------------------------------
|
|
%%% @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 %% 是否在线
|
|
}).
|
|
|