%%-----------------------------------------------------------------------------
%% @Module  :       fishing
%% @Author  :       lhy
%% @Email   :       liuhouying73@qq.com
%% @Created :       2018-09-25
%% @Description:    钓鱼系统
%%-----------------------------------------------------------------------------

%% 玩家钓鱼信息
-record(fishing,
       {
        lv = 1,                         %% 钓鱼等级
        mastery = 0,                    %% 熟练度
        fish_rod_usage_count = [],      %% 鱼竿总剩余使用次数
        fish_illu_map = #{},            %% 鱼鉴 {illu_id => #illu_info{}}
        attr = [],                      %% 属性
        fishing_gear_select = [],       %% 渔具选择
        fish_basket = [],               %% 鱼筐记录
        log_cache = []                  %% 日志缓存
}).

-record(illu_info,
       {
        illu_id = 0,                    %% 鱼鉴id
        illu_lv = 0                     %% 鱼鉴等级
  }).

-record(fishing_gear_select,
       {
       fishing_rod_id = 0,              %% 选择的渔具ID
       bait_id = 0,                     %% 选择的鱼饵ID
       hooked_fish_id = 0               %% 已上钩的鱼类ID
}).

-record(log_cache,
       {
       scene_id = 0,                    %% 钓鱼场景ID
       water_area = 0,                  %% 水域距离
       maunal_or_auto = 0,              %% 是否自动 1-手动  2-自动
       rods_usage_cost = 0,             %% 鱼竿使用次数消耗
       energy_cost = 0                  %% 活力值消耗
}).

%% --------------------------------- 配置 -------------------------------------------
%% 鱼类配置
-record(base_fish,
       {
        id = 0,                         %% 序号ID
        fish_id = 0,                    %% 鱼类ID
        name = "",                      %% 名称
        quality_type = 0 ,              %% 品质类型
        hook_probability = 0,           %% 上钩概率 -万分比
        range_of_balance = 0,           %% 平衡范围
        distri_water_area = []          %% 分布水域 [{1,2,3}]
}).

% 渔具配置
-record(base_fishing_gear,
	   {
	    id = 0,                           %% 序号ID
	    fishing_gear_id = 0,              %% 渔具ID
	    fishing_gear_type = 0,            %% 渔具类型 1-鱼竿 2-鱼饵
	    quality_type = 0,                 %% 品质类型
	    name = "",                        %% 名称
	    price = [],                       %% 价格 [{type, goods_id, num}]
	    usage_count = 0,                  %% 使用次数
	    probability = [],                 %% 概率加成
	    incr_mastery = 0                  %% 熟练度增加值
}).

%% 钓鱼等级
-record(base_fishing_lv,
       {
        id = 0,                         %% 序号ID
        lv = 0,                         %% 钓鱼等级
        mastery = 0,                    %% 熟练度
        no_comsume_rod_pro = 0,         %% 不消耗鱼竿次数的概率
        no_comsume_energy_pro = 0,      %% 不消耗活力概率
        fish_quality_pro = []           %% 鱼类品质加成
       }).

%% 钓鱼场景
-record(base_distri_scene,
       {
       id = 0,                          %% 序号ID
	     distri_scene_id = 0,             %% 场景ID
	     scene_name = "",                 %% 名称
       scene_type = 0,                  %% 场景类型 1-野外场景 -其它
       transfer_coordinate = [],        %% 传送坐标
	     coordinate = [],                 %% 场景中心坐标
	     near_water_area = [],            %% 近水域鱼类
	     far_water_area = [],             %% 远水域鱼类
	     middle_water_area = [],          %% 中水域鱼类
	     open_role_lv = 0,                %% 开放等级
	     open_mastery_lv = 0,             %% 钓鱼开放等级
       home_fish_pond_lv = 0            %% 家园鱼塘开放等级
}).

%% 钓鱼键值配置
-record(base_fishing_key_value,
       {
        id = 1,                         %% 序号ID
        key = "",                       %% 键
        value = 0,                      %% 值
        describe = ""                   %% 描述
}).

%% 图鉴类型
-record(base_fish_illustrated_type,
       {
        type = 0,                       %% 类型
        name = "",                      %% 名字
        comment = ""                    %% 备注
  }).

%% 鱼鉴配置
-record(base_fish_illustrated,
       {
        id = 0,                         %% 鱼鉴id
        type = 0,                       %% 鱼鉴类型
        name = "",                      %% 鱼鉴名称
        quality = 0,                    %% 鱼鉴品质
        active_condition = [],          %% 激活消耗
        photo_id = ""                   %% 图片资源
}).

%% 鱼鉴升级
-record(base_fish_illustrated_lv,
       {
        id = 0,                         %% 鱼鉴id
        lv = 0,                         %% 等级
        attr = [],                      %% 属性
        cost = []                       %% 升级消耗
}).

%%-------------------------------------------------------------------------------------------------

%% 钓鱼状态
-define(ACT_FISHING,         1).        %% 处于钓鱼状态
-define(NO_ACT_FISHING,      0).        %% 未处于钓鱼状态

%% 钓鱼动作
-define(ACT_ID,[0,1,2,3,4,5,6,7,8]).    %% 钓鱼动作序号

%% 钓鱼类型
-define(MAUNAL,              1).        %% 手动钓鱼
-define(AUTO,                2).        %% 自动钓鱼

%% 概率
-define(RATIO,           10000).        %% 万分比
-define(PERCENTAGE,        100).        %% 百分比
-define(AVERAGE,          5000).        %% 平均权重

%% 键值对
-define(ENERGY_COST,   consume).        %% 单次钓鱼活力消耗值
-define(SUCCESS_PROB,     rate).        %% 自动钓鱼成功的概率
-define(FREE_RODS,   free_rods).        %% 免费鱼竿id
-define(FREE_BAIT,   free_bait).        %% 免费鱼饵id

%% 水域
-define(NEAR,                1).        %% 近水域
-define(MIDDLE,              2).        %% 中水域
-define(FAR,                 3).        %% 远水域

%% 渔具类型
-define(RODTYPE,             1).        %% 鱼竿类型
-define(BAITTYPE,            2).        %% 鱼饵类型

%% 收杆验证
-define(SUCCEED,             1).        %% 收杆成功
-define(FAILURE,             0).        %% 收杆失败

%% 场景类型
-define(WILD_SCENE,          1).        %% 野外场景类型
-define(HOME_SCENE,         18).        %% 家园鱼塘场景类型

%% 钓鱼更新
-define(PLUS,                1).        %% 加法
-define(MINUS,               0).        %% 减法
-define(FISHNUM,             1).        %% 钓鱼数量
-define(MINUSNUM,            1).        %% 消耗使用次数
-define(FISHINGTIME,      3600).        %% 钓鱼保护时长上限(秒)
-define(INF,         999999999).        %% 熟练度上限

%% 水域类型
-define(MAUNAL_WATER_AREA,         [4,2,1]).  %% 手动钓鱼可选水域类型 4-远 2-中 1-近
-define(AUTO_WATER_AREA,   [4,2,1,3,5,6,7]).  %% 自动钓鱼可选水域类型 4-远 2-中 1-近 3-中近 5-远近 6-远中 7-远中近

%% SQL执行语句
-define(sql_player_fishing_select, <<"select `lv`,`mastery`,`fish_rod_usage_count` from `player_fishing` where `role_id` = ~p">>).
-define(sql_player_update_fish_rod, <<"update `player_fishing` set `fish_rod_usage_count` = '~s' where `role_id` = ~p ">>).
-define(sql_player_fishing_replace, <<"replace into `player_fishing` (`role_id`,`lv`,`mastery`,`fish_rod_usage_count`) values(~p,~p,~p,'~s')">>).
-define(sql_fish_illustrated_insert, <<"replace into `fish_illustrated` (`role_id`, `illustrate_id`, `lv`) VALUES (~p, ~p, ~p)">>).
-define(sql_fish_illustrated_select, <<"select `illustrate_id`,`lv` from `fish_illustrated` where `role_id` = ~p">>).
