OSDN Git Service

海戦ログに基地空襲戦の結果を出力する
authorKazuhiro Fujieda <fujieda@users.osdn.me>
Thu, 25 Jul 2019 12:17:32 +0000 (21:17 +0900)
committerKazuhiro Fujieda <fujieda@users.osdn.me>
Thu, 25 Jul 2019 12:19:18 +0000 (21:19 +0900)
KancolleSniffer.Test/LoggerTest.cs
KancolleSniffer/Log/BattleLogger.cs
KancolleSniffer/Model/BattleInfo.cs

index a071fcc..b040f32 100644 (file)
@@ -156,6 +156,23 @@ namespace KancolleSniffer.Test
                 == result);\r
         }\r
 \r
+        /// <summary>\r
+        /// 基地空襲戦\r
+        /// </summary>\r
+        [TestMethod]\r
+        public void InspectAirRaidBattle()\r
+        {\r
+            var sniffer = new Sniffer();\r
+            var result = "";\r
+            sniffer.SetLogWriter((path, s, h) => { result += s + "|"; }, () => new DateTime(2019, 1, 1));\r
+            sniffer.EnableLog(LogType.Battle);\r
+            SnifferTest.SniffLogFile(sniffer, "airraid_battle_001");\r
+            Assert.AreEqual("2019-01-01 00:00:00,アリューシャン列島沖,12,出撃,S,同航戦,単縦陣,輪形陣,,,," +\r
+                            "基地航空隊1(Lv0),200/200,基地航空隊2(Lv0),200/200,基地航空隊3(Lv0),200/200," +\r
+                            "北方棲妹,790/790,砲台小鬼,130/130,砲台小鬼,130/130,飛行場姫,500/500,飛行場姫,500/500,集積地棲姫,600/600,425~426,231,航空優勢,44-3|",\r
+                result);\r
+        }\r
+\r
         [TestMethod]\r
         public void InspectMaterial()\r
         {\r
index 8856fa6..2cf15ae 100644 (file)
@@ -68,6 +68,10 @@ namespace KancolleSniffer.Log
         public void InspectMapNext(dynamic json)\r
         {\r
             _cell.Set(json);\r
+            if (!json.api_destruction_battle())\r
+                return;\r
+            WriteLog(null);\r
+            _cell.Start = false;\r
         }\r
 \r
         public void InspectBattleResult(dynamic result)\r
@@ -98,8 +102,8 @@ namespace KancolleSniffer.Log
                 boss = _cell.Start ? "出撃&ボス" : "ボス";\r
             var dropType = CreateDropType(result);\r
             var dropName = CreateDropName(result);\r
-            var enemyName = result.api_enemy_info.api_deck_name;\r
-            var rank = result.api_win_rank;\r
+            var enemyName = result?.api_enemy_info.api_deck_name ?? "";\r
+            var rank = result?.api_win_rank ?? _battleInfo.ResultRank;\r
             var fp = _battleInfo.FighterPower;\r
             var fPower = fp.Diff ? fp.RangeString : fp.Min.ToString();\r
             return string.Join(",",\r
@@ -120,6 +124,8 @@ namespace KancolleSniffer.Log
 \r
         private static string CreateDropType(dynamic result)\r
         {\r
+            if (result == null)\r
+                return "";\r
             var type = result.api_get_ship() ? (string)result.api_get_ship.api_ship_type : "";\r
             if (!result.api_get_useitem())\r
                 return type;\r
@@ -128,6 +134,8 @@ namespace KancolleSniffer.Log
 \r
         private string CreateDropName(dynamic result)\r
         {\r
+            if (result == null)\r
+                return "";\r
             var name = result.api_get_ship() ? (string)result.api_get_ship.api_ship_name : "";\r
             if (!result.api_get_useitem())\r
                 return name;\r
index 370d4e3..f16b1c8 100644 (file)
@@ -319,6 +319,7 @@ namespace KancolleSniffer.Model
             var maxEq = new[] {18, 18, 18, 18};\r
             var ships = nowHps.Select((hp, n) => new ShipStatus\r
             {\r
+                Id = 1,\r
                 Spec = new ShipSpec {Name = "基地航空隊" + (n + 1), GetMaxEq = () => maxEq},\r
                 NowHp = nowHps[n],\r
                 MaxHp = maxHps[n]\r