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

-define(MATE_INFO_SEND,    1).   %% 我发出的
-define(MATE_INFO_RECEIVE, 2).   %% 我收到的

-define(MATE_RESPONSE_YES, 1).  %% 回应：同意
-define(MATE_RESPONSE_NO,  2).  %% 回应：拒绝

-define(MATE_READY_YES, 1).  %% 准备
-define(MATE_READY_NO,  2).  %% 取消准备

-define(MATE_RELIEVE_DEAL,  1).   %% 协议解除
-define(MATE_RELIEVE_FORCE, 2).   %% 强制解除

-define(MATE_ACT_RHYTHM_MASTER,  1).    %% 节奏大师
-define(MATE_ACT_CATCH_BALL,     2).    %% 抛接球
-define(MATE_COUNTER_INVITE,     3).    %% 拍照邀请次数
-define(MATE_COUNTER_BE_INVITED, 4).    %% 拍照次数

%% 羁绊日常
-define(MATE_OBJECT_NUMBER, 4).    %% 4名羁绊对象
-define(MATE_STRANGER_NUMBER, 2).  %% 2名路人

-define(MATE_OBJECT, 1).      %% 羁绊对象
-define(FRIEND_OBJECT, 2).    %% 朋友
-define(STRANGER_OBJECT, 3).  %% 路人

%% 任务类型
-define(TASK_TYPE_1, 1).  %% 送花
-define(TASK_TYPE_2, 2).  %% 私聊
-define(TASK_TYPE_3, 3).  %% 赠送羁绊点
-define(TASK_TYPE_4, 4).  %% 分享羁绊
-define(TASK_TYPE_5, 5).  %% 赠送交易券

%% 奖励状态
-define(REWARD_STATE_0, 0).  %% 未完成
-define(REWARD_STATE_1, 1).  %% 未领取
-define(REWARD_STATE_2, 2).  %% 已领取



%% 记录玩家登出时间
-define(ETS_ROLE_LOGOUT_TIME, ets_role_logout_time).

-record(role_mate, {
    mate_list = []      %% 羁绊对象
    , mate_daily = []   %% 羁绊日常
    , boat_stage = 1    %% 小船阶级
    , boat_star = 1     %% 小船星级
    , boat_exp = 0      %% 小船经验值
    , wear_mate = 0     %% 佩戴的羁绊称号对象
    , attr = []         %% 总属性
    , extra_power = 0   %% 额外战力
    , total_power = 0   %% 总战力
    , newbee = 0        %% 新手奖励
}).

-record(mate_info, {
    id = 0          %% 羁绊玩家id
    , remarks = <<>>   %% 备注
    , title = <<>>  %% 羁绊称号(自定义) 由对方设置 你的XX
    , time = 0      %% 结交时间戳
    %% 亲密度数据可由好友系统获取
    , anniversary = [] %% 纪念日
    %% 玩法次数由计数器统计
}).
%%---------------------------------------------------------------------
%% @doc 羁绊管理器数据结构
%%---------------------------------------------------------------------
-record(mate_mgr, {
    mate_ask_msg = []             %% 请求羁绊数据
    
    , mate_relieve_msg = []       %% 解除羁绊数据
    
    , mate_act = []               %% 活动数据
    
    , mate_hall = []              %% 交友大厅
    , mate_hall_ref
    
    , mate_take_photo = []        %% #mate_take_photo{}
}).
%% 羁绊消息
-record(mate_message, {
    key,               % 主键：{玩家A, 玩家B}，玩家id以升序排列
    from_role = 0,     % 请求发起方
    type = 0,          % 类型：1请求|2解除
    time = 0           % 时间
}).

%% 活动日常
-record(mate_act, {
    key                     % 唯一 {玩家A, 玩家B}，玩家id以升序排列
    , from_role = 0         % 唯一 发起邀请的玩家
    , act_id = 0            % 活动id 当前是哪个活动
    , is_ready = []         % 准备好的玩家
    , time = 0
    , daily_score = []      % 玩家当日最佳成绩
    , data                  % 活动具体数据：不同活动自定义
}).

%% 节奏大师活动数据
-record(mate_rhythm_master, {
    tap_role = 0            % 当前可点击玩家
    , music_id = 0          % 曲谱id
    , bit_group = []        % 剩余拍点组
    , bit_id = []           % 剩余拍点id
    , score = 0             % 积分-- 实数/注意需要取整
    , double_hit = 0        % 连击数
    , max_double_hit = 0    % 最大连击数
    , exist_bit = []        % 存在的拍点，拍打的存在才计算分数
    , base_bit_score = 0         % 单次点击得分
    , base_double_hit_score = 0  % 连击单位分
    , ref_bit               % 流程切换定时器
    , ref_end               % 结束定时器
}).
%% 抛接球活动数据
-record(mate_catch_ball, {
    catch_role = 0          % 当前可点击玩家
    , catch_time = 0        % 击球时刻
    , hits = 0              % 击球次数
    , ref                   % 流程切换定时器
}).

%% 交友玩家
-record(mate_hall_role, {
    id = 0
    ,declaration = ""	%% 交友宣言
    ,type = 0			%% 发布类型， 1普通发布|2置顶发布
    ,time = 0			%% 发布时间
}).
%% 拍照玩法
-record(mate_take_photo, {
    id          = 0     %% 邀请者玩家id
    , invite    = []    %% 受邀玩家
    , time      = 0     %% 邀请时间
    , position  = 0     %% 拍照地点
}).
-record(mate_take_photo_role, {
    role_id     = 0         %% 玩家id
    , is_accept = 0         %% 是否接受邀请
    , is_ready  = 0         %% 是否准备好
}).

%% 羁绊日常
-record(mate_daily, {
    time             = 0    %% 上次刷新时间
    , rela_info      = []   %% [{role_id, task_id, progress, state}}]
    , stranger_info  = []   %% [role_id]
}).
%%---------------------------------------------------------------------
%% @doc 数据库
%%---------------------------------------------------------------------
-define(SQL_MATE_GET_ALL_MATE, <<"select other,remarks,title,time,anniversary from mate_info where role_id=~p">>).
-define(SQL_MATE_GET_MATE_TITLE, <<"select other,title from mate_info where role_id=~p">>).
-define(SQL_MATE_UPDATE_MATE_TITLE, <<"update mate_info set title=~ts where role_id=~p and other=~p">>).
-define(SQL_MATE_SAVE_ONE_MATE, <<"replace into mate_info(role_id,other,remarks,title,time,anniversary) values(~p,~p,~p,~ts,~p,~ts)">>).
-define(SQL_MATE_DELETE_ONE_MATE, <<"delete from mate_info where role_id=~p and other=~p">>).

-define(SQL_MATE_GET_MATE_ROLE_INFO, <<"select boat_stage,boat_star,boat_exp,wear_mate,newbee from mate_role where role_id=~p">>).
-define(SQL_MATE_SAVE_MATE_ROLE_INFO, <<"replace into mate_role(role_id,boat_stage,boat_star,boat_exp,wear_mate,newbee) values(~p,~p,~p,~p,~p,~p)">>).
-define(SQL_MATE_UPDATE_WEAR_MATE, <<"update mate_role set wear_mate=~p where role_id=~p and wear_mate=~p">>).

-define(SQL_MATE_GET_HALL, <<"select role_id,type,declaration,time from mate_hall">>).
-define(SQL_MATE_SAVE_HALL, <<"replace into mate_hall(role_id,type,declaration,time) values(~p,~p,'~ts',~p)">>).
-define(SQL_MATE_DEL_HALL, <<"delete from mate_hall where time<~p">>).
-define(SQL_MATE_REMOVE_HALL, <<"delete from mate_hall where role_id=~p">>).

-define(SQL_MATE_GET_DAILY_INFO, <<"select `time`, `stranger` from `mate_daily_info` where `role_id` = ~p">>).
-define(SQL_MATE_UPDATE_DAILY_INFO, <<"replace into mate_daily_info(role_id, time, stranger) values (~p,~p,~ts)">>).
-define(SQL_MATE_SELECT_DAILY_TASK_INFO, <<"select `mate_id`, `task_id`, `progress`, `state` from `mate_task_info` where role_id = ~p">>).
-define(SQL_MATE_UPDATE_TASK_ONE, <<"update `mate_task_info` set `progress`=~p, `state`=~p where `role_id`=~p and `mate_id`=~p">>).
-define(SQL_MATE_UPDATE_DAILY_TASK, <<"insert into `mate_task_info` (`role_id`,`mate_id`,`task_id`,`progress`,`state`) values ~ts">>).
-define(SQL_MATE_DELETE_DAILY_TASK, <<"delete from mate_task_info where role_id = ~p">>).

-define(SQL_SELECT_ROLE_IDS, <<"select `id`, `last_logout_time` from `player_login`">>).
%%---------------------------------------------------------------------
%% @doc 配置
%%---------------------------------------------------------------------
%% 羁绊-友谊的小船
-record(base_mate_boat, {
    stage,
    star,
    name,
    exp,
    attr,
    picture,
    goods_id
}).
%%
-record(base_mate_rhythm_master_music, {
    music_id,
    name,
    bgm,
    move,
    bit_group,
    time
}).

-record(base_mate_rhythm_master_bit, {
    bit_group,
    bit_id,
    bit_position,
    pre_time
}).

-record(base_mate_photo_pos, {
    id = 0,
    scene_id = 0,
    my_xy = [],
    others_xy = []
}).

-record(base_mate_daily_task, {
    task_id = 0,
    type = 0,
    count = 0,
    object = [],
    reward = []
}).