protected MList<FightRound> m_cacheList; // 缓存的战斗数据列表 public FightMsgMgr(SceneDZData data) { m_sceneDZData = data; m_curFightData = null; m_curParseRound = null; m_cacheList = new MList<FightRound>(); }
// 一个战斗回合结束 public void onOneRoundEnd(IDispatchObject dispObj) { Ctx.m_instance.m_logSys.fightLog("[Fight] 结束一场战斗回合,将要开始下一场战斗回合攻击"); m_curFightData = null; nextOneAttactRound(); }
protected MList <FightRound> m_cacheList; // 缓存的战斗数据列表 public FightMsgMgr(SceneDZData data) { m_sceneDZData = data; m_curFightData = null; m_curParseRound = null; m_cacheList = new MList <FightRound>(); }
// 一个操作结束 public void psstNotifyBattleFlowEndUserCmd(ByteBuffer bu) { Ctx.m_instance.m_logSys.fightLog("[Fight] 接收到战斗回合结束指令"); if (m_curParseRound.bHasFightData) // 说明有真正的攻击数据 { m_cacheList.Add(m_curParseRound); // 结束的时候才添加,因为现在有很多只有开始和结束的消息,没有战斗的消息 m_curParseRound.bSvrRoundEnd = true; m_curParseRound = null; // 设置成空值 nextOneAttactRound(); // 真正有消息数据的时候,才开始下一场战斗 } }
// 一个操作开始 public void psstNotifyBattleFlowStartUserCmd(ByteBuffer bu) { Ctx.m_instance.m_logSys.fightLog("[Fight] 接收到战斗回合开始指令"); // 如果是空值才申请,否则就直接使用 if (m_curParseRound == null) { m_curParseRound = new FightRound(m_sceneDZData); m_curParseRound.addRoundEndHandle(onOneRoundEnd); //m_cacheList.Add(m_curParseRound); } }
protected void nextOneAttactRound() { if (m_curFightData == null) // 如果当前没有攻击进行 { if (m_cacheList.Count() > 0) // 如果有攻击数据 { m_curFightData = m_cacheList[0]; m_cacheList.Remove(m_curFightData); m_curFightData.nextOneAttact(); } } }