OSDN Git Service

ShipMasterの依存関係を減らす
authorKazuhiro Fujieda <fujieda@users.osdn.me>
Mon, 5 Oct 2015 11:02:54 +0000 (20:02 +0900)
committerKazuhiro Fujieda <fujieda@users.osdn.me>
Mon, 5 Oct 2015 11:02:54 +0000 (20:02 +0900)
KancolleSniffer/BattleInfo.cs
KancolleSniffer/Logger.cs
KancolleSniffer/ShipInfo.cs
KancolleSniffer/ShipMaster.cs
KancolleSniffer/Sniffer.cs

index 7e89540..fd97908 100644 (file)
@@ -34,7 +34,6 @@ namespace KancolleSniffer
 \r
     public class BattleInfo\r
     {\r
-        private readonly ShipMaster _shipMaster;\r
         private readonly ShipInfo _shipInfo;\r
         private readonly ItemInfo _itemInfo;\r
         private int _fleet;\r
@@ -54,9 +53,8 @@ namespace KancolleSniffer
         public BattleResultRank ResultRank { get; private set; }\r
         public ShipStatus[] EnemyResultStatus { get; private set; }\r
 \r
-        public BattleInfo(ShipMaster shipMaster, ShipInfo shipInfo, ItemInfo itemInfo)\r
+        public BattleInfo(ShipInfo shipInfo, ItemInfo itemInfo)\r
         {\r
-            _shipMaster = shipMaster;\r
             _shipInfo = shipInfo;\r
             _itemInfo = itemInfo;\r
         }\r
@@ -122,7 +120,7 @@ namespace KancolleSniffer
             EnemyResultStatus =\r
                 (from id in ((int[])json.api_ship_ke).Skip(1)\r
                     where id != -1\r
-                    select new ShipStatus {Id = id, Spec = _shipMaster[id]}).ToArray();\r
+                    select new ShipStatus {Id = id, Spec = _shipInfo.GetSpec(id)}).ToArray();\r
             if (combined)\r
             {\r
                 var gstats = _shipInfo.GetShipStatuses(1);\r
@@ -161,7 +159,7 @@ namespace KancolleSniffer
             var missing = 0;\r
             var maxEq = ((int[])json.api_ship_ke).Skip(1).SelectMany(id =>\r
             {\r
-                var r = _shipMaster[id].MaxEq;\r
+                var r = _shipInfo.GetSpec(id).MaxEq;\r
                 if (r != null)\r
                     return r;\r
                 missing = IncollectFighterPowerFlag;\r
index 5c70126..8274124 100644 (file)
@@ -40,7 +40,6 @@ namespace KancolleSniffer
     public class Logger\r
     {\r
         private LogType _logType;\r
-        private readonly ShipMaster _shipMaster;\r
         private readonly ShipInfo _shipInfo;\r
         private readonly ItemInfo _itemInfo;\r
         private readonly BattleInfo _battleInfo;\r
@@ -65,9 +64,8 @@ namespace KancolleSniffer
             set { _writer = new LogWriter(value).Write; }\r
         }\r
 \r
-        public Logger(ShipMaster master, ShipInfo ship, ItemInfo item, BattleInfo battle)\r
+        public Logger(ShipInfo ship, ItemInfo item, BattleInfo battle)\r
         {\r
-            _shipMaster = master;\r
             _shipInfo = ship;\r
             _itemInfo = item;\r
             _battleInfo = battle;\r
@@ -274,7 +272,7 @@ namespace KancolleSniffer
                 return;\r
             var kdock = ((dynamic[])json).First(e => e.api_id == _kdockId);\r
             var material = Enumerable.Range(1, 5).Select(i => (int)kdock["api_item" + i]).ToArray();\r
-            var ship = _shipMaster[(int)kdock.api_created_ship_id];\r
+            var ship = _shipInfo.GetSpec((int)kdock.api_created_ship_id);\r
             var avail = ((dynamic[])json).Count(e => (int)e.api_state == 0);\r
             _writer("建造報告書",\r
                 _nowFunc().ToString(DateTimeFormat) + "," +\r
index 54dda1e..498f754 100644 (file)
@@ -186,7 +186,7 @@ namespace KancolleSniffer
 \r
         private readonly int[][] _decks = new int[FleetCount][];\r
         private readonly Dictionary<int, ShipStatus> _shipInfo = new Dictionary<int, ShipStatus>();\r
-        private readonly ShipMaster _shipMaster;\r
+        private readonly ShipMaster _shipMaster = new ShipMaster();\r
         private readonly ItemInfo _itemInfo;\r
         private readonly bool[] _inMission = new bool[FleetCount];\r
         private readonly bool[] _inSortie = new bool[FleetCount];\r
@@ -194,9 +194,8 @@ namespace KancolleSniffer
         private readonly List<int> _escapedShips = new List<int>();\r
         private int _combinedFleetType;\r
 \r
-        public ShipInfo(ShipMaster shipMaster, ItemInfo itemInfo)\r
+        public ShipInfo(ItemInfo itemInfo)\r
         {\r
-            _shipMaster = shipMaster;\r
             _itemInfo = itemInfo;\r
 \r
             for (var fleet = 0; fleet < FleetCount; fleet++)\r
@@ -209,6 +208,11 @@ namespace KancolleSniffer
             ClearShipInfo();\r
         }\r
 \r
+        public void InspectMaster(dynamic json)\r
+        {\r
+            _shipMaster.Inspect(json);\r
+        }\r
+\r
         public void InspectShip(dynamic json)\r
         {\r
             if (json.api_deck_port()) // port\r
@@ -416,6 +420,8 @@ namespace KancolleSniffer
 \r
         public ShipStatus this[int idx] => _shipInfo[idx];\r
 \r
+        public ShipSpec GetSpec(int id) => _shipMaster[id];\r
+\r
         public bool InMission(int fleet) => _inMission[fleet];\r
 \r
         public bool InSortie(int fleet) => _inSortie[fleet];\r
index 0962641..da07db2 100644 (file)
@@ -59,10 +59,6 @@ namespace KancolleSniffer
             return name + "(" + flagship + ")";\r
         }\r
 \r
-        public void InspectStype(dynamic json)\r
-        {\r
-        }\r
-\r
         public ShipSpec this[int id] => _shipSpecs[id];\r
     }\r
 \r
index 58ff467..bf5d7c2 100644 (file)
@@ -24,7 +24,6 @@ namespace KancolleSniffer
     public class Sniffer\r
     {\r
         private bool _start;\r
-        private readonly ShipMaster _shipMaster = new ShipMaster();\r
         private readonly ItemInfo _itemInfo = new ItemInfo();\r
         private readonly QuestInfo _questInfo = new QuestInfo();\r
         private readonly MissionInfo _missionInfo = new MissionInfo();\r
@@ -59,12 +58,12 @@ namespace KancolleSniffer
 \r
         public Sniffer()\r
         {\r
-            _shipInfo = new ShipInfo(_shipMaster, _itemInfo);\r
+            _shipInfo = new ShipInfo(_itemInfo);\r
             _conditionTimer = new ConditionTimer(_shipInfo);\r
             _dockInfo = new DockInfo(_shipInfo, _itemInfo);\r
             _akashiTimer = new AkashiTimer(_shipInfo, _itemInfo, _dockInfo);\r
-            _battleInfo = new BattleInfo(_shipMaster, _shipInfo, _itemInfo);\r
-            _logger = new Logger(_shipMaster, _shipInfo, _itemInfo, _battleInfo);\r
+            _battleInfo = new BattleInfo(_shipInfo, _itemInfo);\r
+            _logger = new Logger(_shipInfo, _itemInfo, _battleInfo);\r
             _haveState = new List<IHaveState> {_achievement, _itemInfo, _conditionTimer, _exMapInfo};\r
         }\r
 \r
@@ -95,7 +94,7 @@ namespace KancolleSniffer
 \r
             if (url.EndsWith("api_start2"))\r
             {\r
-                _shipMaster.Inspect(data);\r
+                _shipInfo.InspectMaster(data);\r
                 _missionInfo.InspectMaster(data.api_mst_mission);\r
                 _itemInfo.InspectMaster(data);\r
                 _exMapInfo.ResetIfNeeded();\r