using System.Drawing;\r
using System.Linq;\r
using System.Windows.Forms;\r
+using KancolleSniffer.Model;\r
\r
namespace KancolleSniffer.View\r
{\r
var forFleet = new[] {1.0, 1.2, 1.6}.Select(r => (int)(rawForFleet * r) * 2 / 1.3).ToArray();\r
_table.Add(new Record\r
{\r
- Fleet = fn[fleet.Number] + " : " + string.Join("/", forFleet.Select(x => x.ToString("f1")))\r
+ Fleet = fn[fleet.Number] + " 防空" + string.Join("/", forFleet.Select(x => x.ToString("f1")))\r
});\r
foreach (var ship in ships)\r
{\r
- var rate = ship.EffectiveAntiAirForShip / 4.0;\r
- var diff = forFleet.Select(x => (x + ship.EffectiveAntiAirForShip) / 10.0);\r
- _table.Add(new Record\r
- {\r
- Ship = ship.Name + " Lv" + ship.Level +\r
- " : " + ship.EffectiveAntiAirForShip.ToString("d"),\r
- Id = ship.Id\r
- });\r
- _table.Add(new Record\r
- {\r
- Rate = "割合: " + rate.ToString("f1") + "% ",\r
- Diff = "固定: " + string.Join("/", diff.Select(d => d.ToString("f1")))\r
- });\r
+ _table.Add(CreateShipRecord(ship));\r
+ _table.Add(CreateAntiAirRecord(forFleet, ship));\r
}\r
}\r
}\r
\r
+ private Record CreateShipRecord(ShipStatus ship)\r
+ {\r
+ var param = " Lv" + ship.Level +\r
+ " 加重" + ship.EffectiveAntiAirForShip.ToString("d") +\r
+ AntiAirPropellantBarrageChange(ship);\r
+ var name = ship.Name;\r
+ var realWidth = Scaler.ScaleWidth(ListForm.PanelWidth - 10);\r
+ return new Record\r
+ {\r
+ Ship = StringTruncator.Truncate(name, param, realWidth, GetFont(name)) + param,\r
+ Id = ship.Id\r
+ };\r
+ }\r
+\r
+ private Record CreateAntiAirRecord(double[] forFleet, ShipStatus ship)\r
+ {\r
+ var rate = ship.EffectiveAntiAirForShip / 4.0;\r
+ var diff = forFleet.Select(x => (x + ship.EffectiveAntiAirForShip) / 10.0);\r
+ return new Record\r
+ {\r
+ Rate = "割合" + rate.ToString("f1") + "% ",\r
+ Diff = "固定" + string.Join("/", diff.Select(d => d.ToString("f1")))\r
+ };\r
+ }\r
+\r
+ private static Font GetFont(string name)\r
+ {\r
+ return ShipLabel.Name.StartWithLetter(name)\r
+ ? ShipLabel.Name.LatinFont\r
+ : ShipLabel.Name.BaseFont;\r
+ }\r
+\r
+ private static string AntiAirPropellantBarrageChange(ShipStatus ship)\r
+ {\r
+ // ReSharper disable once CompareOfFloatsByEqualityOperator\r
+ if (ship.AntiAirPropellantBarrageChance == 0)\r
+ return "";\r
+ var chance = ship.AntiAirPropellantBarrageChance;\r
+ return " 弾幕" + chance.ToString(chance >= 100 ? "d" : "f1");\r
+ }\r
+\r
private void CreateLabels()\r
{\r
for (var i = _labelList.Count; i < _table.Count; i++)\r