%% ---------------------------------------------------------------------------
%% @doc server.hrl
%% @author ming_up@foxmail.com
%% @since  2016-04-06
%% @deprecated 功能性record保存在独立文件就可以了，在mod_login:server_login处初始化
%% ---------------------------------------------------------------------------
-define(ETS_ONLINE, ets_online).                    % 在线列表
-define(ETS_ROLE_FUNC_CHECK, ets_role_func_check).  % 玩家在线功能定时检测超时的数据

%% #player_status.mark 用法
-define(MARK_SELF_CHARGE, 2#00000001).          %% 自充值标记
-define(CHECK_MARK_WITH(Mark, CheckMark), Mark band CheckMark > 0).
-define(ADD_MARK(OldMark, Mark), OldMark bor Mark).
-define(REMOVE_MARK(OldMark, Mark), OldMark band (bnot Mark)).

%% ets_role_func_check中的FuncType类型定义
-define(FUNC_TYPE_FASHION,            fashion).     %% 时装
-define(FUNC_TYPE_DESIGNATION,    designation).     %% 称号
-define(FUNC_TYPE_VIP,                    vip).     %% vip
-define(FUNC_TYPE_SUP_VIP,            sup_vip).     %% 贵族
-define(FUNC_TYPE_MIDNIGHT_LOG,  midnight_log).     %% 跨天在线日志记录
-define(FUNC_TYPE_BUFF,   goods_buff_time_out).     %% 物品buff过期
-define(FUNC_TYPE_RUSH_RANK_LV,  rush_rank_lv).     %% 开服冲榜等级榜

%% 玩家身上的过期时间检查
-record(ets_role_func_check, {
        key_id = {0, 0},                            % {RoleId, FuncType} 每分钟检查一次
        end_times = []                              % 结束时间列表|或者结束时间点:例如称号功能[{称号id, 结束时间}...]
    }).

%% 只为玩家统计用的，不要加别的字段进来了
-record(ets_online, {
        id  = 0,                                    % 角色id
        pid = 0,                                    % 玩家进程
        sid = undefined                             % 发送进程
    }).

%%记录用户一些常用信息
-record(player_status, {
        id = 0,                                     % 角色在本服id
        server_id = 0,                              % 角色所在的服务器id
        platform = "",                              % 平台标示
        server_num = 0,                             % 所在的服标示
        server_name = <<>>,                         % 选择服务器的名字
        reg_server_id = 0,                          % 选择服务器的服id
        accid = 0,                                  % 平台账号id
        accname = [],                               % 平台账号
        acc_roles = [],                             % 同一账号下的角色id列表
        source="",                                  % 渠道来源
        login_time_before_last = 0,                 % 上一次登陆时间
        last_login_time = 0,                        % 最后登陆时间
        last_logout_time = 0,                       % 上一次退出游戏时间(unixtime，秒)
        comeback_state = 0,                         % 玩家封测回归状态

        socket = none,                              % socket

        c_rename = 0,                               % 是否可以免费改名
        c_rename_time = 0,                          % 上次改名时间(unixtime，秒)

        ip = "",                                    % ip地址 如 "0.0.0.0"
        network_type = 0,                           % 网络类型(0:未知网络|1:wifi网络|2:4g网络)
        online = 1,                                 % 是否真实在线 0:离线;1:在线;2离线挂机中

        figure=undefined,                           % 角色独有外观信息#figure{}(include/figure.hrl)
        battle_attr=undefined,                      % 基础战斗属性#battle_attr{}(include/attr.hrl)

        gold = 0,                                   % 钻石
        bgold = 0,                                  % 绑钻
        fgold = 0,                                  % 粉钻
        coin = 0,                                   % 铜钱
        bcoin = 0,                                  % 绑定铜钱
        gcoin = 0,                                  % 公会货币 废弃
        gfame  = 0,                                 % 社团贡献
        honour = 0,                                 % 名望券
        chat  = undefined,                          % 聊天设置 #status_chat{}
        chat_limit_new = [],                        % 角色聊天次数监控
        skill = undefined,                          % 技能 #status_skill{}(include/skill.hrl)

        scene = 0         :: non_neg_integer(),     % 场景id
        scene_pool_id=0,                            % 场景进程id（一般在跨服或者单进程无法承载的时候使用，默认为0）
        copy_id = 0,                                % 同一场景不同房间标示（可以数字，字符串任意）
        pre_scene_time = 0,                         % 准备切换场景时间(在野外或者pk场景需要原地等待5秒)
        fin_change_scene = 0,                       % 完成切换场景(0否|1是)
        change_scene_num = 0,                       % 切换场景次数
        fin_change_scene_ref = none,                % 完成切换场景定时器引用(设置默认超时时间)
        y = 0,                                      % x坐标(px)
        x = 0,                                      % y坐标(px)
        longitude = 0,                              % 经度
        latitude = 0,                               % 纬度
        last_load_scene = 0,                        % 最近load的场景（用于检测是否全新进入场景，避免复活或其他load_scene操作影响）
        last_load_pool = 0,                         % 最近load的场景分线（用于检测是否全新进入场景，避免复活或其他load_scene操作影响）
        old_scene_info = undefined,                 % 存储可能需要回到的上一个场景位置 {OldScene, OldScenePooldId, OldCopyId, OldX, OldY}
        reconnect=0,                                % 活动玩法中重连 0否| 1正常登录重连| 2relogin重连

        pid = undefined,                            % 玩家服务进程

        exp = 0,                                    % 角色当前经验
        exp_lim = 0,                                % 当前等级经验上限
        exp_list = 0,                               % 角色等级经验列表 [{type, exp}|...] 列表数量控制在20条
        talk_lim= 0,                                % 是否被禁言(0否,1是)
        talk_lim_type = 0,                          % 禁言类型
        talk_lim_time = 0,                          % 禁言截止时间
        quickbar = undefined,                       % 技能快捷栏，#quickbar{}
        team = undefined,                           % 队伍记录,登录会初始化为#status_team{} include/team.hrl

        cell_num = 0,                               % 背包格子数
        storage_num = 0,                            % 仓库格子数

        last_att_main = 0,                          % 上次主技能出手时间（只计人物出手，用于限制出手频率，判断技能间公共cd）(ms)
        last_att_time = 0,                          % 上次主动攻击的时间（技能有选定目标进行释放，含人物其他战斗单位出手）(ms)
        last_be_att_time = 0,                       % 上次被攻击的时间(ms)
        last_be_kill = [],                          % 上一次击杀我的玩家信息(用于玩家上线0血提示)[{sign, 1|2}, {name, Name}, {lv, Lv}]

        can_att_list = [],                          % 可攻击对象 [{对象类型, 对象列表}]   eg:[{?BATTLE_SIGN_MON, [怪物配置Id]}, {?BATTLE_SIGN_PLAYER, [玩家ID: 空则表示所有]}]
        cannot_beatt_list = [],                     % 不可被攻击对象 [{对象类型, 对象列表}]

        is_pay = false,                             % 是否有充值，true为有充值
        last_pay_time = 0,                          % 最后充值时间
        reg_time = 0,                               % 注册时间
        sid = undefined,                            % 异步广播进程

        change_scene_sign = 0,                      % 排队换线标志
        leave_scene_sign = 0,                       % 离开场景标志(某些活动在进入排队前就已经切换成离开场景标识) 这种状态下不能攻击和受到玩家攻击
        counter_pid = none,                         % 玩家终生次数处理进程
        combat_power = 0,                           % 战斗力
        hightest_combat_power = 0,                  % 历史最高战斗力
        hightest_combat_power_cd = 0,               % 历史最高战斗力cd结束时间戳
        role_base_attr,

        daily_growth = #{},                         % 当日0点成长 #{0 => 最高战力, 1 => 时装星数(激活算1星)}

        picture_lim = 0,                            % 是否允许提交头像 0:不禁止,1:禁止
        npc_info = [],                              % npc信息([{NpcId, IsShow, SceneId, X, Y}])

        player_buff = undefined,                    % 玩家身上的BUFF
        buff_attr = undefined,                      % BUFF属性
        goods_buff_exp_ratio = 0,                   % 物品buff经验加成（实数）
        logout_expire_buff_exp_info = {0,0},        % 下线期间过期的经验药水信息 {经验药水物品类型Id, 过期时间戳}
        exp_ratio = 0,                              % 经验加成数值
        exp_dun_drop_ratio = 0,                     % 放置经验加成数值(万分比)

        dsgt_status = undefined,                    % 称号状态 格式:#dsgt_status{}
        guild = undefined,                          % 公会 格式:#status_guild{}
        status_pet = undefined,                     % 宠物 格式:#status_pet{}
        status_child = undefined,                   % 孩子 格式:#status_child{}
        wardrobe = undefined,                       % 衣橱 格式:#status_wardrobe{}
        setting = undefined,                        % 设置 格式:#status_setting{}
        off = undefined,                            % 离线数据(用于查看面板) 格式:#status_off{}
        dungeon = undefined,                        % 副本 格式#status_dungeon{}
        dun_multi = undefined,                      % 多人副本 格式#role_dun_multi{}
        follows = [],                               % 跟随玩家列表
        follow_target_xy={0,0},                     % 跟随目标xy
        follow_target_conut=0,                      % 坐标变更次数
        status_pushmail = undefined,                % 邮件推送 格式#status_pushmail{}
        vip_status = undefined,                     % vip 格式#vip_status{}
        revive_status = undefined,                  % 死亡CD 格式 #revive_status{}

        recharge_status = undefined,                % 充值    格式#recharge_status{}
        recharge_act_status = undefined,            % 充值活动 格式#recharge_act_status{}
        quick_recharge  = [],                       % 快速充值信息 [{ProductId, MoneyGap}...]

        resource_back = undefined,                  % 资源找回
        flower = undefined,                         % 鲜花 格式 #flower
        dress_up = undefined,                       % 个性装扮  格式 #status_dress_up{}
        client_ver = 0,                             % 客户端版本号
        transform_data = 0,                         % 转职数据 #transform_info{}
        degree = undefined,                         % 境界学位 #degree{}
        role_achievement = undefined,               % 成就等级 #role_achievement{}
        guild_skill = undefined                    % 公会技能学习 #status_guild_skill{}

        ,dungeon_record = undefined                 % 副本记录 #{DunId, RecData}
        ,help_type_setting = undefined              % 副本助战设置
        ,arena_battle_pid = undefined               % 竞技战场进程
        %% 行为互斥锁 当前在某个活动中的时候，不能参与别的活动，无锁的时候为free 其余为:Code :: integer()
        ,action_lock = free
        %% 注意：行为互斥锁加锁必须在lib_player:setup_action_lock/2进行加锁
        %% 解锁必须在lib_player:break_action_lock/2 进行解锁
        %% 上线会有修复操作，在野外的互斥状态可能会被修复lib_player:repair_action_lock/1，要注意!!!

        ,top_pk = undefined                         % 巅峰竞技
        ,guild_war = undefined                      % 公会争霸 格式 #guild_war_status{}
        ,currency_map = undefined                   % 特殊货币#{}
        ,login_reward = undefined                   % 登录奖励
        ,fly_state = 0                              % 小飞鞋状态
        ,forbid_pk_etime = 0                        % 玩家禁止释放技能状态结束时间戳
        ,last_task_id = 0                           % 上一次完成的主线任务id
        ,mate_role_id = 0                           % 配对玩家id 目前是海滩约会对象的id 默认为0
        ,battle_field = undefined                   % 战场信息  #{mod_lib => ModLib, pid => Pid}
        ,role_auction = undefined                   % 拍卖系统 格式 #status_auction{}
        ,local_boss = undefined                     % boss 格式 #status_local_boss{}
        ,role_3v3 = undefined                       % 3v3数据 格式 #role_3v3{}
        ,role_drum = undefined                      % 钻石大战 格式 #role_drum{}

        ,act_label = []                             % 活动标识 [{K,V}]

        ,kf_1vn = undefined                         % 跨服1vn 格式 #status_kf1vn{}
        ,fishing = []                               % 钓鱼 格式 #fishing{}
        ,live_skill = undefined                     % 生活技能 格式 #status_live_skill{}
        %% 定制活动
        ,status_custom_act = undefined              % 定制活动 #status_custom_act{}
        ,custom_act_investment = undefined          % 运营投资活动
        ,overflow_gift = #{}                        % 超值礼包信息
        ,te_status = undefined                      % 幸运鉴宝#te_status{}
        ,daily_turntable = undefined                % 每日活跃转盘
        ,spec_sell_act = #{}                        % 精品特卖
        ,cloud_buy_list = []                        % 众仙云购
        ,rush_rank = undefined                      % 开服冲榜 格式 #status_rush_rank{}
        ,joy_wish = undefined                       % 欢乐许愿 格式 #joy_wish{}
        ,draw_record = undefined                    % 抽奖记录 格式 #draw_record{}
        ,vip_bag_onsale = undefined                 % VIP特惠 格式 #vip_bag_onsale{}
        ,lucky_flop = undefined                     % 幸运翻牌 格式 #lucky_flop{}
        ,cumulative_charge = undefined              % 累充
        ,pellet = undefined                         % 弹珠活动
        ,treasure_house = undefined                 % 珍宝阁数据

        ,investment = undefined                     % 投资活动
        ,mark = 0                                   % 特殊记号 0无 1自充值账号
        ,scene_att_objects = []                     % 场景攻击方对象ID列表 [#scene_att_object{}]
        ,limit_goal = #{}                           % 限时目标 格式 #{}
        ,limit_goal_soul = undefined                % 限时目标星魂 格式 #limit_goal_soul_status{}
        ,supplication = undefined                   % 祈愿 格式 #supplication{}
        ,module_advance = []                        % 功能预告
        ,turn_task_id = 0                           % 当前转生任务id
        ,equipment = undefined                      % 装备
        ,role_coupon = undefined                    % 社交每日票券
        ,role_foster = undefined                    % 进阶系统库
        ,role_foster_skin = undefined               % 珍宝库
        ,guild_task  = []                           % 社团劳务
        ,guild_shop  = undefined                    % 社团商店
        ,profile_photo_info = []                    % 角色头像数据 #profile_photo_info{}
        ,mate      = undefined                      % 羁绊/伙伴
        ,role_marble = undefined                    % 弹珠 #role_marble{}
        ,exp_dun_achieve = []                       % 经验副本里程碑数据
        ,market_data = 0                            % 角色交易市场数据 #market_data{}
        ,chat_simulation                            % 模拟聊天数据
        ,exp_dun_drop = undefined                   % 放置经验数据
        ,guild_collect = undefined                  % 社团午间采集
        ,role_fashion = undefined                   % 时装
		,role_liveness = undefined                  % 活跃度
		,welfare     = undefined                    % 福利大厅
        ,role_visus  = undefined                    % 幻光
        ,goods_devour = undefined                   % 吞噬
        ,role_dance  = 0
        ,role_nucleon = undefined
        ,role_motion                                % 运动行为
        ,last_behavior = 0                          % 玩家最后一次行为
        ,role_convoy                                % 护送
        ,role_dun_visus = []                        % 幻光副本
        ,role_lattice = undefined                   % 器灵寻宝-走格子 #role_lattice{}
        ,role_lattice_shop = undefined              % 器灵寻宝-格子商店 #role_lattice_shop{}
		,capsule_egg = undefined                    % 龙神扭蛋
        ,recharge_statistic                         % 充值统计
        ,role_dun_guard = []                        % 塔防副本
        ,role_dun_pet = undefined                   % 宠物副本数据
        ,race_rank = undefined                      % 角色竞榜活动数据#role_race_rank{}
        ,role_god = undefined                       % 唤神
        ,offline_hosting  = undefined               % 离线托管
        ,cross_guild_war = undefined                % 跨服帮战
        ,role_god_dun = undefined                   % 唤神副本相关
        ,role_galaxy  = undefined                   % 星辰系统
        ,role_single_charge = []                    % 单笔充值辅助数据
        ,beauty_contest = undefined                 % 靓丽大赛数据
        ,role_dun_galaxy_chapter = []               % 星辰副本-章节信息#role_chapter_info{}
        ,role_camp_war = undefined                  % #role_camp_war{}
        ,role_war_soul = undefined                  % 战魂系统
        ,role_uranium = undefined                   % 魂力系统
        ,role_first_top = []                        % 排行榜目标奖励领取数据
        ,role_rank_praise = []                      % 排行榜点赞数据
        ,passive_skills = []                        % 被动技能列表
        ,seven_days_goal = undefined                % 七日目标数据 #seven_days_goal{}
        ,role_legion = undefined                    % 战团数据
        ,role_cross_point= undefined                % 跨服沙盘-据点争夺战
        ,overlord_privilege = undefined             % 霸主特权数据 #overlord_info{}
        ,role_treasure_map = undefined              % 人物藏宝图数据
        ,boss_first_blood = []
        ,equipment_task = #{}
        ,task_daily = undefined                     %跑环类每日领取情况
        ,dance = undefined                         % 舞姿
        ,role_guild_run_assist = undefined              % 社团跑环协助
        ,killed_pos = []
        ,tower_dun_star = #{}                       % 爬塔副本星数奖励状态
        ,role_dun_child = undefined                 % 宝宝副本数据
        ,status_workroom = undefined                % 时装工坊
        ,reb_protect_time = 0                       % 赏金boss免战时间
        ,reb_protect_ref  = []                      % 赏金boss免战定时器
        ,deb_protect_time = 0                       % 星域幻魔免战时间
        ,deb_protect_ref  = []                      % 星域幻魔免战定时器
        ,mobilize_combat_power  = 0                 % 全民动员战力
        ,role_act_reserve = #{}                     % 活动预约
        ,diamond_pk = #{}                           % 钻石擂台个人数据        
		,client_event = []                          % 前端引导事件##[{key, value}]

        
        ,role_exp_sea = undefined                   % 经验海 
        ,role_currencywish = undefined              % 货币祈愿角色数据

}).

