OSDN Git Service

Sniffメソッドを分割する
authorKazuhiro Fujieda <fujieda@users.osdn.me>
Sat, 10 Oct 2015 14:41:58 +0000 (23:41 +0900)
committerKazuhiro Fujieda <fujieda@users.osdn.me>
Sat, 17 Oct 2015 06:21:28 +0000 (15:21 +0900)
KancolleSniffer/Sniffer.cs

index c34c1b0..945ef8a 100644 (file)
@@ -95,37 +95,58 @@ namespace KancolleSniffer
 \r
             if (url.EndsWith("api_start2"))\r
             {\r
-                _shipInfo.InspectMaster(data);\r
-                _missionInfo.InspectMaster(data.api_mst_mission);\r
-                _itemInfo.InspectMaster(data);\r
-                _exMapInfo.ResetIfNeeded();\r
                 _start = true;\r
-                return Update.Start;\r
+                return ApiStart(data);\r
             }\r
             if (!_start)\r
                 return Update.None;\r
             if (url.EndsWith("api_port/port"))\r
-            {\r
-                _itemInfo.InspectBasic(data.api_basic);\r
-                _materialInfo.InspectMaterial(data.api_material, true);\r
-                _logger.InspectBasic(data.api_basic);\r
-                _logger.InspectMaterial(data.api_material);\r
-                _shipInfo.InspectShip(data);\r
-                _conditionTimer.CalcRegenTime();\r
-                _missionInfo.InspectDeck(data.api_deck_port);\r
-                _dockInfo.InspectNDock(data.api_ndock);\r
-                _akashiTimer.SetTimer(true);\r
-                _achievement.InspectBasic(data.api_basic);\r
-                if (data.api_parallel_quest_count()) // 昔のログにはないので\r
-                    _questInfo.QuestCount = (int)data.api_parallel_quest_count;\r
-                _battleInfo.CleanupResult();\r
-                _battleInfo.InBattle = false;\r
-                _battleInfo.HasDamagedShip = false;\r
-                _shipInfo.ClearEscapedShips();\r
-                _miscTextInfo.ClearIfNeeded();\r
-                SaveState();\r
-                return Update.All;\r
-            }\r
+                return ApiPort(data);\r
+            if (url.Contains("member"))\r
+                return ApiMember(url, json);\r
+            if (url.Contains("kousyou"))\r
+                return ApiKousyou(url, request, data);\r
+            if (url.Contains("battle"))\r
+                return ApiBattle(url, request, data);\r
+            return ApiOthers(url, request, data);\r
+        }\r
+\r
+        private Update ApiStart(dynamic data)\r
+        {\r
+            _shipInfo.InspectMaster(data);\r
+            _missionInfo.InspectMaster(data.api_mst_mission);\r
+            _itemInfo.InspectMaster(data);\r
+            _exMapInfo.ResetIfNeeded();\r
+            return Update.Start;\r
+        }\r
+\r
+        private Update ApiPort(dynamic data)\r
+        {\r
+            _itemInfo.InspectBasic(data.api_basic);\r
+            _materialInfo.InspectMaterial(data.api_material, true);\r
+            _logger.InspectBasic(data.api_basic);\r
+            _logger.InspectMaterial(data.api_material);\r
+            _shipInfo.InspectShip(data);\r
+            _conditionTimer.CalcRegenTime();\r
+            _missionInfo.InspectDeck(data.api_deck_port);\r
+            _dockInfo.InspectNDock(data.api_ndock);\r
+            _akashiTimer.SetTimer(true);\r
+            _achievement.InspectBasic(data.api_basic);\r
+            if (data.api_parallel_quest_count()) // 昔のログにはないので\r
+                _questInfo.QuestCount = (int)data.api_parallel_quest_count;\r
+            _battleInfo.CleanupResult();\r
+            _battleInfo.InBattle = false;\r
+            _battleInfo.HasDamagedShip = false;\r
+            _shipInfo.ClearEscapedShips();\r
+            _miscTextInfo.ClearIfNeeded();\r
+            SaveState();\r
+            return Update.All;\r
+        }\r
+\r
+        private Update ApiMember(string url, dynamic json)\r
+        {\r
+            var data = json.api_data() ? json.api_data : new object();\r
+\r
             if (url.EndsWith("api_get_member/basic"))\r
             {\r
                 _itemInfo.InspectBasic(data);\r
@@ -150,12 +171,6 @@ namespace KancolleSniffer
                 _akashiTimer.SetTimer();\r
                 return Update.NDock | Update.Timer | Update.Ship;\r
             }\r
-            if (url.EndsWith("api_req_hensei/change"))\r
-            {\r
-                _shipInfo.InspectChange(request);\r
-                _akashiTimer.SetTimer();\r
-                return Update.Ship;\r
-            }\r
             if (url.EndsWith("api_get_member/questlist"))\r
             {\r
                 _questInfo.Inspect(data);\r
@@ -195,12 +210,22 @@ namespace KancolleSniffer
                 _materialInfo.InspectMaterial(data);\r
                 return Update.Item;\r
             }\r
-            if (url.EndsWith("api_req_hokyu/charge"))\r
+            if (url.EndsWith("api_get_member/mapinfo"))\r
             {\r
-                _shipInfo.InspectCharge(data);\r
-                _materialInfo.InspectCharge(data);\r
-                return Update.Item | Update.Ship;\r
+                _exMapInfo.InspectMapInfo(data);\r
+                _miscTextInfo.InspectMapInfo(data);\r
+                return Update.Item;\r
             }\r
+            if (url.EndsWith("api_req_member/get_practice_enemyinfo"))\r
+            {\r
+                _miscTextInfo.InspectPracticeEnemyInfo(data);\r
+                return Update.Item;\r
+            }\r
+            return Update.None;\r
+        }\r
+\r
+        private Update ApiKousyou(string url, string request, dynamic data)\r
+        {\r
             if (url.EndsWith("api_req_kousyou/createitem"))\r
             {\r
                 _itemInfo.InspectCreateItem(data);\r
@@ -248,26 +273,11 @@ namespace KancolleSniffer
                 _dockInfo.InspectCreateShipSpeedChange(request);\r
                 return Update.Timer;\r
             }\r
-            if (url.EndsWith("api_req_kaisou/powerup"))\r
-            {\r
-                _shipInfo.InspectPowerup(request, data);\r
-                _conditionTimer.CheckCond();\r
-                _akashiTimer.SetTimer();\r
-                return Update.Item | Update.Ship;\r
-            }\r
-            if (url.EndsWith("api_req_nyukyo/start"))\r
-            {\r
-                _dockInfo.InspectNyukyo(request);\r
-                _conditionTimer.CheckCond();\r
-                _akashiTimer.SetTimer();\r
-                return Update.Item | Update.Ship;\r
-            }\r
-            if (url.EndsWith("api_req_nyukyo/speedchange"))\r
-            {\r
-                _dockInfo.InspectSpeedChange(request);\r
-                _conditionTimer.CheckCond();\r
-                return Update.NDock | Update.Timer | Update.Ship;\r
-            }\r
+            return Update.None;\r
+        }\r
+\r
+        private Update ApiBattle(string url, string request, dynamic data)\r
+        {\r
             if (IsNormalBattleAPI(url))\r
             {\r
                 _battleInfo.InspectBattle(data);\r
@@ -287,14 +297,14 @@ namespace KancolleSniffer
             }\r
             if (url.EndsWith("api_req_sortie/battleresult"))\r
             {\r
-                _battleInfo.InspectBattleResult(json);\r
+                _battleInfo.InspectBattleResult(data);\r
                 _exMapInfo.InspectBattleResult(data);\r
                 _logger.InspectBattleResult(data);\r
                 return Update.Ship;\r
             }\r
             if (url.EndsWith("api_req_practice/battle_result"))\r
             {\r
-                _battleInfo.InspectPracticeResult(json);\r
+                _battleInfo.InspectPracticeResult(data);\r
                 return Update.Ship;\r
             }\r
             if (IsCombinedBattleAPI(url))\r
@@ -314,6 +324,60 @@ namespace KancolleSniffer
                 _battleInfo.CauseCombinedBattleEscape();\r
                 return Update.Ship;\r
             }\r
+            return Update.None;\r
+        }\r
+\r
+        private bool IsNormalBattleAPI(string url)\r
+        {\r
+            return url.EndsWith("api_req_sortie/battle") ||\r
+                   url.EndsWith("api_req_sortie/airbattle") ||\r
+                   url.EndsWith("api_req_battle_midnight/battle") ||\r
+                   url.EndsWith("api_req_battle_midnight/sp_midnight");\r
+        }\r
+\r
+        private bool IsCombinedBattleAPI(string url)\r
+        {\r
+            return url.EndsWith("api_req_combined_battle/battle") ||\r
+                   url.EndsWith("api_req_combined_battle/airbattle") ||\r
+                   url.EndsWith("api_req_combined_battle/battle_water") ||\r
+                   url.EndsWith("api_req_combined_battle/midnight_battle") ||\r
+                   url.EndsWith("api_req_combined_battle/sp_midnight");\r
+        }\r
+\r
+        private Update ApiOthers(string url, string request, dynamic data)\r
+        {\r
+            if (url.EndsWith("api_req_hensei/change"))\r
+            {\r
+                _shipInfo.InspectChange(request);\r
+                _akashiTimer.SetTimer();\r
+                return Update.Ship;\r
+            }\r
+            if (url.EndsWith("api_req_hokyu/charge"))\r
+            {\r
+                _shipInfo.InspectCharge(data);\r
+                _materialInfo.InspectCharge(data);\r
+                return Update.Item | Update.Ship;\r
+            }\r
+            if (url.EndsWith("api_req_kaisou/powerup"))\r
+            {\r
+                _shipInfo.InspectPowerup(request, data);\r
+                _conditionTimer.CheckCond();\r
+                _akashiTimer.SetTimer();\r
+                return Update.Item | Update.Ship;\r
+            }\r
+            if (url.EndsWith("api_req_nyukyo/start"))\r
+            {\r
+                _dockInfo.InspectNyukyo(request);\r
+                _conditionTimer.CheckCond();\r
+                _akashiTimer.SetTimer();\r
+                return Update.Item | Update.Ship;\r
+            }\r
+            if (url.EndsWith("api_req_nyukyo/speedchange"))\r
+            {\r
+                _dockInfo.InspectSpeedChange(request);\r
+                _conditionTimer.CheckCond();\r
+                return Update.NDock | Update.Timer | Update.Ship;\r
+            }\r
             if (url.EndsWith("api_req_map/start"))\r
             {\r
                 _shipInfo.StartSortie(request);\r
@@ -335,37 +399,9 @@ namespace KancolleSniffer
                 _logger.InspectMissionResult(data);\r
                 return Update.Item;\r
             }\r
-            if (url.EndsWith("api_get_member/mapinfo"))\r
-            {\r
-                _exMapInfo.InspectMapInfo(data);\r
-                _miscTextInfo.InspectMapInfo(data);\r
-                return Update.Item;\r
-            }\r
-            if (url.EndsWith("api_req_member/get_practice_enemyinfo"))\r
-            {\r
-                _miscTextInfo.InspectPracticeEnemyInfo(data);\r
-                return Update.Item;\r
-            }\r
             return Update.None;\r
         }\r
 \r
-        private bool IsNormalBattleAPI(string url)\r
-        {\r
-            return url.EndsWith("api_req_sortie/battle") ||\r
-                   url.EndsWith("api_req_sortie/airbattle") ||\r
-                   url.EndsWith("api_req_battle_midnight/battle") ||\r
-                   url.EndsWith("api_req_battle_midnight/sp_midnight");\r
-        }\r
-\r
-        private bool IsCombinedBattleAPI(string url)\r
-        {\r
-            return url.EndsWith("api_req_combined_battle/battle") ||\r
-                   url.EndsWith("api_req_combined_battle/airbattle") ||\r
-                   url.EndsWith("api_req_combined_battle/battle_water") ||\r
-                   url.EndsWith("api_req_combined_battle/midnight_battle") ||\r
-                   url.EndsWith("api_req_combined_battle/sp_midnight");\r
-        }\r
-\r
         public NameAndTimer[] NDock => _dockInfo.NDock;\r
 \r
         public RingTimer[] KDock => _dockInfo.KDock;\r