OSDN Git Service

解体等で編成が変わってもタイマーをリセットしないようにする
authorKazuhiro Fujieda <fujieda@users.osdn.me>
Sun, 8 Nov 2015 09:18:45 +0000 (18:18 +0900)
committerKazuhiro Fujieda <fujieda@users.osdn.me>
Sun, 8 Nov 2015 15:06:39 +0000 (00:06 +0900)
KancolleSniffer/AkashiTimer.cs
KancolleSniffer/Sniffer.cs

index a76e219..a36dcf4 100644 (file)
@@ -18,7 +18,6 @@
 using System;\r
 using System.Collections.Generic;\r
 using System.Linq;\r
-using System.Web;\r
 \r
 namespace KancolleSniffer\r
 {\r
@@ -158,30 +157,38 @@ namespace KancolleSniffer
             Reparing = 4\r
         }\r
 \r
-        public void SetTimer(bool port = false)\r
+        public void Port()\r
         {\r
+            CheckFleet();\r
             var now = DateTime.Now;\r
-            for (var fleet = 0; fleet < ShipInfo.FleetCount; fleet++)\r
-                CheckFleet(fleet);\r
-            if (_repairStatuses.Any(r => (r.State & State.Reset) == State.Reset))\r
-            {\r
-                _start = now;\r
-                return;\r
-            }\r
-            if (port && now - _start > TimeSpan.FromMinutes(20))\r
+            var reparing = _repairStatuses.Any(r => (r.State & State.Reparing) != 0);\r
+            var stop = _repairStatuses.All(r => (r.State & State.Continue) == 0);\r
+            if (now - _start > TimeSpan.FromMinutes(20))\r
             {\r
-                if (_repairStatuses.Any(r => (r.State & State.Reparing) == State.Reparing))\r
+                if (reparing)\r
                     _start = now;\r
-                else if (_repairStatuses.All(r => (r.State & State.Continue) == 0))\r
+                else if (stop)\r
                     _start = DateTime.MinValue;\r
             }\r
-            else if (_repairStatuses.Any(r => (r.State & State.Continue) != 0))\r
+            else if (!stop && _start == DateTime.MinValue)\r
             {\r
-                if (_start == DateTime.MinValue)\r
-                    _start = now;\r
+                _start = now;\r
             }\r
         }\r
 \r
+        public void DeckChanged()\r
+        {\r
+            CheckFleet();\r
+            if (_repairStatuses.Any(r => (r.State & State.Reset) != 0))\r
+                _start = DateTime.Now;\r
+        }\r
+\r
+        public void CheckFleet()\r
+        {\r
+            for (var fleet = 0; fleet < ShipInfo.FleetCount; fleet++)\r
+                CheckFleet(fleet);\r
+        }\r
+\r
         private void CheckFleet(int fleet)\r
         {\r
             var deck = _shipInfo.GetDeck(fleet).ToArray();\r
@@ -218,14 +225,6 @@ namespace KancolleSniffer
             repair.Deck = deck;\r
         }\r
 \r
-        public void InspectPresetSelect(string request)\r
-        {\r
-            var values = HttpUtility.ParseQueryString(request);\r
-            var deck = int.Parse(values["api_deck_id"]) - 1;\r
-            _repairStatuses[deck].Deck = _shipInfo.GetDeck(deck);\r
-            SetTimer();\r
-        }\r
-\r
         public RepairSpan[] GetTimers(int fleet)\r
             => _start == DateTime.MinValue ? new RepairSpan[0] : _repairStatuses[fleet].GetTimers(_start, DateTime.Now);\r
 \r
index 8e7d51a..1377416 100644 (file)
@@ -130,7 +130,7 @@ namespace KancolleSniffer
             _conditionTimer.CalcRegenTime();\r
             _missionInfo.InspectDeck(data.api_deck_port);\r
             _dockInfo.InspectNDock(data.api_ndock);\r
-            _akashiTimer.SetTimer(true);\r
+            _akashiTimer.Port();\r
             _achievement.InspectBasic(data.api_basic);\r
             if (data.api_parallel_quest_count()) // 昔のログにはないので\r
                 _questInfo.QuestCount = (int)data.api_parallel_quest_count;\r
@@ -168,7 +168,7 @@ namespace KancolleSniffer
             {\r
                 _dockInfo.InspectNDock(data);\r
                 _conditionTimer.CheckCond();\r
-                _akashiTimer.SetTimer();\r
+                _akashiTimer.CheckFleet();\r
                 return Update.NDock | Update.Timer | Update.Ship;\r
             }\r
             if (url.EndsWith("api_get_member/questlist"))\r
@@ -180,28 +180,28 @@ namespace KancolleSniffer
             {\r
                 _shipInfo.InspectDeck(data);\r
                 _missionInfo.InspectDeck(data);\r
-                _akashiTimer.SetTimer();\r
+                _akashiTimer.DeckChanged();\r
                 return Update.Mission | Update.Timer;\r
             }\r
             if (url.EndsWith("api_get_member/ship2"))\r
             {\r
                 // ここだけjsonなので注意\r
                 _shipInfo.InspectShip(json);\r
-                _akashiTimer.SetTimer();\r
+                _akashiTimer.CheckFleet();\r
                 _battleInfo.InBattle = false;\r
                 return Update.Item | Update.Ship | Update.Battle;\r
             }\r
             if (url.EndsWith("api_get_member/ship_deck"))\r
             {\r
                 _shipInfo.InspectShip(data);\r
-                _akashiTimer.SetTimer();\r
+                _akashiTimer.CheckFleet();\r
                 _battleInfo.InBattle = false;\r
                 return Update.Ship | Update.Battle;\r
             }\r
             if (url.EndsWith("api_get_member/ship3"))\r
             {\r
                 _shipInfo.InspectShip(data);\r
-                _akashiTimer.SetTimer();\r
+                _akashiTimer.CheckFleet();\r
                 _conditionTimer.CheckCond();\r
                 return Update.Ship;\r
             }\r
@@ -246,7 +246,7 @@ namespace KancolleSniffer
                 _shipInfo.InspectDestroyShip(request, data);\r
                 _materialInfo.InspectDestroyShip(data);\r
                 _conditionTimer.CheckCond();\r
-                _akashiTimer.SetTimer();\r
+                _akashiTimer.CheckFleet();\r
                 return Update.Item | Update.Ship;\r
             }\r
             if (url.EndsWith("api_req_kousyou/destroyitem2"))\r
@@ -349,13 +349,13 @@ namespace KancolleSniffer
             if (url.EndsWith("api_req_hensei/change"))\r
             {\r
                 _shipInfo.InspectChange(request);\r
-                _akashiTimer.SetTimer();\r
+                _akashiTimer.DeckChanged();\r
                 return Update.Ship;\r
             }\r
             if (url.EndsWith("api_req_hensei/preset_select"))\r
             {\r
                 _shipInfo.InspectDeck(new[] {data});\r
-                _akashiTimer.InspectPresetSelect(request);\r
+                _akashiTimer.CheckFleet();\r
                 return Update.Ship;\r
             }\r
             if (url.EndsWith("api_req_hokyu/charge"))\r
@@ -368,7 +368,7 @@ namespace KancolleSniffer
             {\r
                 _shipInfo.InspectPowerup(request, data);\r
                 _conditionTimer.CheckCond();\r
-                _akashiTimer.SetTimer();\r
+                _akashiTimer.CheckFleet();\r
                 return Update.Item | Update.Ship;\r
             }\r
             if (url.EndsWith("api_req_kaisou/slot_exchange_index"))\r
@@ -380,7 +380,7 @@ namespace KancolleSniffer
             {\r
                 _dockInfo.InspectNyukyo(request);\r
                 _conditionTimer.CheckCond();\r
-                _akashiTimer.SetTimer();\r
+                _akashiTimer.CheckFleet();\r
                 return Update.Item | Update.Ship;\r
             }\r
             if (url.EndsWith("api_req_nyukyo/speedchange"))\r