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

这篇博客详细介绍了游戏任务模块的前端实现逻辑,包括UML视图、任务配置、模型中的数据存储与读取、与服务器通信的协议定义及处理。重点讲解了双字典存储结构用于快速定位任务数据,以及如何处理服务器推送的消息,确保界面更新的流畅性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

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

模型中的数据存储与读取

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值