OSDN Git Service

基本攻撃力に連合艦隊補正を反映させる
authorKazuhiro Fujieda <fujieda@users.osdn.me>
Sat, 26 Mar 2016 15:10:39 +0000 (00:10 +0900)
committerKazuhiro Fujieda <fujieda@users.osdn.me>
Sat, 26 Mar 2016 15:10:39 +0000 (00:10 +0900)
KancolleSniffer/ShipInfo.cs

index 1368437..8de48e1 100644 (file)
@@ -22,7 +22,7 @@ namespace KancolleSniffer
     public class ShipStatus\r
     {\r
         public int Id { get; set; }\r
-        public int Fleet { get; set; } // ShipListだけで使う\r
+        public int Fleet { get; set; }\r
         public ShipSpec Spec { get; set; }\r
 \r
         public string Name => Spec.Name;\r
@@ -46,6 +46,8 @@ namespace KancolleSniffer
 \r
         public Damage DamageLevel => CalcDamage(NowHp, MaxHp);\r
 \r
+        public int CombinedFleetType { get; set; }\r
+\r
         public ShipStatus()\r
         {\r
             Id = -1;\r
@@ -98,13 +100,33 @@ namespace KancolleSniffer
                     return 0;\r
                 var levelBonus = Slot.Sum(item => item.FirePowerLevelBonus);\r
                 if (!Spec.IsAircraftCarrier)\r
-                    return Firepower + levelBonus + 5;\r
+                    return Firepower + levelBonus + CombinedFleetFirepowerBonus + 5;\r
                 var specs = (from item in Slot where item.Spec.IsAircraft select item.Spec).ToArray();\r
                 var torpedo = specs.Sum(s => s.Torpedo);\r
                 var bomber = specs.Sum(s => s.Bomber);\r
                 if (torpedo == 0 && bomber == 0)\r
                     return 0;\r
-                return (int)((Firepower + torpedo + levelBonus + (int)(bomber * 1.3)) * 1.5) + 55;\r
+                return (int)((Firepower + torpedo + levelBonus + (int)(bomber * 1.3) + CombinedFleetFirepowerBonus) * 1.5) + 55;\r
+            }\r
+        }\r
+\r
+        private int CombinedFleetFirepowerBonus\r
+        {\r
+            get\r
+            {\r
+                switch (CombinedFleetType)\r
+                {\r
+                    case 0:\r
+                        return 0;\r
+                    case 1: // 機動\r
+                        return Fleet == 0 ? 2 : 10;\r
+                    case 2: // 水上\r
+                        return Fleet == 0 ? 10 : -5;\r
+                    case 3: // 輸送\r
+                        return Fleet == 0 ? -5 : 10;\r
+                    default:\r
+                        return 0;\r
+                }\r
             }\r
         }\r
 \r
@@ -114,10 +136,12 @@ namespace KancolleSniffer
             {\r
                 if (Spec.IsAircraftCarrier || Torpedo == 0)\r
                     return 0;\r
-                return Torpedo + Slot.Sum(item => item.TorpedoLevelBonus) + 5;\r
+                return Torpedo + Slot.Sum(item => item.TorpedoLevelBonus) + CombinedFleetTorpedoPenalty + 5;\r
             }\r
         }\r
 \r
+        private int CombinedFleetTorpedoPenalty => CombinedFleetType > 0 && Fleet == 1 ? -5 : 0;\r
+\r
         public double RealAntiSubmarine\r
         {\r
             get\r
@@ -476,6 +500,9 @@ namespace KancolleSniffer
             s.Slot = s.Slot.Select(item => _itemInfo.GetStatus(item.Id)).ToArray();\r
             s.SlotEx = _itemInfo.GetStatus(s.SlotEx.Id);\r
             s.Escaped = _escapedShips.Contains(id);\r
+            int idx;\r
+            s.Fleet = FindFleet(s.Id, out idx);\r
+            s.CombinedFleetType = s.Fleet < 2 ? _combinedFleetType : 0;\r
             return s;\r
         }\r
 \r
@@ -487,15 +514,7 @@ namespace KancolleSniffer
 \r
         public int CombinedFleetType => _combinedFleetType;\r
 \r
-        public ShipStatus[] ShipList\r
-            => _shipInfo.Values.Where(s => s.Level != 0).Select(s =>\r
-            {\r
-                int oi;\r
-                var f = FindFleet(s.Id, out oi);\r
-                s.Fleet = f;\r
-                s.Escaped = _escapedShips.Contains(s.Id);\r
-                return s;\r
-            }).ToArray();\r
+        public ShipStatus[] ShipList => _shipInfo.Keys.Where(id => id != -1).Select(GetStatus).ToArray();\r
 \r
         public ChargeStatus[] ChargeStatuses\r
             => (from deck in _decks\r