using System.IO;\r
using System.Linq;\r
using System.Text;\r
+using KancolleSniffer.Model;\r
\r
namespace KancolleSniffer\r
{\r
public static class TextGenerator\r
{\r
public static string GenerateShipList(IEnumerable<ShipStatus> shipList)\r
- => "ID,艦種,艦名,レベル,cond\r\n" +\r
+ => "ID,艦種,艦名,レベル,cond,素対潜\r\n" +\r
string.Join("\r\n",\r
from ship in shipList\r
orderby ship.Spec.ShipType, -ship.Level, ship.ExpToNext\r
- select $"{ship.Id},{ship.Spec.ShipTypeName},{ship.Name},{ship.Level},{ship.Cond}");\r
+ select $"{ship.Id},{ship.Spec.ShipTypeName},{ship.Name},{ship.Level},{ship.Cond},{ship.ShipAntiSubmarine}");\r
\r
+ // ReSharper disable IdentifierTypo\r
public static string GenerateKantaiSarashiData(IEnumerable<ShipStatus> shipList)\r
{\r
return ".2|" +\r
? "." + ship.Spec.Remodel.Step\r
: "")));\r
}\r
+ // ReSharper restore IdentifierTypo\r
\r
public static string GenerateItemList(IEnumerable<ItemStatus> itemList)\r
=> "区分,装備名,熟練度,改修,個数\r\n" +\r
string.Join("\r\n",\r
(from item in itemList\r
- where item.Spec.Id != -1\r
+ where !item.Spec.Empty\r
orderby item.Spec.Type, item.Spec.Id, item.Alv, item.Level\r
group item by\r
$"{item.Spec.TypeName},{item.Spec.Name},{item.Alv},{item.Level}"\r
{\r
var dict = new ItemName();\r
var sb = new StringBuilder();\r
+ for (var f = 0; f < ShipInfo.FleetCount; f++)\r
+ sb.Append(GenerateFleetData(sniffer, f, dict));\r
+ sb.Append(GenerateAirBase(sniffer, dict));\r
+ return sb.ToString();\r
+ }\r
+\r
+ public static string GenerateFleetData(Sniffer sniffer, int fleet)\r
+ {\r
+ return GenerateFleetData(sniffer, fleet, new ItemName()).ToString();\r
+ }\r
+\r
+ private static StringBuilder GenerateFleetData(Sniffer sniffer, int fleet, ItemName dict)\r
+ {\r
+ var target = sniffer.Fleets[fleet];\r
+ var sb = new StringBuilder();\r
var fn = new[] {"第一艦隊", "第二艦隊", "第三艦隊", "第四艦隊"};\r
- for (var f = 0; f < fn.Length; f++)\r
- {\r
- sb.Append(fn[f] + "\r\n");\r
- sb.Append(string.Concat(from s in sniffer.GetShipStatuses(f)\r
- select ($"{s.Name} Lv{s.Level} " +\r
- string.Join(",",\r
- from item in s.AllSlot\r
- where item.Id != -1\r
- select dict[item.Spec.Name] + ItemStatusString(item))).TrimEnd(' ') + "\r\n"));\r
- var fp = sniffer.GetFighterPower(f);\r
- sb.Append($"制空: {(fp[0] == fp[1] ? fp[0].ToString() : fp[0] + "~" + fp[1])} " +\r
- $"索敵: {sniffer.GetFleetLineOfSights(f, 1):F1}\r\n");\r
- }\r
- if (sniffer.BaseAirCorps != null)\r
+ sb.Append(fn[fleet] + "\r\n");\r
+ sb.Append(string.Concat(from s in target.ActualShips\r
+ select ($"{s.Name} Lv{s.Level} " +\r
+ string.Join(",",\r
+ from item in s.AllSlot\r
+ where !item.Empty\r
+ select dict[item.Spec.Name] + ItemStatusString(item))).TrimEnd(' ') + "\r\n"));\r
+ var fp = target.FighterPower;\r
+ sb.Append($"制空: {(fp[0] == fp[1] ? fp[0].ToString() : fp[0] + "~" + fp[1])} " +\r
+ $"索敵: {target.GetLineOfSights(1):F1}\r\n");\r
+ return sb;\r
+ }\r
+\r
+ private static StringBuilder GenerateAirBase(Sniffer sniffer, ItemName dict)\r
+ {\r
+ var sb = new StringBuilder();\r
+ if (sniffer.AirBase == null)\r
+ return sb;\r
+ foreach (var baseInfo in sniffer.AirBase)\r
{\r
- foreach (var baseInfo in sniffer.BaseAirCorps)\r
+ sb.Append(baseInfo.AreaName + " 基地航空隊\r\n");\r
+ var i = 0;\r
+ var name = new[] {"第一 ", "第二 ", "第三 "};\r
+ foreach (var airCorps in baseInfo.AirCorps)\r
{\r
- sb.Append(baseInfo.AreaName + " 基地航空隊\r\n");\r
- var i = 0;\r
- var name = new[] {"第一 ", "第二 ", "第三 "};\r
- foreach (var airCorps in baseInfo.AirCorps)\r
- {\r
- sb.Append(name[i++]);\r
- sb.Append(\r
- string.Join(",",\r
- from plane in airCorps.Planes\r
- select plane.State == 1\r
- ? dict[plane.Slot.Spec.Name] + ItemStatusString(plane.Slot)\r
- : plane.StateName) + "\r\n");\r
- }\r
+ sb.Append(name[i++]);\r
+ sb.Append(\r
+ string.Join(",",\r
+ from plane in airCorps.Planes\r
+ select plane.State == 1\r
+ ? dict[plane.Slot.Spec.Name] + ItemStatusString(plane.Slot)\r
+ : plane.StateName) + "\r\n");\r
}\r
}\r
- return sb.ToString();\r
+ return sb;\r
}\r
\r
private static string ItemStatusString(ItemStatus item)\r
public static string GenerateDeckBuilderData(Sniffer sniffer)\r
{\r
var sb = new StringBuilder("{\"version\": 4,");\r
- for (var f = 0; f < ShipInfo.FleetCount; f++)\r
+ foreach (var fleet in sniffer.Fleets)\r
{\r
- if (f != 0)\r
+ if (fleet.Number != 0)\r
sb.Append(",");\r
- sb.Append($"\"f{f + 1}\":{{");\r
- var ships = sniffer.GetShipStatuses(f);\r
- for (var s = 0; s < ships.Length; s++)\r
+ sb.Append($"\"f{fleet.Number + 1}\":{{");\r
+ var ships = fleet.ActualShips;\r
+ for (var s = 0; s < ships.Count; s++)\r
{\r
if (s != 0)\r
sb.Append(",");\r
sb.Append(\r
$"\"s{s + 1}\":{{\"id\":\"{ship.Spec.Id}\",\"lv\":{ship.Level},\"luck\":{ship.Lucky},\"items\":{{");\r
var items = ship.Slot;\r
- for (var i = 0; i < items.Length; i++)\r
+ for (var i = 0; i < items.Count; i++)\r
{\r
var item = items[i];\r
- if (item.Id == -1)\r
+ if (item.Empty)\r
continue;\r
if (i != 0)\r
sb.Append(",");\r
sb.Append($"\"i{i + 1}\":{{\"id\":{item.Spec.Id},\"rf\":{item.Level},\"mas\":{item.Alv}}}");\r
}\r
- if (ship.SlotEx.Id != 0 && ship.SlotEx.Id != -1)\r
+ if (!ship.SlotEx.Unimplemented && !ship.SlotEx.Empty)\r
{\r
- if (ship.Slot.Any(item => item.Id != -1))\r
+ if (ship.Slot.Any(item => !item.Empty))\r
sb.Append(",");\r
var name = ship.Spec.SlotNum == 5 ? "ix" : $"i{ship.Spec.SlotNum + 1}";\r
sb.Append($"\"{name}\":{{\"id\":{ship.SlotEx.Spec.Id},\"rf\":{ship.SlotEx.Level}}}");\r