入口:消息ID  "world.march"

     函数:MarchWorldPoint


 1、在入口函数中做一系列检查;

class AbstractWorldMarch

2、WorldMarchFactory.newWorldMarch() 根据不同的类型,创建不同的march实例

3、worldMarch.march()
public ISFSObject march()
World.getInstance().getWorldMarchScheduleService().schedule(Task)
 执行具体的对战逻辑,传入WorldMarch 实例作为Task参数
(延迟执行,延迟时间为行军时间)

onMarchSuccessfully()调用子类的重载函数

ALLIANCE_TEAM_BATTLE:AllianceBattleLeaderMarchTask
KINGDOM_TEAM_BATTLE:KingdomBattleLeaderMarchTask
DRAGON_BATTLE_BARRACKS:KnightHallMarchTask
其它对战类型:
NormalMarchTask  现以此为例分析,其它对战类型最终也是使用这个逻辑
checkMarch():检查能否出征
setWorldMarch():new一个WorldMarch实例
updateWorldMarch():调用子类的重载函数刷新出征纪录
WorldFightHandlerFactory.create(worldMarch)
根据不同的对战类型,创建不同的WorldFightHandler
public abstract class AbstractWorldFightHandler
abstractWorldFightHandler.handle()
public void handle()->_handle()
handleBeforeFight()调用子类的重载函数
checkMarch()做检查,函数最后调用子类的check()
needFight()判断是否需要战斗
fightResult = fight()
根据战斗结果,调用子类的handleWin()/handleFail()/handleDraw()
pushParseInfo()发送战报
getDefGeneralArmy()加载防守方队伍
 其它逻辑判断
 集结双方队伍
fightManager = new PVPFightManager()
abstract class AbstractFightManager

设置fightManager相关参数

fightReport = fightManager.getFightReport()
public ISFSObject getFightReport()
calculateFightReport()进行战斗,计算战报
 战斗后处理
1

1

2019-09-04 11:13:14 0 14
这里是评论

相关推荐