OSDN Git Service

Status-Lineが空のときに例外を出さない
[kancollesniffer/KancolleSniffer.git] / KancolleSniffer / MaterialInfo.cs
index 7299afc..266c42b 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
@@ -184,7 +191,7 @@ namespace KancolleSniffer
 \r
         public int Now\r
         {\r
-            get { return _now; }\r
+            get => _now;\r
             set\r
             {\r
                 var prev = _now;\r