OSDN Git Service

海戦ログの出力まわりをリファクタリングする
authorKazuhiro Fujieda <fujieda@users.osdn.me>
Thu, 25 Jul 2019 11:58:03 +0000 (20:58 +0900)
committerKazuhiro Fujieda <fujieda@users.osdn.me>
Thu, 25 Jul 2019 11:58:03 +0000 (20:58 +0900)
KancolleSniffer/Log/BattleLogger.cs
KancolleSniffer/Log/Logger.cs

index d7a6f48..8856fa6 100644 (file)
@@ -72,8 +72,23 @@ namespace KancolleSniffer.Log
 \r
         public void InspectBattleResult(dynamic result)\r
         {\r
-            if (result.disabled())\r
-                return;\r
+            WriteLog(result);\r
+            _cell.Start = false;\r
+        }\r
+\r
+        private void WriteLog(dynamic result)\r
+        {\r
+            var log = CreateLog(result);\r
+            _writer("海戦・ドロップ報告書", log,\r
+                "日付,海域,マス,ボス,ランク,艦隊行動,味方陣形,敵陣形,敵艦隊,ドロップ艦種,ドロップ艦娘," +\r
+                "味方艦1,味方艦1HP,味方艦2,味方艦2HP,味方艦3,味方艦3HP,味方艦4,味方艦4HP,味方艦5,味方艦5HP,味方艦6,味方艦6HP," +\r
+                "敵艦1,敵艦1HP,敵艦2,敵艦2HP,敵艦3,敵艦3HP,敵艦4,敵艦4HP,敵艦5,敵艦5HP,敵艦6,敵艦6HP," +\r
+                "味方制空値,敵制空値,制空状態,マップ"\r
+            );\r
+        }\r
+\r
+        private string CreateLog(dynamic result)\r
+        {\r
             var fShips = GenerateFriendShipList();\r
             var eShips = GenerateEnemyShipList();\r
             var boss = "";\r
@@ -81,45 +96,43 @@ namespace KancolleSniffer.Log
                 boss = "出撃";\r
             if (_cell.Boss)\r
                 boss = _cell.Start ? "出撃&ボス" : "ボス";\r
-            var dropType = result.api_get_ship() ? result.api_get_ship.api_ship_type : "";\r
-            if (result.api_get_useitem())\r
-            {\r
-                if (dropType == "")\r
-                    dropType = "アイテム";\r
-                else\r
-                    dropType += "+アイテム";\r
-            }\r
-            var dropName = result.api_get_ship() ? result.api_get_ship.api_ship_name : "";\r
-            if (result.api_get_useitem())\r
-            {\r
-                var itemName = _itemInfo.GetUseItemName((int)result.api_get_useitem.api_useitem_id);\r
-                if (dropName == "")\r
-                    dropName = itemName;\r
-                else\r
-                    dropName += "+" + itemName;\r
-            }\r
+            var dropType = CreateDropType(result);\r
+            var dropName = CreateDropName(result);\r
+            var enemyName = result.api_enemy_info.api_deck_name;\r
+            var rank = result.api_win_rank;\r
             var fp = _battleInfo.FighterPower;\r
             var fPower = fp.Diff ? fp.RangeString : fp.Min.ToString();\r
-            _writer("海戦・ドロップ報告書", string.Join(",",\r
-                    _mapName[_cell.Id],\r
-                    _cell.Cell, boss,\r
-                    result.api_win_rank,\r
-                    BattleFormationName(_battleInfo.Formation[2]),\r
-                    FormationName(_battleInfo.Formation[0]),\r
-                    FormationName(_battleInfo.Formation[1]),\r
-                    result.api_enemy_info.api_deck_name,\r
-                    dropType, dropName,\r
-                    string.Join(",", fShips),\r
-                    string.Join(",", eShips),\r
-                    fPower, _battleInfo.EnemyFighterPower.AirCombat + _battleInfo.EnemyFighterPower.UnknownMark,\r
-                    AirControlLevelName(_battleInfo.AirControlLevel),\r
-                    $"{_cell.Area}-{_cell.Map}"),\r
-                "日付,海域,マス,ボス,ランク,艦隊行動,味方陣形,敵陣形,敵艦隊,ドロップ艦種,ドロップ艦娘," +\r
-                "味方艦1,味方艦1HP,味方艦2,味方艦2HP,味方艦3,味方艦3HP,味方艦4,味方艦4HP,味方艦5,味方艦5HP,味方艦6,味方艦6HP," +\r
-                "敵艦1,敵艦1HP,敵艦2,敵艦2HP,敵艦3,敵艦3HP,敵艦4,敵艦4HP,敵艦5,敵艦5HP,敵艦6,敵艦6HP," +\r
-                "味方制空値,敵制空値,制空状態,マップ"\r
-            );\r
-            _cell.Start = false;\r
+            return string.Join(",",\r
+                _mapName[_cell.Id],\r
+                _cell.Cell, boss,\r
+                rank,\r
+                BattleFormationName(_battleInfo.Formation[2]),\r
+                FormationName(_battleInfo.Formation[0]),\r
+                FormationName(_battleInfo.Formation[1]),\r
+                enemyName,\r
+                dropType, dropName,\r
+                string.Join(",", fShips),\r
+                string.Join(",", eShips),\r
+                fPower, _battleInfo.EnemyFighterPower.AirCombat + _battleInfo.EnemyFighterPower.UnknownMark,\r
+                AirControlLevelName(_battleInfo.AirControlLevel),\r
+                $"{_cell.Area}-{_cell.Map}");\r
+        }\r
+\r
+        private static string CreateDropType(dynamic result)\r
+        {\r
+            var type = result.api_get_ship() ? (string)result.api_get_ship.api_ship_type : "";\r
+            if (!result.api_get_useitem())\r
+                return type;\r
+            return type == "" ? "アイテム" : type + "+アイテム";\r
+        }\r
+\r
+        private string CreateDropName(dynamic result)\r
+        {\r
+            var name = result.api_get_ship() ? (string)result.api_get_ship.api_ship_name : "";\r
+            if (!result.api_get_useitem())\r
+                return name;\r
+            var itemName = _itemInfo.GetUseItemName((int)result.api_get_useitem.api_useitem_id);\r
+            return name == "" ? itemName : name + "+" + itemName;\r
         }\r
 \r
         private IEnumerable<string> GenerateFriendShipList()\r
index 968d751..633843c 100644 (file)
@@ -142,7 +142,8 @@ namespace KancolleSniffer.Log
 \r
         public void InspectMapStart(dynamic json)\r
         {\r
-            _battleLogger.InspectMapStart(json);\r
+            if ((_logType & LogType.Battle) != 0)\r
+                _battleLogger.InspectMapStart(json);\r
             if ((_logType & LogType.Material) != 0)\r
                 WriteMaterialLog(_nowFunc());\r
         }\r
@@ -153,7 +154,8 @@ namespace KancolleSniffer.Log
             {\r
                 WriteNow("戦果", _lastExp + "," + (int)json.api_get_eo_rate, "日付,経験値,EO");\r
             }\r
-            _battleLogger.InspectMapNext(json);\r
+            if ((_logType & LogType.Battle) != 0)\r
+                _battleLogger.InspectMapNext(json);\r
         }\r
 \r
         public void InspectClearItemGet(dynamic json)\r
@@ -183,9 +185,8 @@ namespace KancolleSniffer.Log
                     WriteNow("戦果", _lastExp + "," + rate, "日付,経験値,EO");\r
                 }\r
             }\r
-            if ((_logType & LogType.Battle) == 0)\r
-                result.disabled = true;\r
-            _battleLogger.InspectBattleResult(result);\r
+            if ((_logType & LogType.Battle) != 0)\r
+                _battleLogger.InspectBattleResult(result);\r
         }\r
 \r
         public void InspectBasic(dynamic json)\r