业务调研
1 关卡是游戏中非常重要的游戏内容。也是引导玩家游戏的主线。
类设计
类图/数据结构
l HumanMisssionManager玩家身下绑定一个关卡任务管理器。记录玩家创建的场景、当前所属场景的Id、今天击败过的敌人Id。
l MissionStageInstance为一个关卡地图的抽象实例。MissionStage为一个关卡的实例模板。
l MissionStageEnenmyInstance为关卡中敌人的抽象。MissionEnemy为关卡中敌人的模板。
l MissionStageState为存储了关卡的完成状态:
n UNOPEN:未开启
n OPNE:已开启,前置关卡通过
n PASS:已通过,关底Boss击败
n CLEAR:已全清,全部敌人击败
n TERMINATE:已终结,全清并领取了奖励;
实现逻辑
玩家点击进行关卡地图,切换地图时效性发送。
CGEnterMissionStage:目标关卡地图Id,来自地图关卡ID
GCEnterMissionStage:这是一个复杂的数据结构。包含本场景的id名称、完成度等信息还包括前置、后续信息和当前关卡的敌人信息等内容。
该模块还涉及到的信令:
l CG_Attack_enemy客户端请求攻击敌人
l Cg_show_enemyRecord请求特定敌人的攻略记录
l Gc_show_enemy_record请求特定敌人的攻略记录
l Cg_get_mission_bonus 领取关卡过关奖励
l Gc_get_mission_bonus领取关卡过关奖励
l Cg_check_force_attack_price请求强攻价格
l Gc_check_force_attack_price 请求强攻价格
l Cg_force_attack_enemy 强攻敌人
l Cg_show_mission_target_panel 显示关卡目标面板
l Gc_show_mission_target_panel 显示关卡目标面板
持久化逻辑
l 战报存储
数据库t_mission_enemy_info表格。存储了玩家对关卡敌人的完成情况(攻略)
在MissionService中启动了一个定时事件,在该事件中每间隔一个小时去调用存储一次对某个敌人的战报。
l 关卡完成度存储
关卡的完成度存储是对应于数据库t_character_info类中的missionPack字段中。跟随玩家的存储策略进行一并存储。