游戏中红点提醒模块设计

红点提醒的要求是达到条件需要在按钮上显示红点 提醒玩家操作
达到条件->显示红点 这是明显的观察者模式
“观察者”模式是我们在开发的时候经常需要用到的。使用Watch.js那么我们就可以实现在“每当对象属性改变的时候,执行你的函数”。
设计思路
按钮上绑定 注册监听 何时显示何时隐藏红点
操作后更新 操作响应/材料变化 变量更新

难点:
1.功能复杂的模块是层层嵌套的关系
比如:人物页签-装备子模块-神装子模块-1号装备位上可升级
这里当1号装备位可升级时 红点的出现和消失逻辑都需要一层层向上传递 
这种逻辑关系可以通过配置文件来生成代码 达到自动维护的目的

游戏中红点提醒模块设计_第1张图片

游戏中红点提醒模块设计_第2张图片

2.满足红点条件的一般有这么几类 消耗物品 角色等级 金币或钻石数目 开服日期 通关

其中消耗物品占比80% 针对这一类可再设计

我的做法是维护一张表 物品ID对应操作名称

在同步物品变化时check_item()找到对应的操作 在操作中check下一次是否满足红点显示

 mibao_upskill() {
    return ro.redpoints.client.mibao_upskill = Number(ro.role.mibao.check_enble_skillup(-1));
}

游戏中红点提醒模块设计_第3张图片

游戏中红点提醒模块设计_第4张图片

module ro {

export class ConstRedPoint {

public static MATERIAL3 = "client.Material3";

public static MATERIAL4 = "client.Material4";

public static MATERIAL6 = "client.Material6";

public static MATERIAL1 = "client.Material1";

public static MATERIAL5 = "client.Material5";

public static MATERIAL2 = "client.Material2";

public static EXPFUBEN1 = "client.ExpFuben1";

public static EXPFUBEN3 = "client.ExpFuben3";

public static EXPFUBEN2 = "client.ExpFuben2";

public static TOWERDAYREWARD = "client.TowerDayReward";

public static TOWERTURN = "client.TowerTurn";

public static TOWERPOINT = "client.TowerPoint";

public static DUOLICATE_MATERFUBEN = "client.duolicate_MaterFuben";

public static DUOLICATE_EXPFUBEN = "client.duolicate_ExpFuben";

public static DUOLICATE_TOWER = "client.duolicate_Tower";

public static ZHUZAO_UPLEVEL = "client.zhuzao_uplevel";

public static QIANGHUA_UPLEVEL = "client.qianghua_uplevel";

public static JINGLIAN_UPLEVEL = "client.jinglian_uplevel";

public static FORGE_CAST = "client.forge_cast";

public static FORGE_ENCHAN = "client.forge_enchan";

public static FORGE_CARD = "client.forge_card";

你可能感兴趣的:(编程心得)