%%-----------------------------------------------------------------------------
%% @Module  :       limit_goal.hrl
%% @Author  :       WJQ
%% @Created :       2019-03-29
%% @Description:    限时目标头文件
%%-----------------------------------------------------------------------------

%% 活动开启等级
-define(LIMIT_GOAL_LV, 		120).

%% 激活目标类型
-define(GOAL_ID_ONE,		1).		%% 第一轮限时目标
-define(GOAL_ID_TWO,		2).		%% 第二轮限时目标

%% 任务完成状态
-define(UNFINISH,           0).		%% 未完成
-define(FINISH,             1).		%% 已完成未领取
-define(HAS_RECEIVE,        2).		%% 已领取

%% 数据库写入状态
-define(WSTATUS_SUCCESS,    1).		%% 写入成功
-define(WSTATUS_WAIT,       2).		%% 待写入

-define(SAVE_DB_CD,         10).    %% 写入数据库CD时间（秒）

%% 目标配置
-record(limit_goal_main, {
	goal_id 		= 0,			%% 目标id
	model_name 		= "",			%% 展示模型名称
	model_id 		= 0,			%% 展示模型id
	jump_cfg 		= [],			%% 跳转配置
	skill_id 		= 0,			%% 展示技能id
	skill_desc 		= "",			%% 展示技能描述
	precondition 	= [],			%% 解锁条件
	activate		= [],			%% 激活条件
	countdown 		= 0				%% 倒计时
}).

%% 任务配置
-record(limit_goal_task, {
	goal_id			= 0,			%% 目标id
	task_id			= 0,			%% 任务id
	task_desc		= "",			%% 任务描述
	finish_condition = [],			%% 完成条件
	reward			= [],			%% 任务奖励
	click_jump		= []			%% 点击前往配置
}).

%% 星魂配置
-record(limit_goal_soul, {
	goal_id 		= 0,			%% 目标id
	soul_id			= 0,			%% 星魂id
	soul_name		= "",			%% 星魂名字
	need_finish 	= 0,			%% 所需完成任务数量
	attr			= []			%% 星魂属性
}).

%% 目标完成状态
-record(main_status, {
	goal_id			= 0,			%% 目标id
	status 			= 0,			%% 完成状态 0:未完成 1:已完成未领取 2:已领取
	task_list		= [],			%% 本目标任务完成列表 [#task_status{},...]
	open_time		= 0				%% 目标开放时间
}).

%% 任务完成状态
-record(task_status, {
	goal_id			= 0,			%% 目标id
	task_id			= 0,			%% 任务id
	progress		= 0,			%% 当前进度
	status 			= 0,			%% 完成状态 0:未完成 1:已完成未领取 2:已领取
	extra 			= [],			%% 额外数据
	write_time		= 0,			%% 最近一次更新写入数据库的时间
	write_status 	= 0				%% 写入状态 1:写入成功 2:待写入
}).

%% 星魂状态
-record(limit_goal_soul_status, {
	sum_attr		= 0,			%% 总属性
	soul_list		= []			%% 星魂列表 #limit_goal_soul_list{}
}).

%% 星魂列表
-record(limit_goal_soul_list, {
	goal_id 		= 0,			%% 目标id
	soul_attr 		= []			%% 星魂属性列表
}).

%% 星魂属性
-record(limit_goal_soul_attr, {
	soul_id 		= 0,			%% 星魂id
	attr 			= []			%% 星魂属性
}).

%% ========================================================== SQL ==========================================================
-define(SELECT_LIMIT_GOAL_MAIN, <<"SELECT `goal_id`, `status`, `open_time` FROM `limit_goal_main` WHERE `role_id` = ~p">>).
-define(SELECT_LIMIT_GOAL_TASK, <<"SELECT `goal_id`, `task_id`, `progress`, `status`, `extra` FROM `limit_goal_task` WHERE `role_id` = ~p">>).

-define(INSERT_LIMIT_GOAL_TASK, <<"INSERT INTO `limit_goal_task` (`role_id`, `goal_id`, `task_id`, `progress`, `status`, `extra`) VALUES (~p, ~p, ~p, ~p, ~p, '~s')">>).
-define(REPLACE_LIMIT_GOAL_MAIN, <<"REPLACE INTO `limit_goal_main` (`role_id`, `goal_id`, `status`, `open_time`) VALUES (~p, ~p, ~p, ~p)">>).

-define(UPDATE_LIMIT_GOAL_TASK, <<"UPDATE `limit_goal_task` SET `progress` = ~p, `status` = ~p, `extra` = '~s' WHERE `role_id` = ~p AND `goal_id` = ~p AND `task_id` = ~p">>).
-define(UPDATE_LIMIT_GOAL_TASK_STATUS, <<"UPDATE `limit_goal_task` SET `status` = ~p WHERE `role_id` = ~p AND `goal_id` = ~p AND `task_id` = ~p">>).