|
@@ -3,15 +3,54 @@
|
|
|
namespace loyalsoft;
|
|
|
|
|
|
/**
|
|
|
- * 1. 初始化玩家数据结构
|
|
|
- * 2. 添加玩家数据同步功能.
|
|
|
- * 3. API:拉取最新任务数据
|
|
|
- * 4. API:领取任务奖励
|
|
|
- *
|
|
|
+ * 任务类型枚举 用于任务进度对比,参数传递.
|
|
|
*/
|
|
|
+class EnumTaskType extends Enum {
|
|
|
+
|
|
|
+ const CommanderLevelUpTo = 11;
|
|
|
+ const HeroLevelUpTo = 12;
|
|
|
+ const HeroGradeUpTo = 13;
|
|
|
+ const HeroSegmentNumberTo = 14;
|
|
|
+ const HeroSkillUnlock = 15;
|
|
|
+ const PassGateN = 21;
|
|
|
+ const passCarbonN = 22;
|
|
|
+ const PvPWinNumberTo = 31;
|
|
|
+ const PvPScoreTo = 32;
|
|
|
+ const UserPowerTo = 33;
|
|
|
+ const UserCollectScoreTo = 34;
|
|
|
+
|
|
|
+}
|
|
|
|
|
|
/**
|
|
|
- * Description of TaskProc
|
|
|
+ * 任务参数,用于任务进度判定逻辑
|
|
|
+ */
|
|
|
+class TaskParams {
|
|
|
+
|
|
|
+ public function __construct($_taskType, $_canshu1 = null, $_canshu2 = null) {
|
|
|
+ $this->taskType = $_taskType;
|
|
|
+ $this->canshu1 = $_canshu1;
|
|
|
+ $this->canshu2 = $_canshu2;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @var int 任务类型
|
|
|
+ */
|
|
|
+ public $taskType;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @var number 参数1
|
|
|
+ */
|
|
|
+ public $canshu1;
|
|
|
+
|
|
|
+ /**
|
|
|
+ * @var number 参数2
|
|
|
+ */
|
|
|
+ public $canshu2;
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+/**
|
|
|
+ * 任务模块
|
|
|
* @version
|
|
|
* 1.0.0 Created at 2017-11-3. by --gwang
|
|
|
* @author gwang (mail@wanggangzero.cn)
|
|
@@ -35,7 +74,9 @@ class TaskProc {
|
|
|
* @param req $req
|
|
|
*/
|
|
|
static function GetTaskInfo($req) {
|
|
|
-
|
|
|
+ // 刷新
|
|
|
+ // 返回
|
|
|
+ return Resp::ok($req->userInfo->game->task);
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -43,20 +84,76 @@ class TaskProc {
|
|
|
* @param req $req
|
|
|
*/
|
|
|
static function GetTaskReward($req) {
|
|
|
-
|
|
|
+ list($taskId) = $req->paras; # 提取参数: 任务id
|
|
|
+ $userTask = $req->userInfo->game->task;
|
|
|
+ # 根据任务类型分支不同任务容器 暂时未添加每日任务分支
|
|
|
+ my_Assert(StlUtil::dictHasProperty($userTask->taskListPlot, $taskId), ErrCode::task_no); #判断是否存在指定任务
|
|
|
+ isEditor() and $task = new TaskInfo();
|
|
|
+ $task = $userTask->taskListPlot->$taskId;
|
|
|
+ my_Assert($task->progress >= 1, ErrCode::task_progress_not_complete); # 判断任务进度是否已完成>=1f
|
|
|
+ #
|
|
|
+ $taskCfg = GameConfig::task_getItem($taskId); # 任务配置数据
|
|
|
+ my_Assert($taskCfg != null, ErrCode::err_const_no);
|
|
|
+ $ok = StoreProc::AddMultiItemInStore($req, $taskCfg->reward); # 发放任务奖励
|
|
|
+ my_Assert($ok == ErrCode::ok, $ok);
|
|
|
+ $task->rewardGeted = 1;
|
|
|
+ $req->userInfo->game->task = $userTask; # 回存,理论上不用
|
|
|
+
|
|
|
+ return Resp::ok(array(// # 返回
|
|
|
+ "gold" => $req->userInfo->game->gold,
|
|
|
+ "cash" => $req->userInfo->game->cash,
|
|
|
+ "tili" => $req->userInfo->game->tili,
|
|
|
+ "store" => $req->userInfo->game->store,
|
|
|
+ "task" => $req->userInfo->game->task
|
|
|
+ ));
|
|
|
}
|
|
|
|
|
|
// 每日任务, 自动刷新
|
|
|
//
|
|
|
//
|
|
|
+ // <editor-fold defaultstate="collapsed" desc="辅助方法-比对判断">
|
|
|
|
|
|
/**
|
|
|
* 检查任务条件是否达成
|
|
|
+ * @param TaskParams $taskParam Description
|
|
|
*/
|
|
|
- static function CheckTaskConditions() {
|
|
|
-
|
|
|
+ static function CheckTaskConditions($taskParam) {
|
|
|
+ $bUpdate = false;
|
|
|
+ foreach (req()->userInfo->game->task->taskListPlot as $tid => $task) {
|
|
|
+ $taskCfg = GameConfig::task_getItem($tid);
|
|
|
+ my_Assert($taskCfg != null, ErrCode::err_const_no); # 获取任务配置数据
|
|
|
+ if ($taskCfg->tasktype != $taskParam->taskType) { # 任务类型必须匹配
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ isEditor() and $task = new TaskInfo();
|
|
|
+ if (is_null($taskCfg->canshu1)) {
|
|
|
+ $task->progress = 1;
|
|
|
+ $bUpdate = true;
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ if ($taskCfg->canshu1 <= $taskParam->canshu1) {
|
|
|
+ if (is_null($taskCfg->canshu2)) {
|
|
|
+ $bUpdate = true;
|
|
|
+ $task->progress = 1;
|
|
|
+ } else {
|
|
|
+ if ($taskCfg->canshu2 <= $taskParam->canshu2) {
|
|
|
+ $bUpdate = true;
|
|
|
+ $task->progress = 1;
|
|
|
+ } else {
|
|
|
+ // 更新下进度, 具体细节待修订
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ // 进度更新,具体细节待修订
|
|
|
+ }
|
|
|
+ }
|
|
|
+ // meiri
|
|
|
+ if ($bUpdate) {
|
|
|
+ Resp::addTag("isTaskUpdated", true); # 附加tag信息, 任务有更新
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
+// </editor-fold>
|
|
|
//
|
|
|
// <editor-fold defaultstate="collapsed" desc="处理各种任务检测事务">
|
|
|
//
|
|
@@ -65,7 +162,8 @@ class TaskProc {
|
|
|
* 例如当指挥官等级提升的时候需要检查是否有任务达成
|
|
|
*/
|
|
|
static function OnUserLevelUp() {
|
|
|
-
|
|
|
+ $param = new TaskParams(EnumTaskType::CommanderLevelUpTo, req()->userInfo->game->level);
|
|
|
+ self::CheckTaskConditions($param);
|
|
|
}
|
|
|
|
|
|
//
|