UNPKG

2.74 kBMarkdownView Raw
1# 任务系统
2
3## 概述
4
5任务系统实现任务配置的读入、监控任务的完成情况、显示任务列表、领取任务奖励等流程
6
7## 目录结构
8
91. 任务管理类
10
11任务管理类是 assistant 类的子类:
12facade/model/assistant/task.js
13
14```js
15const facade = require('gamecloud');
16
17class 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,为用户登记任务完成记录:'达成通关新的关卡'
33user.baseMgr.task.Execute(em_Condition_Type.gateMaxNo, 1, em_Condition_Checkmode.add);
34```
35
362. 任务配置表: 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
54let newCondition = ['condition001', 9001];
55facade.const.AddConditionType(...newCondition);
56```
57
58注: facade.const.ResType 定义了所有的可用奖励类型,可使用如下语句增添新的定义:
59```js
60//用户自定义资源类型取值范围 9001~9999
61let newRes = ['res001', 9001];
62facade.const.AddResType(...newRes);
63```
64
653. 任务管理控制器
66facade/control/CoreOfLogic/task.js
67
68```js
69class 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```