UML视图
任务的配表设置
主要参数简化如下:
代码命名 |
变量意义 |
填表示例 |
Id |
任务id |
|
#name |
任务名字 |
“副本挑战” |
icon |
任务图标 |
Image_task_id |
#describe |
任务描述 |
“快来挑战副本” |
type |
任务类型 |
主线/支线/日常/成就/… |
point |
各类型特有参数 |
进度/null/活跃点/成就点/… |
receiveLevel |
接取(解锁)等级 |
|
previousID |
前置任务ID |
|
contentType |
点击事件枚举 |
与NPC对话/打开界面/进入活动 |
contentArgs |
点击事件参数 |
NPC的ID/界面ID/活动ID |
conditionType |
任务完成条件类型 |
对话/升级/获取物品/指定操作/… |
conditionX |
完成条件参数X |
|
conditionY |
完成条件参数Y |
|
finishType |
任务完成领取奖励方式 |
自动完成/与NPC对话/用户点击 |
finishDescribe |
完成后的任务描述 |
“挑战成功,找{0}领奖” |
reward(简化后结构) |
任务完成奖励 |
|
记录这样的一个结构为 CfgTask。
考虑读取需求,除了直接通过 ID 获取任务外,用的次多的应该是通过 Type 获取所有该类型任务。所以存储时除了通过一个 _taskDic:Dictionary 存储,用Id-->CfgTask外。再建立一个Dictionary,用 Type—>CfgTask数组,数组顺序无意义。示意如下:
这样的双字典引用方式对于查找引用可以快速定位,而对于任务的顺序性在前段并不关注。
CfgTaskMgr中主要读取方法有:
/**通过Id获取任务基础数据*/
public function getCfgTaskById($id:int):CfgTask
/**获取某类型在接取等级范围内的所有数据*/
public function getAllTaskByType($type:int,$minLevel:int=-1, $maxLevel:int=-1):Array