基本结构
条件
完成或改变特定的条件,触发任务状态的改变,一般由各个系统触发;
任务
一般来说,当任务结束,也就是相应的条件完成,比如常见的主线、支线、每日、每周、委托、成就任务等
主要的配置项
Condition:
ConditionId | Type | Count | RelatedValue | Others |
条件Id | 触发类型 | 目标数量 | 关联值 | |
2 | 2 | 2 | 100 |
Type:
这个主要是设置相关的业务触发类型,不同的业务设置不同的值,这里建议将类型至少设置为ushort, 太小后期会出问题 ^ ^
Count:
目标值,当达到这个值时,任务完成 状态从 Active -> Complete
RelatedValue:
这个会根据不同的Type所在不同的Handler, 会有不同的处理方式,这里列举三种 1.完全匹配;2.部分匹配;3.比大小加部分匹配
条件的状态
public enum ConditionStatus
{Init = 0,Active = 10,Complete = 20
}
Task:
TaskId | ActiveConditionIds | TakeType | TakeConditionIds | DeliveryType | CompleteConditionIds |
任务Id | 激活条件 | 接取类型 | 接取条件 | 提交类型 | 完成条件 |
4 | 2 | 2 | 2 | 1 | 1 |
ActiveConditionIds:
激活任务的条件id列表,满足则任务进入 Active 状态,否则 处于 Init 状态
TakeType:
当任务处于Active 状态时 根据这个类型判断 是 自动接取、手动接取、或NPC接取才进入Take 状态
TakeConditionIds:
接取任务的条件id列表,满足则 进入Take 状态 和 TakeType一起使用
DeliveryType:
任务处于Complete 状态时 根据这个状态判断 是 自动提交、手动提交、或NPC提交才进入Delivery 状态
CompleteConditionIds:
完成任务的条件id列表,满足则进入 Delivery 状态 和 DeliveryType 一起使用
任务的状态
public enum TaskStatus
{Init = 0,Active = 10,Take = 20,Complete = 30,Delivery = 40,
}
这里建议将状态的枚举值设置的大一些,方便后期插入一些特殊的状态,要不然需要改许多已经写好的东西,踩过坑的都懂的为啥 ^ ^
状态说明
Active:
1.标志任务出现等结合业务
Take:
1.相关功能的开启关闭
2.任务条件开始被处理
Complete:
1.相关功能的开启关闭
2.任务关联的条件不再改变
Delivery:
1.一般这个状态发奖,像成就,可以结合配置手动领取奖励,主线可以自动发奖等;
2.相关功能的开启关闭