ResumeLayout();\r
}\r
\r
+ private class Total\r
+ {\r
+ public int Drum;\r
+ public int DrumShips;\r
+ public int Level;\r
+ public int FirePower;\r
+ public int AntiSubmarine;\r
+ public int AntiAir;\r
+ public int LoS;\r
+ public int Fuel;\r
+ public int Bull;\r
+\r
+ public void Add(ShipStatus s)\r
+ {\r
+ var drum = s.Slot.Count(item => item.Spec.Name == "ドラム缶(輸送用)");\r
+ DrumShips += drum != 0 ? 1 : 0;\r
+ Drum += drum;\r
+ Level += s.Level;\r
+ FirePower += s.Firepower;\r
+ AntiSubmarine += s.MissionAntiSubmarine;\r
+ AntiAir += s.AntiAir;\r
+ LoS += s.LoS;\r
+ Fuel += s.EffectiveFuelMax;\r
+ Bull += s.EffectiveBullMax;\r
+ }\r
+ }\r
+\r
private void CreateTable(Sniffer sniffer)\r
{\r
var list = new List<Record>();\r
var fn = new[] {"第一", "第二", "第三", "第四"};\r
for (var f = 0; f < fn.Length; f++)\r
{\r
- var drumTotal = 0;\r
- var drumShips = 0;\r
- var levelTotal = 0;\r
- var fpTotal = 0;\r
- var aswTotal = 0;\r
- var antiAirTotal = 0;\r
- var fuelTotal = 0;\r
- var bullTotal = 0;\r
- var losTotal = 0;\r
+ var total = new Total();\r
var ships = new List<Record>();\r
foreach (var s in sniffer.GetShipStatuses(f))\r
{\r
- var drum = 0;\r
var equips = new List<Record>();\r
for (var i = 0; i < s.Slot.Length; i++)\r
{\r
var max = s.Spec.MaxEq[i];\r
if (item.Id == -1)\r
continue;\r
- if (item.Spec.Name == "ドラム缶(輸送用)")\r
- drum++;\r
var airspec = "";\r
if (item.Spec.IsDiveBomber) // 爆撃\r
{\r
var normal = 25 + item.Spec.Torpedo * Math.Sqrt(onslot);\r
airspec = "航空戦 " + (int)(normal * 0.8) + "/" + (int)(normal * 1.5);\r
}\r
-\r
equips.Add(new Record\r
{\r
Equip = GenEquipString(item),\r
var item = s.SlotEx;\r
equips.Add(new Record {Equip = GenEquipString(item), Color = item.Spec.Color});\r
}\r
- if (drum != 0)\r
- drumShips++;\r
- drumTotal += drum;\r
- levelTotal += s.Level;\r
- fpTotal += s.Firepower;\r
- aswTotal += s.MissionAntiSubmarine;\r
- antiAirTotal += s.AntiAir;\r
- losTotal += s.LoS;\r
- fuelTotal += Math.Max((int)(s.Spec.FuelMax * (s.Level >= 100 ? 0.85 : 1.0)), 1);\r
- bullTotal += Math.Max((int)(s.Spec.BullMax * (s.Level >= 100 ? 0.85 : 1.0)), 1);\r
+ total.Add(s);\r
var fire = s.EffectiveFirepower;\r
var subm = s.EffectiveAntiSubmarine;\r
var torp = s.EffectiveTorpedo;\r
Ship = (s.Escaped ? "[避]" : "") + s.Name + " Lv" + s.Level,\r
Ship2 = "",\r
Id = s.Id,\r
- // ReSharper disable CompareOfFloatsByEqualityOperator\r
- Spec = (fire == 0 ? "" : $"砲{fire:f1}") + (subm == 0 ? "" : $" 潜{subm:f1}{oasa}"),\r
- Spec2 = (torp == 0 ? "" : $"雷{torp:f1}") + (night == 0 ? "" : $" 夜{night:f1}")\r
- // ReSharper restore CompareOfFloatsByEqualityOperator\r
+ Spec = HideIfZero("砲", fire) + HideIfZero(" 潜", subm) + oasa,\r
+ Spec2 = HideIfZero("雷", torp) + HideIfZero(" 夜", night)\r
};\r
if (ship.Spec == "")\r
{\r
tp += sniffer.GetTransportPoint(1);\r
list.Add(new Record\r
{\r
- Fleet = fn[f] + (levelTotal == 0 ? "" : " Lv" + levelTotal) +\r
- (drumTotal == 0 ? "" : " ドラム缶" + drumTotal + "(" + drumShips + "隻)") +\r
- (daihatsu > 0 ? $" 大発{daihatsu * 100:f1}%" : ""),\r
+ Fleet = fn[f] + HideIfZero(" Lv", total.Level) +\r
+ HideIfZero(" ドラム缶", total.Drum) + HideIfZero("(", total.DrumShips, "隻)") +\r
+ HideIfZero(" 大発", daihatsu * 100, "%"),\r
Fleet2 = "計:" +\r
- "火" + CutOverFlow(fpTotal) +\r
- " 空" + CutOverFlow(antiAirTotal) +\r
- " 潜" + CutOverFlow(aswTotal) +\r
- " 索" + CutOverFlow(losTotal) + "\r\n" +\r
- $"戦闘:燃{fuelTotal / 5}弾{bullTotal / 5} 支援:燃{fuelTotal / 2}弾{(int)(bullTotal * 0.8)}" +\r
+ "火" + CutOverFlow(total.FirePower) +\r
+ " 空" + CutOverFlow(total.AntiAir) +\r
+ " 潜" + CutOverFlow(total.AntiSubmarine) +\r
+ " 索" + CutOverFlow(total.LoS) + "\r\n" +\r
+ $"戦闘:燃{total.Fuel / 5}弾{total.Bull / 5} 支援:燃{total.Fuel / 2}弾{(int)(total.Bull * 0.8)}" +\r
(sniffer.CombinedFleetType != 0 && f == 1 ? "" : $"\r\nTP:S{(int)tp} A{(int)(tp * 0.7)}")\r
});\r
list.AddRange(ships);\r
\r
private int CutOverFlow(int value) => value > 999 ? 999 : value;\r
\r
+ private string HideIfZero(string name, double value, string suffix = "")\r
+ {\r
+ return value > 0 ? name + value.ToString("f1") + suffix : "";\r
+ }\r
+\r
+ private string HideIfZero(string name, int value, string suffix = "")\r
+ {\r
+ return value > 0 ? name + value + suffix : "";\r
+ }\r
+\r
private string GenEquipString(ItemStatus item)\r
{\r
var name = item.Spec.Name;\r