竞技场功能 - sgtcloud/sgtcloud-ossgame-project-zero GitHub Wiki

竞技场功能

由于竞技场中双方都是英雄,也有敌我之分,但与原有英雄就是英雄,敌人就是敌人的逻辑有相似和冲突的地方,所以就对其进行了重构。

  1. 增加ArenaPlayerData并继承PlayerDataClass(由原静态PlayerData改造成继承cc.Class),重写了init、initPlayerData方法。并在Player.js 中增加 PlayerDataClass.create方法返回指定的角色数据(PlayerDataClass实例或者子类实例)
  2. 增加ArenaHero并 继承 Hero (由原静态Hero改造成继承cc.Class),重写了ctor、isDead、_validateLocked、calcProp,上下文中增加当前英雄所在角色的playerId,增加生命值初始化为当前最大值。
  3. 改造HeroUnit,增加onClear、并将原有ctor中代码剥离到initHero、initTombstone、bindListeners等方法中。
  4. 增加ArenaHeroUnit并继承HeroUnit,并重写了ctor、bindListeners、onEnter、onDead、onDamaged、onMove、onClear方法,增加getArenaHeroRandomSkill 随机获取当前英雄一个主动技能。
  5. ActiveSkill增加playerId(释放技能英雄所在角色id) 优化updateTargets,如果是竞技战中(通过battleField中arenaBattle布尔值区分)通过当前释放技角色id区分敌我,其他还是原有逻辑
  6. 在battleField中增加缓存原有英雄数据(this.tempHeroUnits),竞技后恢复原有英雄数据,比如buffIcon,血量等。
  7. 对竞技场事件处理,三个事件分别为WIN_ARENA_BATTLE、LOSE_ARENA_BATTLE、UPDATE_STATISTICS。由于普通战斗和竞技场实在一个界面里,所以需要做一些特殊操作,比如不能随便加血等。