| | |
| | | List<GameNetPackBasic> b421PackList = new List<GameNetPackBasic>(); |
| | | i++; // 跳过当前的B421包 |
| | | |
| | | // 收集所有非B421包,直到遇到下一个B421或队列结束 |
| | | for (; i < packQueueSnapshot.Count; i++) |
| | | { |
| | | GameNetPackBasic nextPack = packQueueSnapshot[i]; |
| | | if (nextPack is HB421_tagMCTurnFightObjAction) |
| | | { |
| | | // 遇到了其他B421 启动角色的Action开始, |
| | | // B421后再碰到B421一定是有一个人的行动结束了 回退一个位置 |
| | | i--; |
| | | i--; // 回退一个位置,留给外层循环处理 |
| | | break; |
| | | } |
| | | else |
| | |
| | | } |
| | | } |
| | | |
| | | // 可能没用了 主要就是利用一下skill的combine 暂留 看之后还有没有别的需求 |
| | | // 合并所有相关包 |
| | | CustomB421ActionPack actionPack = CustomB421ActionPack.CreateB421ActionPack(GetGUID(b421Pack.packUID), b421PackList); |
| | | |
| | | newPackList.Add(actionPack); |
| | |
| | | Debug.LogWarning($"连续空战斗片段封包次数:{continousEmptyCount}"); |
| | | if (continousEmptyCount >= MaxContinousEmptyCount) |
| | | { |
| | | BattleDebug.LogError("连续多次没有战斗片段封包,自动回城休息!"); |
| | | Debug.LogError("连续多次没有战斗片段封包,自动回城休息!"); |
| | | MainFightRequest(0); // 0-停止战斗回城 |
| | | continousEmptyCount = 0; |
| | | packQueue.Clear(); |
| | |
| | | continousEmptyCount = 0; // 有包就重置 |
| | | } |
| | | |
| | | |
| | | // b421跟b426的包已经处理完了 |
| | | packQueue = new Queue<GameNetPackBasic>(newPackList); |
| | | |
| | |
| | | // 专属于主线战斗的派发 |
| | | public bool DistributeNextPackage() |
| | | { |
| | | if (packQueue.Count > 0) |
| | | if (packQueue == null) |
| | | { |
| | | GameNetPackBasic pack = packQueue.Peek(); |
| | | |
| | | bool dequeue = false; |
| | | |
| | | if (pack is CustomHB426CombinePack) |
| | | { |
| | | CustomHB426CombinePack combinePack = pack as CustomHB426CombinePack; |
| | | packQueue.Dequeue(); |
| | | combinePack.Distribute(); |
| | | } |
| | | else if (pack is CustomB421ActionPack) |
| | | { |
| | | CustomB421ActionPack actionPack = pack as CustomB421ActionPack; |
| | | |
| | | dequeue = !actionPack.Distribute(); |
| | | } |
| | | else |
| | | { |
| | | BattleDebug.LogError("distribute pack " + pack.GetType().Name); |
| | | packQueue.Dequeue(); |
| | | PackageRegedit.Distribute(pack); |
| | | Debug.LogWarning("DistributeNextPackage: packQueue为空或已处理完毕"); |
| | | return false; |
| | | } |
| | | |
| | | if (dequeue && packQueue.Count > 0) |
| | | { |
| | | packQueue.Dequeue(); |
| | | } |
| | | |
| | | return true; |
| | | } |
| | | else |
| | | if (packQueue.Count <= 0) |
| | | { |
| | | return false; |
| | | } |
| | | |
| | | GameNetPackBasic pack = null; |
| | | try |
| | | { |
| | | pack = packQueue.Dequeue(); |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | Debug.LogError("DistributeNextPackage: Peek异常 " + ex); |
| | | return false; |
| | | } |
| | | |
| | | try |
| | | { |
| | | if (pack is CustomHB426CombinePack combinePack) |
| | | { |
| | | combinePack.Distribute(); |
| | | } |
| | | else if (pack is CustomB421ActionPack actionPack) |
| | | { |
| | | actionPack.Distribute(); |
| | | } |
| | | else |
| | | { |
| | | PackageRegedit.Distribute(pack); |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | Debug.LogError("DistributeNextPackage: 分发包异常 " + ex); |
| | | // 出错时主动移除当前包,防止死循环 |
| | | if (packQueue.Count > 0) |
| | | { |
| | | packQueue.Dequeue(); |
| | | } |
| | | return false; |
| | | } |
| | | |
| | | return packQueue.Count > 0; |
| | | } |
| | | |
| | | public void OnConnected() |
| | |
| | | } |
| | | |
| | | var pack = queue.Dequeue(); |
| | | BattleDebug.LogError("distribute pack " + pack.GetType().Name); |
| | | |
| | | PackageRegedit.Distribute(pack); |
| | | |
| | |
| | | battlePackRelationList.Remove(guid); |
| | | } |
| | | |
| | | BattleDebug.LogError("BattlePackage count is " + queue.Count); |
| | | } |
| | | #endregion |
| | | |