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

%% 存储当前正在参与活动玩家信息/玩家上线需要清除
-define(ETS_HOSTING_ROLE, ets_hosting_role).
%% 存储玩家的托管设置
-define(ETS_OFFLINE_HOSTING, ets_offline_hosting).

%% 托管人数上限，设定的这个值按照当前的服务器导量来讲，一般是不会达到的
%% 但是以防万一，设定该值
-define(OFFLINE_HOSTING_LIMIT,  1500).

%% 托管形式
-define(HOSTING_TYPE_ROLE,  1).  %% 真实玩家托管
-define(HOSTING_TYPE_DUMMY, 2).  %% 假人托管

%% 玩家的挂机设置
-record(ets_offline_hosting, {
    role_id     = 0,        %% 玩家id
    close_list  = [],       %% 设置忽略列表-初始默认全部开启，这里记录关闭的
    value       = 0,        %% 当前托管值
    u_time      = 0         %% 托管值更新时间
}).

%% 正在托管的玩家
-record(ets_hosting_role, {
    role_id = 0,            %% 玩家id
    mod     = 0,            %% 功能模块
    sub_id  = 0,
    mon_id  = 0             %% 如果是怪物托管，这里是怪物id
    , pid   = undefined     %% 托管执行进程
    , cost_value = undefined    %% 消耗的托管值
    , time = 0                  %% 开始时间
    , award = []                %% 奖励
}).

%% 玩家数据
-record(offline_hosting, {
    handler            %% 玩法代理
    , mod_id = 0       %% 功能id
    , behavior_ref     %% 行为定时器
    , log = []         %% 活动日志-首部第一个是当前参与的活动
    , ask_log_time  = 0%% 请求托管记录的时间，如果大于0 ，表明请求过，不在重复发送
}).

%% 怪物托管数据
-record(offline_hosting_dummy, {
    handler                     %% 玩法代理
    , module_id = 0             %% 功能id
}).

%% 活动记录
-record(offline_hosting_log, {
    key                         %% 活动主键{module_id,sub_id}
    , duration = undefined      %% 持续时间
    , cost_value = undefined    %% 消耗的托管值
    , time = 0                  %% 时间
    , award = []                %% 奖励
}).

%% 玩家登陆
-define(HOST_LOGIN,
    <<"SELECT close_list,value,u_time FROM offline_hosting_setting WHERE role_id=~p">>).
%% 更新托管值
-define(HOST_UPDATE_VALUE,
    <<"UPDATE offline_hosting_setting SET value=~p,u_time=~p WHERE role_od=~p">>).
%% 保存玩家数据
-define(HOST_SAVE_DATA,
    <<"REPLACE INTO offline_hosting_setting(role_id,close_list,value,u_time) VALUES(~p,'~ts',~p,~p)">>).
%% 加载托管玩家数据
-define(HOST_LOAD_DATA,
    <<"SELECT close_list,value,u_time FROM offline_hosting_setting WHERE role_id=~p">>).
%% 加载所有托管玩家
%%-define(HOST_LOAD_ALL,
%%    <<"SELECT pl.id,pl.accid,pl.accname,pl.last_logout_time,oh.close_list,oh.value,oh.u_time FROM offline_hosting_setting AS oh
%%    LEFT JOIN player_login AS pl ON oh.role_id=pl.id WHERE oh.value > 0">>).
%% 加载所有托管玩家
-define(HOST_LOAD_ALL,
    <<"SELECT role_id,close_list,value,u_time FROM offline_hosting_setting WHERE value > 0">>).
%% 保存一条托管记录
-define(HOST_SAVE_LOG,
    <<"INSERT INTO offline_hosting_log(role_id,module_id,sub_id,cost_value,award,duration,time) VALUES(~p,~p,~p,~p,'~ts',~p,~p)">>).
%% 加载20条托管记录
-define(HOST_LOAD_LOG,
    <<"SELECT module_id,sub_id,cost_value,award,duration,time FROM offline_hosting_log WHERE role_id=~p ORDER BY time DESC LIMIT 20">>).
%% 获得所有人的托管值数据
-define(HOST_GET_ALL_VALUE,
    <<"SELECT role_id,value FROM offline_hosting_setting">>).
%% 删除一个月前的托管日志
-define(HOST_CLEAN_LOG,
    <<"DELETE FROM offline_hosting_log WHERE time<~p">>).
%% 删除一个月前的托管设置
-define(HOST_CLEAN_HOSTING_SETTING,
    <<"DELETE FROM offline_hosting_setting WHERE u_time<~p">>).