BattleInfoPlugin.Models.BattleData.GetBattleResult C# (CSharp) Метод

GetBattleResult() приватный Метод

private GetBattleResult ( ) : BattleResultRank
Результат BattleResultRank
        private BattleResultRank GetBattleResult()
        {
            if (!this.IsInBattle) return BattleResultRank.なし;

            var friendShips = this.FriendFleet.Fleets
                .SelectMany(f => f.Ships)
                .ToArray();

            var enemyShips = this.EnemyFleet.Fleets
                .SelectMany(f => f.Ships)
                .ToArray();

            var friendGuageRate = friendShips.GetHpLostPercent();
            var enemyGuageRate = enemyShips.GetHpLostPercent();

            this.FriendLostGauge = friendGuageRate;
            this.EnemyLostGauge = enemyGuageRate;

            var hpLostRatio = enemyGuageRate > 0 ? (friendGuageRate > 0 ? enemyGuageRate / friendGuageRate : 10) : 0;

            var friendLostCount = friendShips.GetLostCount();
            var friendCount = friendShips.Length;

            var enemyLostCount = enemyShips.GetLostCount();
            var enemyCount = enemyShips.Length;

            var isEnemyFlagshipSunk = enemyShips.First().NowHP <= 0;

            //SS or S
            if (enemyLostCount == enemyCount)
                if (friendGuageRate <= 0) return BattleResultRank.完全勝利S;
                else if (friendLostCount == 0) return BattleResultRank.勝利S;


            // A
            if (enemyLostCount >= Math.Max(enemyCount * 2 / 3, 1) && friendLostCount == 0) return BattleResultRank.勝利A;


            // B
            // 我方舰娘全部存活
            if (friendLostCount == 0)
            {
                // 敌旗舰击沉
                if (isEnemyFlagshipSunk) return BattleResultRank.戦術的勝利B;
                // 敌方损失比例为我方2.5倍以上
                if (hpLostRatio >= 2.5)
                    return BattleResultRank.戦術的勝利B;
            }
            // 我方存在击沉舰娘
            else
            {
                // 敌舰全击沉
                if (enemyLostCount == enemyCount) return BattleResultRank.戦術的勝利B;
                // 敌方HP损失比例为我方2.5倍以上
                if (hpLostRatio >= 2.5) return BattleResultRank.戦術的勝利B;
                // 敌方旗舰击沉 且 我方击沉数<敌方击沉数
                if (isEnemyFlagshipSunk && friendLostCount < enemyLostCount) return BattleResultRank.戦術的勝利B;
            }


            // C
            // 敌方旗舰击沉
            if (isEnemyFlagshipSunk) return BattleResultRank.戦術的敗北C;
            // 敌方旗舰未击沉 且 敌方HP损失比例:我方<2.5
            if (hpLostRatio >= 0.9 && hpLostRatio < 2.5) return BattleResultRank.戦術的敗北C;


            // E
            if (friendLostCount > 0 && friendCount - friendLostCount == 1) return BattleResultRank.敗北E;


            // D
            return BattleResultRank.敗北D;

        }