游戏任务模块的前段主体实现逻辑示例

 

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

模型中的数据存储与读取

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值