# 任务系统改版设计 - 收集与狩猎任务 **日期**: 2026-04-15 **状态**: 已批准 ## 概述 将每日任务从"挂机等待完成"改为"主动收集/狩猎完成"模式,收集任务收集指定数量物品完成,狩猎任务狩猎指定数量怪物完成。 ## 后端改动 ### 1. DailyMissionDto 新增字段 ```csharp public class DailyMissionDto { // 现有字段... public MissionType MissionType { get; set; } // 任务类型:收集/狩猎 public MissionDifficulty Difficulty { get; set; } // 难度 public List Progresses { get; set; } // 任务目标列表 public int CurrentProgress { get; set; } // 当前完成进度 public int TargetProgress { get; set; } // 目标进度 } public class MissionProgressDto { public int MissionProgressId { get; set; } public ProgressTargetType TargetType { get; set; } public int? TargetItemId { get; set; } public string? TargetItemName { get; set; } public int TargetCount { get; set; } public int CurrentCount { get; set; } } ``` ### 2. 任务进度更新API **API**: `POST /api/god/mission/{missionId}/progress` **请求体**: ```json { "progressType": "CollectItem" | "KillMonster", "itemId": 1, // 可选,收集物品时需要 "monsterId": 1, // 可选,狩猎怪物时需要 "count": 1 } ``` **逻辑**: - 检查角色是否有进行中的任务需要该类型进度 - 更新 CharacterMissionProgress 表 - 如果目标达成,自动标记进度完成 - 如果所有进度完成,标记任务完成(状态变为待领取) ### 3. 每日任务生成逻辑调整 现有逻辑已包含难度分配(Normal/Hard/Purgatory),只需确保: - 生成任务时同时生成 MissionProgress 记录 - 收集任务的 TargetType = CollectItem - 狩猎任务的 TargetType = KillMonster --- ## 前端改动 ### 1. 页面结构 移除轮播图组件,改为卡片网格布局: - 单列卡片列表,最大宽度 480px - 卡片高度自适应 ### 2. 卡片样式 **普通/困难难度**: - 背景: `rgba(255,255,255,0.02)` - 边框: 1px solid,颜色根据任务类型 - 圆角: 12px **炼狱难度**: - 使用 ElectricBorder 组件 - 边框颜色: #dc2626 - 带发光效果 ### 3. 颜色方案 | 任务类型 | 难度 | 边框颜色 | |---------|------|---------| | 收集任务 | 普通 | #22c55e (绿色) | | 收集任务 | 困难 | #16a34a (深绿) | | 收集任务 | 炼狱 | ElectricBorder #15803d | | 狩猎任务 | 普通 | #ef4444 (红色) | | 狩猎任务 | 困难 | #f97316 (橙色) | | 狩猎任务 | 炼狱 | ElectricBorder #dc2626 | ### 4. 卡片内容 ``` ┌─────────────────────────────────────┐ │ [图标] 任务名称 [难度标签] │ │ 任务描述... │ │ ────────────────────────────────── │ │ 目标: 收集 5/10 灵草 │ │ ────────────────────────────────── │ │ 奖励: 💰100 ✨50 │ │ ────────────────────────────────── │ │ [接取] / [进行中] / [领取] │ └─────────────────────────────────────┘ ``` ### 5. 图标 - 收集任务: 用户提供的 SVG 图标 - 狩猎任务: 按难度区分 - 普通: 绿色怪物图标 - 困难: 橙色怪物图标 - 炼狱: 红色怪物图标(带发光) ### 6. 状态按钮 - 待接取: "接取" 按钮 - 进行中: "进行中" 按钮(禁用状态) - 待领取: "领取" 按钮 - 已领取: "已完成" 按钮(禁用状态) --- ## 实施顺序 1. 后端: 修改 DailyMissionDto,添加新字段 2. 后端: 添加任务进度更新 API 3. 后端: 调整每日任务生成逻辑,关联 MissionProgress 4. 前端: 更新 API 类型定义 5. 前端: 重写 DailyMissionView,移除轮播图,使用卡片布局 6. 前端: 添加 ElectricBorder 应用于炼狱难度卡片