prerequisite_condition_group_id) { return ConditionGroupService::getConditionItems($task->prerequisite_condition_group_id); } return []; // 没有前置条件 } /** * 获取任务的达成条件列表 * * @param Task $task 任务模型 * @return array 达成条件列表 */ public static function getAchievementConditions(Task $task): array { // 优先使用条件组 if ($task->achievement_condition_group_id) { return ConditionGroupService::getConditionItems($task->achievement_condition_group_id); } // 回退到旧版条件 return self::getLegacyAchievementConditions($task); } /** * 检查用户是否满足任务前置条件 * * @param int $userId 用户ID * @param Task $task 任务模型 * @return bool 是否满足前置条件 */ public static function checkPrerequisiteConditions(int $userId, Task $task): bool { if ($task->prerequisite_condition_group_id) { $result = ConditionService::checkCondition($userId, $task->prerequisite_condition_group_id); return $result['success'] ?? false; } return true; // 没有前置条件 } /** * 检查用户是否满足任务达成条件 * * @param int $userId 用户ID * @param Task $task 任务模型 * @return bool 是否满足达成条件 */ public static function checkAchievementConditions(int $userId, Task $task): bool { if ($task->achievement_condition_group_id) { $result = ConditionService::checkCondition($userId, $task->achievement_condition_group_id); return $result['success'] ?? false; } // 回退到旧版条件检查 $conditions = self::getLegacyAchievementConditions($task); if (empty($conditions)) { return true; // 没有达成条件 } // TODO: 实现旧版条件检查逻辑 return true; } /** * 获取任务达成条件的进度 * * @param int $userId 用户ID * @param Task $task 任务模型 * @return array 条件进度信息 */ public static function getAchievementProgress(int $userId, Task $task): array { if ($task->achievement_condition_group_id) { // TODO: 实现条件组进度获取逻辑 return []; } // 回退到旧版条件进度 $conditions = self::getLegacyAchievementConditions($task); if (empty($conditions)) { return []; } // TODO: 实现旧版条件进度获取逻辑 return []; } /** * 获取旧版任务达成条件 * * @param Task $task 任务模型 * @return array 达成条件列表 */ private static function getLegacyAchievementConditions(Task $task): array { $taskConditions = TaskAchievementCondition::where('task_id', $task->id)->get(); $conditions = []; foreach ($taskConditions as $condition) { $conditions[] = [ 'condition_type' => $condition->condition_type, 'condition_param' => $condition->condition_param, 'target_value' => $condition->target_value, 'is_required' => $condition->is_required, 'sort_order' => $condition->sort_order, ]; } return $conditions; } /** * 检查任务是否使用前置条件组 * * @param Task $task 任务模型 * @return bool 是否使用前置条件组 */ public static function isUsingPrerequisiteConditionGroup(Task $task): bool { return !empty($task->prerequisite_condition_group_id); } /** * 检查任务是否使用达成条件组 * * @param Task $task 任务模型 * @return bool 是否使用达成条件组 */ public static function isUsingAchievementConditionGroup(Task $task): bool { return !empty($task->achievement_condition_group_id); } /** * 获取任务前置条件的显示信息 * * @param Task $task 任务模型 * @return array 前置条件显示信息 */ public static function getPrerequisiteConditionsDisplay(Task $task): array { $conditions = self::getPrerequisiteConditions($task); $display = []; foreach ($conditions as $condition) { $display[] = [ 'type' => $condition['condition_type'], 'param' => $condition['condition_param'], 'target' => $condition['target_value'], 'display_name' => self::getConditionDisplayName($condition), ]; } return $display; } /** * 获取任务达成条件的显示信息 * * @param Task $task 任务模型 * @return array 达成条件显示信息 */ public static function getAchievementConditionsDisplay(Task $task): array { $conditions = self::getAchievementConditions($task); $display = []; foreach ($conditions as $condition) { $display[] = [ 'type' => $condition['condition_type'], 'param' => $condition['condition_param'], 'target' => $condition['target_value'], 'display_name' => self::getConditionDisplayName($condition), ]; } return $display; } /** * 获取条件的显示名称 * * @param array $condition 条件数据 * @return string 显示名称 */ private static function getConditionDisplayName(array $condition): string { // 这里可以根据条件类型返回不同的显示名称 // 具体实现需要根据游戏的条件类型来定义 return "条件类型{$condition['condition_type']} 目标值{$condition['target_value']}"; } }