OSDN Git Service

改修報告書を実装する
authorKazuhiro Fujieda <fujieda@users.osdn.me>
Tue, 30 Jun 2015 12:55:51 +0000 (21:55 +0900)
committerKazuhiro Fujieda <fujieda@users.osdn.me>
Sat, 4 Jul 2015 07:49:02 +0000 (16:49 +0900)
KancolleSniffer.Test/LoggerTest.cs
KancolleSniffer/Logger.cs
KancolleSniffer/Sniffer.cs
LogViewer/index.html

index d94d616..7a1db15 100644 (file)
@@ -225,5 +225,20 @@ namespace KancolleSniffer.Test
                                "2015-01-01 00:00:00,大型艦建造,筑摩,重巡洋艦,1500,1500,2000,1000,1,0,明石改(50),116|"\r
                                == result);\r
         }\r
+\r
+        [TestMethod]\r
+        public void InspectRemodelSlot()\r
+        {\r
+            var sniffer = new Sniffer();\r
+            var result = "";\r
+            sniffer.SetLogWriter((path, s, h) => { result += s + "|"; }, () => new DateTime(2015, 1, 1));\r
+            sniffer.EnableLog(LogType.RemodelSlot);\r
+            SnifferTest.SniffLogFile(sniffer, "remodel_slot_001");\r
+            PAssert.That(() => "2015-01-01 00:00:00,12.7cm連装砲,4,○,,,,10,30,60,0,1,1,明石改(50),島風改(131)|" +\r
+                               "2015-01-01 00:00:00,12.7cm連装砲,5,×,,,,10,30,60,0,1,1,明石改(50),|" +\r
+                               "2015-01-01 00:00:00,12.7cm連装砲,7,○,,12.7cm連装砲,1,10,30,60,0,1,1,明石改(50),島風改(131)|" +\r
+                               "2015-01-01 00:00:00,91式高射装置,10,○,○,10cm連装高角砲,2,0,0,60,40,9,7,明石改(50),摩耶改(98)|"\r
+                               == result);\r
+        }\r
     }\r
 }
\ No newline at end of file
index 2f9b7a0..d2f2df9 100644 (file)
@@ -34,7 +34,8 @@ namespace KancolleSniffer
         Material = 4,\r
         CreateItem = 8,\r
         CreateShip = 16,\r
-        All = 31,\r
+        RemodelSlot = 32,\r
+        All = 63,\r
     }\r
 \r
     public class Logger\r
@@ -300,6 +301,43 @@ namespace KancolleSniffer
                 string.Join(",", material),\r
                 "日付,燃料,弾薬,鋼材,ボーキ,高速建造材,高速修復材,開発資材,改修資材");\r
         }\r
+\r
+        public void InspectRemodelSlot(string request, dynamic json)\r
+        {\r
+            if ((_logType & LogType.RemodelSlot) == 0)\r
+                return;\r
+            var now = _nowFunc();\r
+            var values = HttpUtility.ParseQueryString(request);\r
+            var id = int.Parse(values["api_slot_id"]);\r
+            var name = _itemInfo[id].Name;\r
+            var level = _itemInfo.ItemDict[id].Level;\r
+            var success = (int)json.api_remodel_flag == 1 ? "○" : "×";\r
+            var certain = int.Parse(values["api_certain_flag"]) == 1 ? "○" : "";\r
+            var useName = "";\r
+            var useNum = "";\r
+            if (json.api_use_slot_id())\r
+            {\r
+                var use = (int[])json.api_use_slot_id;\r
+                useName = _itemInfo[use[0]].Name;\r
+                useNum = use.Length.ToString();\r
+            }\r
+            var after = (int[])json.api_after_material;\r
+            var diff = new int[after.Length];\r
+            for (var i = 0; i < after.Length; i++)\r
+                diff[i] = _itemInfo.MaterialHistory[i].Now - after[i];\r
+            var ship1 = Secretary();\r
+            var ship2 = "";\r
+            var ships = _shipInfo.GetShipStatuses(0);\r
+            if (ships.Length >= 2)\r
+                ship2 = ships[1].Name + "(" + ships[1].Level + ")";\r
+            _writer("改修報告書",\r
+                now.ToString(DateTimeFormat) + "," +\r
+                string.Join(",", name, level, success, certain, useName, useNum,\r
+                diff[(int)Material.Fuel], diff[(int)Material.Bullet], diff[(int)Material.Steal], diff[(int)Material.Bouxite],\r
+                diff[(int)Material.Development], diff[(int)Material.Screw],\r
+                ship1, ship2),\r
+                "日付,改修装備,レベル,成功,確実化,消費装備,消費数,燃料,弾薬,鋼材,ボーキ,開発資材,改修資材,秘書艦,二番艦");\r
+        }\r
     }\r
 \r
     public class LogWriter\r
index e67ab83..d39fba8 100644 (file)
@@ -223,6 +223,7 @@ namespace KancolleSniffer
             }\r
             if (url.EndsWith("api_req_kousyou/remodel_slot"))\r
             {\r
+                _logger.InspectRemodelSlot(request, data); // 資材の差が必要なので_itemInfoより前\r
                 _itemInfo.InspectRemodelSlot(data);\r
                 return Update.Item;\r
             }\r
index 7e8ea28..464f622 100644 (file)
@@ -58,6 +58,7 @@ function showLog()
         "遠征報告書.json",
         "開発報告書.json",
         "建造報告書.json",
+        "改修報告書.json",
         "資材ログ.json"
     ];
     $('#loading').show();
@@ -65,9 +66,11 @@ function showLog()
     $('#log' + selectedTable).DataTable().ajax.url(url).load();
 }
 
+var tables = 7;
+
 function initTables()
 {
-    for (var t = 0; t < 6; t++) {
+    for (var t = 0; t < tables; t++) {
         var opts = {
             destroy: true,
             deferRender: true,
@@ -327,15 +330,16 @@ function initSortieStat()
 
 function selectTopTab(i)
 {
-    if (i < 6) {
+    var chart = tables;
+    if (i < tables) {
         selectedTable = i;
         showLog();
-    } else if (i == 6) {
+    } else if (i == chart) {
         drawChart();
-    } else if (i == 7) {
+    } else if (i == chart + 1) {
         setSortieStat();
     }
-    if (i < 6)
+    if (i < tables)
         $('#term').show();
     else
         $('#term').hide();
@@ -390,6 +394,7 @@ $(function() {
 <li>遠征</li>
 <li>開発</li>
 <li>建造</li>
+<li>改修</li>
 <li>資材</li>
 <li>資材グラフ</li>
 <li>出撃統計</li>
@@ -443,6 +448,13 @@ $(function() {
 <li class="hide">
 <table id="log5">
 <thead>
+<tr><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></tr>
+</thead>
+</table>
+
+<li class="hide">
+<table id="log6">
+<thead>
 <tr><th>日付</th><th>燃料</th><th>弾薬</th><th>鋼材</th><th>ボーキ</th><th>高速建造材</th><th>高速修復材</th><th>開発資材</th><th>改修資材</th></tr>
 </thead>
 </table>