OSDN Git Service

遠征報告書に改修資材を追加する
authorKazuhiro Fujieda <fujieda@users.osdn.me>
Sun, 6 Oct 2019 12:45:55 +0000 (21:45 +0900)
committerKazuhiro Fujieda <fujieda@users.osdn.me>
Sun, 6 Oct 2019 12:45:55 +0000 (21:45 +0900)
KancolleSniffer.Test/LogProcessorTest.cs
KancolleSniffer.Test/LoggerTest.cs
KancolleSniffer.Test/logs
KancolleSniffer/Log/LogProcessor.cs
KancolleSniffer/Log/Logger.cs
LogViewer/tags.tag

index e2d7439..1adec3a 100644 (file)
@@ -33,7 +33,7 @@ namespace KancolleSniffer.Test
         }\r
 \r
         /// <summary>\r
-        /// 遠征報告書は普通にJSONに変換する\r
+        /// 古い遠征報告書に改修資材の数字を追加する\r
         /// </summary>\r
         [TestMethod]\r
         public void EnseiLog()\r
@@ -47,8 +47,8 @@ namespace KancolleSniffer.Test
             var result = processor.Process(log, "遠征報告書.csv", DateTime.MinValue, DateTime.MaxValue, false);\r
             PAssert.That(() => result.SequenceEqual(new[]\r
             {\r
-                "[\"2018-09-10 17:45:09\",\"大成功\",\"北方鼠輸送作戦\",\"589\",\"498\",\"0\",\"0\",\"0\",\"0\",\"0\"]",\r
-                ",\n[\"2018-09-10 17:53:34\",\"成功\",\"長距離練習航海\",\"0\",\"117\",\"34\",\"0\",\"0\",\"1\",\"0\"]"\r
+                "[\"2018-09-10 17:45:09\",\"大成功\",\"北方鼠輸送作戦\",\"589\",\"498\",\"0\",\"0\",\"0\",\"0\",\"0\",\"0\"]",\r
+                ",\n[\"2018-09-10 17:53:34\",\"成功\",\"長距離練習航海\",\"0\",\"117\",\"34\",\"0\",\"0\",\"1\",\"0\",\"0\"]"\r
             }));\r
         }\r
 \r
index 333e9ea..ccd6644 100644 (file)
@@ -49,11 +49,30 @@ namespace KancolleSniffer.Test
             sniffer.SkipMaster();\r
             sniffer.EnableLog(LogType.Mission);\r
             SnifferTest.SniffLogFile(sniffer, "mission_result_001");\r
-            PAssert.That(() => "日付,結果,遠征,燃料,弾薬,鋼材,ボーキ,開発資材,高速修復材,高速建造材" == header);\r
-            PAssert.That(() => "2015-01-01 00:00:00,成功,長距離練習航海,0,100,30,0,0,0,0|" +\r
-                               "2015-01-01 00:00:00,成功,長距離練習航海,0,100,30,0,0,1,0|" +\r
-                               "2015-01-01 00:00:00,大成功,MO作戦,0,0,360,420,1,0,0|" +\r
-                               "2015-01-01 00:00:00,失敗,東京急行(弐),0,0,0,0,0,0,0|"\r
+            PAssert.That(() => "日付,結果,遠征,燃料,弾薬,鋼材,ボーキ,開発資材,高速修復材,高速建造材,改修資材" == header);\r
+            PAssert.That(() => "2015-01-01 00:00:00,成功,長距離練習航海,0,100,30,0,0,0,0,0|" +\r
+                               "2015-01-01 00:00:00,成功,長距離練習航海,0,100,30,0,0,1,0,0|" +\r
+                               "2015-01-01 00:00:00,大成功,MO作戦,0,0,360,420,1,0,0,0|" +\r
+                               "2015-01-01 00:00:00,失敗,東京急行(弐),0,0,0,0,0,0,0,0|"\r
+                               == result);\r
+        }\r
+\r
+        [TestMethod]\r
+        public void MissionResultGetScrew()\r
+        {\r
+            var sniffer = new Sniffer();\r
+            var result = "";\r
+            var header = "";\r
+            sniffer.SetLogWriter((path, s, h) =>\r
+            {\r
+                result += s + "|";\r
+                header = h;\r
+            }, () => new DateTime(2019, 1, 1));\r
+            sniffer.SkipMaster();\r
+            sniffer.EnableLog(LogType.Mission);\r
+            SnifferTest.SniffLogFile(sniffer, "mission_result_002");\r
+            PAssert.That(() => "日付,結果,遠征,燃料,弾薬,鋼材,ボーキ,開発資材,高速修復材,高速建造材,改修資材" == header);\r
+            PAssert.That(() => "2019-01-01 00:00:00,大成功,南西諸島離島防衛作戦,0,0,1800,975,0,0,0,1|"\r
                                == result);\r
         }\r
 \r
index 2975685..a1cddc0 160000 (submodule)
@@ -1 +1 @@
-Subproject commit 2975685eb2dffae8f81255ca2375bfe880ded6fd
+Subproject commit a1cddc02b44ae9718c5a2a16cc282fbfa01ea178
index db0aef4..e4474a6 100644 (file)
@@ -36,12 +36,14 @@ namespace KancolleSniffer.Log
             bool number, DateTime now = default)\r
         {\r
             var fields = 0;\r
+            var mission = false;\r
             var battle = false;\r
             var material = false;\r
             switch (Path.GetFileNameWithoutExtension(path))\r
             {\r
                 case "遠征報告書":\r
-                    fields = 10;\r
+                    mission = true;\r
+                    fields = 11;\r
                     break;\r
                 case "改修報告書":\r
                     fields = 15;\r
@@ -77,6 +79,8 @@ namespace KancolleSniffer.Log
                     continue;\r
                 data[0] = Logger.FormatDateTime(date);\r
                 var entries = data;\r
+                if (mission)\r
+                    entries = data.Concat(new[] {"0"}).Take(fields).ToArray();\r
                 if (material)\r
                     entries = data.Take(fields).ToArray();\r
                 if (battle)\r
index b6b754c..9f3e5af 100644 (file)
@@ -115,29 +115,39 @@ namespace KancolleSniffer.Log
         {\r
             var r = (int)json.api_clear_result;\r
             var resStr = r == 2 ? "大成功" : r == 1 ? "成功" : "失敗";\r
-            var material = new int[7];\r
+            var material = new int[8];\r
             if (r != 0)\r
                 ((int[])json.api_get_material).CopyTo(material, 0);\r
             foreach (var i in new[] {1, 2})\r
             {\r
                 var attr = "api_get_item" + i;\r
-                if (!json.IsDefined(attr) || json[attr].api_useitem_id != -1)\r
+                if (!json.IsDefined(attr))\r
                     continue;\r
                 var count = (int)json[attr].api_useitem_count;\r
                 var flag = ((int[])json.api_useitem_flag)[i - 1];\r
-                if (flag == 1)\r
-                    material[(int)Material.Bucket] = count;\r
-                else if (flag == 2)\r
-                    material[(int)Material.Burner + 2] = count; // 高速建造材と開発資材が反対なのでいつか直す\r
-                else if (flag == 3)\r
-                    material[(int)Material.Development - 2] = count;\r
+                switch (flag)\r
+                {\r
+                    case 1:\r
+                        material[(int)Material.Bucket] = count;\r
+                        break;\r
+                    case 2:\r
+                        material[(int)Material.Burner + 2] = count; // 高速建造材と開発資材が反対なのでいつか直す\r
+                        break;\r
+                    case 3:\r
+                        material[(int)Material.Development - 2] = count;\r
+                        break;\r
+                    case 4:\r
+                        if ((int)json[attr].api_useitem_id == 4)\r
+                            material[(int)Material.Screw] = count;\r
+                        break;\r
+                }\r
             }\r
             if ((_logType & LogType.Mission) != 0)\r
             {\r
                 WriteNow("遠征報告書",\r
                     string.Join(",",\r
                         resStr, json.api_quest_name, string.Join(",", material)),\r
-                    "日付,結果,遠征,燃料,弾薬,鋼材,ボーキ,開発資材,高速修復材,高速建造材");\r
+                    "日付,結果,遠征,燃料,弾薬,鋼材,ボーキ,開発資材,高速修復材,高速建造材,改修資材");\r
             }\r
         }\r
 \r
index 9154ec8..c29cb4b 100644 (file)
@@ -84,7 +84,7 @@ this.rangeTabChange = function(e) {
 this.tables = [
 "<th>日付</th><th>海域</th><th>マップ</th><th>マス</th><th>ボス</th><th>ランク</th><th>ドロップ艦種</th><th>ドロップ艦娘", // ドロップ
 "<th>日付</th><th style=\"min-width: 3.2em;\">海域</th><th>マップ</th><th>マス</th><th>ボス</th><th>ランク</th><th>艦隊行動</th><th>味方陣形</th><th>敵陣形</th><th style=\"min-width: 3.2em;\">敵艦隊</th><th>味方艦1</th><th>味方艦1HP</th><th>味方艦2</th><th>味方艦2HP</th><th>味方艦3</th><th>味方艦3HP</th><th>味方艦4</th><th>味方艦4HP</th><th>味方艦5</th><th>味方艦5HP</th><th>味方艦6</th><th>味方艦6HP</th><th>大破艦</ht><th style=\"min-width: 2.2em;\">敵艦1</th><th>敵艦1HP</th><th style=\"min-width: 2.2em;\">敵艦2</th><th>敵艦2HP</th><th style=\"min-width: 2.2em;\">敵艦3</th><th>敵艦3HP</th><th style=\"min-width: 2.2em;\">敵艦4</th><th>敵艦4HP</th><th style=\"min-width: 2.2em;\">敵艦5</th><th>敵艦5HP</th><th style=\"min-width: 2.2em;\">敵艦6</th><th>敵艦6HP</th><th>味方制空値</th><th>敵制空値</th><th>制空状態</th>", // 海戦
-"<th>日付</th><th>結果</th><th>遠征</th><th>燃料</th><th>弾薬</th><th>鋼材</th><th>ボーキ</th><th>開発資材</th><th>高速修復材</th><th>高速建造材</th>", // 遠征
+"<th>日付</th><th>結果</th><th>遠征</th><th>燃料</th><th>弾薬</th><th>鋼材</th><th>ボーキ</th><th>開発資材</th><th>高速修復材</th><th>高速建造材</th><th>改修資材</th>", // 遠征
 "<th>日付</th><th>開発装備</th><th>種別</th><th>燃料</th><th>弾薬</th><th>鋼材</th><th>ボーキ</th><th>秘書艦</th><th>司令部Lv</th>", // 開発
 "<th>日付</th><th>種類</th><th>名前</th><th>艦種</th><th>燃料</th><th>弾薬</th><th>鋼材</th><th>ボーキ</th><th>開発資材</th><th>空きドック</th><th>秘書艦</th><th>司令部Lv</th>", // 建造
 "<th>日付</th><th>改修装備</th><th>レベル</th><th>成功</th><th>確実化</th><th>消費装備</th><th>消費数</th><th>燃料</th><th>弾薬</th><th>鋼材</th><th>ボーキ</th><th>開発資材</th><th>改修資材</th><th>秘書艦</th><th>二番艦</th>", // 改修