其他分享
首页 > 其他分享> > 资源道具化

资源道具化

作者:互联网

概念

概念:系统中的每一个资源分配一个唯一标识。

举例:金币、钻石、道具、礼包、勋章、英雄、英雄碎片、活动积分、表情等。

中间层:处理资源增减请求。


举例

签到为例

graph LR A[签到请求] -->B{是否可签} B -->|yes| D[读取奖励配置] D --> E1[直接获得奖励] --> 结束 D --> E2[提出资源增加请求] --> 结束 style E1 stroke:Orange,stroke-width:4px style E2 stroke:Red,stroke-width:4px

红色要优于橙色。

红线逻辑,签到模块不关心奖励是怎么加上去的。

中间层处理资源

graph LR A[资源增减请求] -->B{增加or减少} B -->|增加| D{不同的类型} D --> E1[加金币] D --> E3[加英雄碎片] --> 调用背包模块 D --> E2[加英雄] E2 -..-> |没有该英雄| F1[调用英雄模块] E2 -..-> |有该英雄 不允许分解| F1 E2 -..-> |有该英雄 允许分解| F2[读取碎片数 发起加碎片请求] -..-> A

中间层实现了增减资源的操作。

两张表

资源表

id type desc ext...
资源ID唯一标识 不同的类型 描述 一些扩展字段

签到表

day id count
第几天 资源ID 数量

需求扩展

需求:签到给英雄,如果玩家已经拥有该英雄,则改为给3个英雄碎片。

实现:兑换表:英雄、英雄碎片、兑换个数。把自动拆为碎片的逻辑放入中间层,签到模块不用关心。

需求:如果玩家获得A道具100次,获得S勋章。获得3次S勋章,达成Y成就。

实现:勋章表:道具、收集次数。成就表:勋章、收集次数。

增加道具时,对应计数+1。判断是否触发勋章获得的条件,如果达成,增加对应的勋章。

增加勋章时,对应计数+1。判断是否触发成就获得的条件,如果达成,增加对应的成就。

道具、勋章、成就,都资源化,无差别对待。根据资源表中的type,做不同逻辑。

不同的模块,可以复用这套逻辑。

需求:签到给积分,积分可以兑换英雄碎片。

实现:积分作为一种资源,分配一个ID,对接兑换模块。

兑换模块,先发起减请求,再发起加请求。


总结

标签:勋章,--,道具,签到,英雄,模块,资源,E2
来源: https://www.cnblogs.com/txtp/p/16448442.html