OSDN Git Service

サーバーの返す入渠時間を使う
authorKazuhiro Fujieda <fujieda@users.osdn.me>
Wed, 10 May 2017 17:29:29 +0000 (02:29 +0900)
committerKazuhiro Fujieda <fujieda@users.osdn.me>
Wed, 10 May 2017 17:29:29 +0000 (02:29 +0900)
KancolleSniffer/AkashiTimer.cs
KancolleSniffer/DockInfo.cs
KancolleSniffer/ShipInfo.cs
KancolleSniffer/ShipListPanel.cs
KancolleSniffer/ShipMaster.cs

index d39cda1..2a142d8 100644 (file)
@@ -49,7 +49,7 @@ namespace KancolleSniffer
                 prev - start < TimeSpan.FromMinutes(FirstRepairTime) &&\r
                 now - start >= TimeSpan.FromMinutes(FirstRepairTime);\r
 \r
-            private int RepairTime(ShipStatus ship, int damage) => ship.CalcRepairSec(damage) + 70;\r
+            private int RepairTime(ShipStatus ship, int damage) => (int)ship.RepairTimeByDamage(damage).TotalSeconds + 70;\r
 \r
             public int[] Deck\r
             {\r
index b437f13..e1414bb 100644 (file)
@@ -53,10 +53,9 @@ namespace KancolleSniffer
         {\r
             var values = HttpUtility.ParseQueryString(request);\r
             var id = int.Parse(values["api_ship_id"]);\r
-            int fuel, steal;\r
-            _shipInfo.GetStatus(id).CalcMaterialsToRepair(out fuel, out steal);\r
-            _materialInfo.SubMaterial(Material.Fuel, fuel);\r
-            _materialInfo.SubMaterial(Material.Steal, steal);\r
+            var m = _shipInfo.GetStatus(id).NdockItem;\r
+            _materialInfo.SubMaterial(Material.Fuel, m[0]);\r
+            _materialInfo.SubMaterial(Material.Steal, m[1]);\r
             if (int.Parse(values["api_highspeed"]) == 0)\r
                 return;\r
             _shipInfo.RepairShip(id);\r
index 97bac52..74cbf7f 100644 (file)
@@ -37,6 +37,8 @@ namespace KancolleSniffer
         public int[] OnSlot { get; set; }\r
         public ItemStatus[] Slot { get; set; }\r
         public ItemStatus SlotEx { get; set; }\r
+        public int NdockTime { get; set; }\r
+        public int[] NdockItem { get; set; }\r
         public int LoS { get; set; }\r
         public int Firepower { get; set; }\r
         public int Torpedo { get; set; }\r
@@ -79,26 +81,11 @@ namespace KancolleSniffer
             return ratio > 0.75 ? Damage.Minor : ratio > 0.5 ? Damage.Small : ratio > 0.25 ? Damage.Half : Damage.Badly;\r
         }\r
 \r
-        public TimeSpan RepairTime => TimeSpan.FromSeconds(CalcRepairSec(MaxHp - NowHp) + 30);\r
+        public TimeSpan RepairTime => TimeSpan.FromMilliseconds(NdockTime);\r
 \r
-        public int CalcRepairSec(int damage) => (int)(RepairSecPerHp * damage);\r
+        public TimeSpan RepairTimePerHp => TimeSpan.FromMilliseconds((NdockTime - 30 * 1000.0) / (MaxHp - NowHp));\r
 \r
-        public double RepairSecPerHp\r
-        {\r
-            get\r
-            {\r
-                var weight = Spec.RepairWeight;\r
-                var level = Level < 12 ? Level * 10 : Level * 5 + Floor(Sqrt(Level - 11)) * 10 + 50;\r
-                return level * weight;\r
-            }\r
-        }\r
-\r
-        public void CalcMaterialsToRepair(out int fuel, out int steal)\r
-        {\r
-            var damage = MaxHp - NowHp;\r
-            fuel = (int)(Spec.FuelMax * 0.2 * 0.16 * damage);\r
-            steal = (int)(Spec.FuelMax * 0.2 * 0.3 * damage);\r
-        }\r
+        public TimeSpan RepairTimeByDamage(int damage) => TimeSpan.FromTicks(RepairTimePerHp.Ticks * damage);\r
 \r
         public double EffectiveFirepower\r
         {\r
@@ -367,6 +354,8 @@ namespace KancolleSniffer
                     OnSlot = (int[])entry.api_onslot,\r
                     Slot = ((int[])entry.api_slot).Select(id => new ItemStatus(id)).ToArray(),\r
                     SlotEx = entry.api_slot_ex() ? new ItemStatus((int)entry.api_slot_ex) : new ItemStatus(0),\r
+                    NdockTime = (int)entry.api_ndock_time,\r
+                    NdockItem = (int[])entry.api_ndock_item,\r
                     LoS = (int)entry.api_sakuteki[0],\r
                     Firepower = (int)entry.api_karyoku[0],\r
                     Torpedo = (int)entry.api_raisou[0],\r
index a3ec97f..e634952 100644 (file)
@@ -477,7 +477,7 @@ namespace KancolleSniffer
             rpl[0].SetHp(s);\r
             rpl[1].SetLevel(s);\r
             rpl[2].SetRepairTime(s);\r
-            rpl[3].Text = TimeSpan.FromSeconds(s.RepairSecPerHp).ToString(@"mm\:ss");\r
+            rpl[3].Text = s.RepairTimePerHp.ToString(@"mm\:ss");\r
             rpl[4].SetName(s, ShipNameWidth.RepairListFull);\r
             rpl[5].SetFleet(s);\r
             panel.Visible = true;\r
index 67001fe..928f692 100644 (file)
@@ -125,39 +125,6 @@ namespace KancolleSniffer
             MaxEq = new int[0];\r
         }\r
 \r
-        public double RepairWeight\r
-        {\r
-            get\r
-            {\r
-                switch (ShipType)\r
-                {\r
-                    case 13: // 潜水艦\r
-                        return 0.5;\r
-                    case 2: // 駆逐艦\r
-                    case 3: // 軽巡洋艦\r
-                    case 4: // 重雷装巡洋艦\r
-                    case 14: // 潜水空母\r
-                    case 16: // 水上機母艦\r
-                    case 17: // 揚陸艦\r
-                    case 21: // 練習巡洋艦\r
-                        return 1.0;\r
-                    case 5: // 重巡洋艦\r
-                    case 6: // 航空巡洋艦\r
-                    case 7: // 軽空母\r
-                    case 8: // 高速戦艦\r
-                    case 20: // 潜水母艦\r
-                        return 1.5;\r
-                    case 9: // 低速戦艦\r
-                    case 10: // 航空戦艦\r
-                    case 11: // 正規空母\r
-                    case 18: // 装甲空母\r
-                    case 19: // 工作艦\r
-                        return 2.0;\r
-                }\r
-                return 1.0;\r
-            }\r
-        }\r
-\r
         public double TransportPoint\r
         {\r
             get\r