OSDN Git Service

出撃から帰投したときの資材の増減が正しく表示されないのを直す
authorKazuhiro Fujieda <fujieda@users.osdn.me>
Fri, 23 Dec 2016 06:36:53 +0000 (15:36 +0900)
committerKazuhiro Fujieda <fujieda@users.osdn.me>
Fri, 23 Dec 2016 06:36:53 +0000 (15:36 +0900)
KancolleSniffer/MaterialInfo.cs
KancolleSniffer/Sniffer.cs

index 7299afc..819d85f 100644 (file)
@@ -34,6 +34,7 @@ namespace KancolleSniffer
             for (var i = 0; i < n; i++)\r
                 MaterialHistory[i] = new MaterialCount();\r
             PrevPort = new int[n];\r
+            PrevPort[0] = -1;\r
         }\r
 \r
         public bool NeedSave\r
@@ -46,25 +47,30 @@ namespace KancolleSniffer
             }\r
         }\r
 \r
-        public void InspectMaterial(dynamic json, bool port = false)\r
+        public void InspectMaterialPort(dynamic json)\r
         {\r
-            if (!port)\r
-                UpdatePrevPort();\r
+            InspectMaterial(json);\r
+            _inPort = true;\r
+            if (PrevPort[0] == -1)\r
+            {\r
+                // 初期化する\r
+                for (var i = 0; i < MaterialHistory.Length; i++)\r
+                    PrevPort[i] = MaterialHistory[i].Now;\r
+            }\r
+        }\r
+\r
+        public void InspectMaterial(dynamic json)\r
+        {\r
+            UpdatePrevPort();\r
             foreach (var entry in json)\r
             {\r
                 var i = (int)entry.api_id - 1;\r
                 var v = (int)entry.api_value;\r
                 MaterialHistory[i].Now = v;\r
             }\r
-            if (!port)\r
-                return;\r
-            _inPort = true;\r
-            if (PrevPort[0] != 0)\r
-                return;\r
-            for (var i = 0; i < MaterialHistory.Length; i++)\r
-                PrevPort[i] = MaterialHistory[i].Now;\r
         }\r
 \r
+        // 母港に戻ってから最初に資材に変化があったときに、母港の時点の資材を記録する\r
         private void UpdatePrevPort()\r
         {\r
             if (!_inPort)\r
@@ -83,6 +89,7 @@ namespace KancolleSniffer
         {\r
             if ((int)json.api_clear_result == 0) // 失敗\r
                 return;\r
+            // 連続して遠征が帰投したときに資材の増加を積算する\r
             if (DateTime.Now - _lastMission < TimeSpan.FromMinutes(1))\r
                 _inPort = false;\r
             _lastMission = DateTime.Now;\r
index 97210c5..7618f1a 100644 (file)
@@ -125,7 +125,7 @@ namespace KancolleSniffer
         private Update ApiPort(dynamic data)\r
         {\r
             _itemInfo.InspectBasic(data.api_basic);\r
-            _materialInfo.InspectMaterial(data.api_material, true);\r
+            _materialInfo.InspectMaterialPort(data.api_material);\r
             _logger.InspectBasic(data.api_basic);\r
             _logger.InspectMaterial(data.api_material);\r
             _shipInfo.InspectShip(data);\r