OSDN Git Service

空襲戦で轟沈したときに勝利判定を間違えるのを直す
authorKazuhiro Fujieda <fujieda@users.osdn.me>
Sat, 24 Feb 2018 10:41:46 +0000 (19:41 +0900)
committerKazuhiro Fujieda <fujieda@users.osdn.me>
Sun, 25 Feb 2018 05:54:11 +0000 (14:54 +0900)
KancolleSniffer.Test/BattleTest.cs
KancolleSniffer.Test/logs
KancolleSniffer/BattleInfo.cs

index 1ca6168..d0b75f0 100644 (file)
@@ -71,6 +71,9 @@ namespace KancolleSniffer.Test
 \r
         private dynamic Data(string json) => ((dynamic)JsonParser.Parse(json)).api_data;\r
 \r
+        /// <summary>\r
+        /// NPC友軍の支援攻撃がある\r
+        /// </summary>\r
         [TestMethod]\r
         public void NpcFriendFleetAttack()\r
         {\r
@@ -82,5 +85,19 @@ namespace KancolleSniffer.Test
             _battleInfo.InspectBattleResult(Data(logs[9]));\r
             PAssert.That(() => !_battleInfo.DisplayedResultRank.IsError);\r
         }\r
+\r
+        /// <summary>\r
+        /// 空襲戦で轟沈する\r
+        /// </summary>\r
+        [TestMethod]\r
+        public void LdAirbattleHaveSunkenShip()\r
+        {\r
+            var logs = ReadAllLines("ld_airbattle_001");\r
+            var battle = Data(logs[3]);\r
+            _shipInfo.InjectShips(battle, JsonParser.Parse(logs[0]));\r
+            _battleInfo.InspectBattle(logs[1], logs[2], battle);\r
+            _battleInfo.InspectBattleResult(Data(logs[6]));\r
+            PAssert.That(() => !_battleInfo.DisplayedResultRank.IsError);\r
+        }\r
     }\r
 }
\ No newline at end of file
index de0f8ce..0ebb22b 160000 (submodule)
@@ -1 +1 @@
-Subproject commit de0f8ce6c20b42952d53bebde4535088edad2907
+Subproject commit 0ebb22b0cd295619a123246592c28a613a63fc5f
index ac8c483..6267c0e 100644 (file)
@@ -625,25 +625,19 @@ namespace KancolleSniffer
 \r
         private BattleResultRank CalcLdAirBattleRank()\r
         {\r
-            var combined = _friend.Concat(_guard).ToArray();\r
-            var friendNowShips = combined.Count(r => r.NowHp > 0);\r
+            var combined = _friend.Concat(_guard).Where(r => !r.Escaped).ToArray();\r
             var friendGauge = combined.Sum(r => r.StartHp - r.NowHp);\r
-            var friendSunk = combined.Count(r => r.NowHp == 0);\r
             var friendGaugeRate = Floor((double)friendGauge / combined.Sum(r => r.StartHp) * 100);\r
 \r
-            if (friendSunk == 0)\r
-            {\r
-                if (friendGauge == 0)\r
-                    return BattleResultRank.P;\r
-                if (friendGaugeRate < 10)\r
-                    return BattleResultRank.A;\r
-                if (friendGaugeRate < 20)\r
-                    return BattleResultRank.B;\r
-                if (friendGaugeRate < 50)\r
-                    return BattleResultRank.C;\r
-                return BattleResultRank.D;\r
-            }\r
-            if (friendSunk < friendNowShips)\r
+            if (friendGauge == 0)\r
+                return BattleResultRank.P;\r
+            if (friendGaugeRate < 10)\r
+                return BattleResultRank.A;\r
+            if (friendGaugeRate < 20)\r
+                return BattleResultRank.B;\r
+            if (friendGaugeRate < 50)\r
+                return BattleResultRank.C;\r
+            if (friendGaugeRate < 80)\r
                 return BattleResultRank.D;\r
             return BattleResultRank.E;\r
         }\r