protected override void ProcessCore(RawBattle rpData)
        {
            ProcessCombinedAerial(rpData.AerialCombat);
            ProcessSupportAttack(rpData.SupportInfo);
            ProcessCombinedFleetTorpedoSalvo(rpData.OpeningTorpedoSalvo);

            ProcessShelling(rpData.ShellingFirstRound);
            ProcessShelling(rpData.ShellingSecondRound);
            ProcessCombinedFleetShelling(rpData.ShellingThirdRound);

            ProcessCombinedFleetTorpedoSalvo(rpData.ClosingTorpedoSalvo);
        }
        protected override void ProcessCore(RawBattle rpData)
        {
            ProcessAerial(rpData.AerialCombat);
            ProcessAerial(rpData.AerialCombatSecondRound);

            ProcessTorpedoSalvo(rpData.OpeningTorpedoSalvo);

            ProcessShelling(rpData.ShellingFirstRound);
            ProcessShelling(rpData.ShellingSecondRound);

            ProcessTorpedoSalvo(rpData.ClosingTorpedoSalvo);
        }
        protected override void ParseStatus(RawBattle rpData)
        {
            base.ParseStatus(rpData);

            FriendCombinedStatus = rpData.MaxHPsCombined.Zip(rpData.NowHPsCombined, (rpMax, rpNow) => rpMax != -1 ? new BattleStatus(rpMax, rpNow) : null).ToArray();
            AllCombinedFleetStatus = FriendCombinedStatus.Concat(EnemyStatus).ToArray();

            if (rpData.EscapedShipIndex != null && rpData.EscapedCombinedShipIndex != null)
            {
                foreach (var rIndex in rpData.EscapedShipIndex)
                    FriendStatus[rIndex - 1].IsEscaped = true;
                foreach (var rIndex in rpData.EscapedCombinedShipIndex)
                    FriendCombinedStatus[rIndex - 1].IsEscaped = true;
            }
        }
        protected override void ParseEnemyInfo(RawBattle rpData)
        {
            var rSortieFleetID = int.Parse(Request["api_deck_id"]);
            Game.SortieFleet = Game.Fleets[rSortieFleetID];

            var rEnemyFleet = Game.CompassData.EnemyFleet;
            var rEnemyIDs = rpData.EnemyIDs.TakeWhile(r => r != -1).ToArray();
            if (!rEnemyFleet.ShipIDs.SequenceEqual(rEnemyIDs))
            {
                var rFleetName = rEnemyFleet.Name;
                rEnemyFleet = new EnemyFleet()
                {
                    Name = rFleetName,
                    Formation = rpData.Formation.Enemy,
                    ShipIDs = rEnemyIDs,
                };
                rEnemyFleet.UpdateShips();
            }

            var rShips = rEnemyFleet.Ships;
            for (var i = 0; i < rShips.Length; i++)
            {
                var rShip = rShips[i];

                rShip.Level = rpData.EnemyLevels[i];

                var rSlots = rShip.Slots;
                for (var j = 0; j < rSlots.Length; j++)
                {
                    var rID = rpData.EnemyEquipments[i][j];
                    rSlots[j].Equipment = rID != -1 ? Equipment.GetDummyFromID(rID) : Equipment.Default;
                }
            }

            rEnemyFleet.UpdateAA();
        }
        protected override void PostProcess(RawBattle rpData)
        {
            Battle.CanNightBattle = rpData.CanNightBattle;

            PostProcessCore(rpData);
        }
 protected override void PostProcess(RawBattle rpData)
 {
     PostProcessCore(rpData);
 }
 protected override void PostProcess(RawBattle rpData)
 {
     Battle.DayBattle.FriendStatusCombined = FriendCombinedStatus;
     PostProcessCore(rpData);
 }