1 | # 任务系统
|
2 |
|
3 | ## 概述
|
4 |
|
5 | 任务系统实现任务配置的读入、监控任务的完成情况、显示任务列表、领取任务奖励等流程
|
6 |
|
7 | ## 目录结构
|
8 |
|
9 | 1. 任务管理类
|
10 |
|
11 | 任务管理类是 assistant 类的子类:
|
12 | facade/model/assistant/task.js
|
13 |
|
14 | ```js
|
15 | const facade = require('gamecloud');
|
16 |
|
17 | class task extends facade.Assistant {
|
18 | /**
|
19 | * 构造函数
|
20 | * @param {BaseUserEntity} parent 代表用户的角色对象
|
21 | */
|
22 | constructor(parent) {
|
23 | //指定角色表中的'task'字段为任务管理的持久化字段
|
24 | super(parent, 'task');
|
25 | }
|
26 | }
|
27 | ```
|
28 |
|
29 | 如果 user 是角色类的实例,那么 user.baseMgr.task 将指向任务管理类的实例:
|
30 |
|
31 | ```js
|
32 | //在逻辑流程的合适地方,调用 user.baseMgr.task 的接口方法 Execute,为用户登记任务完成记录:'达成通关新的关卡'
|
33 | user.baseMgr.task.Execute(em_Condition_Type.gateMaxNo, 1, em_Condition_Checkmode.add);
|
34 | ```
|
35 |
|
36 | 2. 任务配置表: config/data/task.json
|
37 |
|
38 | ```json
|
39 | {
|
40 | "1001": //任务编号
|
41 | {
|
42 | "id":"1001", //任务编号
|
43 | "condition":"20,3", //任务条件设定,格式为"条件类型,条件阈值[;条件类型,条件阈值]"
|
44 | "bonus":"1,10", //任务奖励设定,格式为"奖励类型,奖励数量[;奖励类型,奖励数量]"
|
45 | "front":"0", //任务的前置任务设定,直接引用任务编号(逗分字符串)
|
46 | "layer":"0" //任务的嵌套层次
|
47 | }
|
48 | }
|
49 | ```
|
50 |
|
51 | 注: facade.const.em_Condition_Type 定义了所有的可引用任务类型,可使用如下语句增添新的定义:
|
52 | ```js
|
53 | //用户自定义任务类型取值范围 9001~9999
|
54 | let newCondition = ['condition001', 9001];
|
55 | facade.const.AddConditionType(...newCondition);
|
56 | ```
|
57 |
|
58 | 注: facade.const.ResType 定义了所有的可用奖励类型,可使用如下语句增添新的定义:
|
59 | ```js
|
60 | //用户自定义资源类型取值范围 9001~9999
|
61 | let newRes = ['res001', 9001];
|
62 | facade.const.AddResType(...newRes);
|
63 | ```
|
64 |
|
65 | 3. 任务管理控制器
|
66 | facade/control/CoreOfLogic/task.js
|
67 |
|
68 | ```js
|
69 | class task extends baseCtl {
|
70 | async list(user, objData){
|
71 | return {
|
72 | code: ReturnCode.Success,
|
73 | data: user.baseMgr.task.getList(objData.type, objData.status)
|
74 | }
|
75 | }
|
76 |
|
77 | async getBonus(user, objData){
|
78 | return {
|
79 | code: ReturnCode.Success,
|
80 | data: user.baseMgr.task.getBonus(objData.id)
|
81 | }
|
82 | }
|
83 | async getInfo(user,objData){
|
84 | return {
|
85 | code: ReturnCode.Success,
|
86 | data: user.baseMgr.task.getTaskObj(objData.id)
|
87 | }
|
88 | }
|
89 | }
|
90 | ```
|