}\r
else if (path.EndsWith("海戦・ドロップ報告書.json"))\r
{\r
- records = 38;\r
+ records = 39;\r
battle = true;\r
}\r
else if (path.EndsWith("開発報告書.json"))\r
if (material)\r
entries = data.Take(9);\r
if (battle)\r
- entries = data.Concat(Enumerable.Repeat("", 3)).Take(38);\r
+ entries = ProcessBattleLog(data);\r
if (entries.Count() != records)\r
continue;\r
if (number)\r
}\r
}\r
\r
+ private static IEnumerable<string> ProcessBattleLog(string[] data)\r
+ {\r
+ if (data.Length == 35)\r
+ data = data.Concat(Enumerable.Repeat("", 3)).ToArray();\r
+ if (data.Length != 38)\r
+ return data;\r
+ return AddDamagedShip(data);\r
+ }\r
+\r
+ private static IEnumerable<string> AddDamagedShip(string[] data)\r
+ {\r
+ var damaged = new List<string>();\r
+ for (var i = 11; i < 11 + 12; i += 2)\r
+ {\r
+ var ship = data[i];\r
+ if (ship == "")\r
+ continue;\r
+ var hp = data[i + 1];\r
+ try\r
+ {\r
+ if (ship.Contains("・"))\r
+ {\r
+ var ships = ship.Split('・');\r
+ var hps = hp.Split('・');\r
+ var nowMax = hps[0].Split('/').Select(int.Parse).ToArray();\r
+ if (ShipStatus.CalcDamage(nowMax[0], nowMax[1]) == ShipStatus.Damage.Badly)\r
+ damaged.Add(ships[0]);\r
+ nowMax = hps[1].Split('/').Select(int.Parse).ToArray();\r
+ if (ShipStatus.CalcDamage(nowMax[0], nowMax[1]) == ShipStatus.Damage.Badly)\r
+ damaged.Add(ships[1]);\r
+ }\r
+ else\r
+ {\r
+ var nowMax = hp.Split('/').Select(int.Parse).ToArray();\r
+ if (ShipStatus.CalcDamage(nowMax[0], nowMax[1]) == ShipStatus.Damage.Badly)\r
+ damaged.Add(ship);\r
+ }\r
+ }\r
+ catch (FormatException)\r
+ {\r
+ return data;\r
+ }\r
+ }\r
+ return data.Take(23).Concat(new []{string.Join("・", damaged)}).Concat(data.Skip(23));\r
+ }\r
+\r
private static void SendFile(Socket client, string path, string mime)\r
{\r
using (var header = new StreamWriter(new MemoryStream(), Encoding.ASCII))\r
<script>
this.tables = [
"<th>日付</th><th>海域</th><th>マス</th><th>ボス</th><th>ランク</th><th>ドロップ艦種</th><th>ドロップ艦娘", // ドロップ
-"<th>日付</th><th>海域</th><th>マス</th><th>ボス</th><th>ランク</th><th>艦隊行動</th><th>味方陣形</th><th>敵陣形</th><th>敵艦隊</th><th>味方艦1</th><th>味方艦1HP</th><th>味方艦2</th><th>味方艦2HP</th><th>味方艦3</th><th>味方艦3HP</th><th>味方艦4</th><th>味方艦4HP</th><th>味方艦5</th><th>味方艦5HP</th><th>味方艦6</th><th>味方艦6HP</th><th>敵艦1</th><th>敵艦1HP</th><th>敵艦2</th><th>敵艦2HP</th><th>敵艦3</th><th>敵艦3HP</th><th>敵艦4</th><th>敵艦4HP</th><th>敵艦5</th><th>敵艦5HP</th><th>敵艦6</th><th>敵艦6HP</th><th>味方制空値</th><th>敵制空値</th><th>制空状態</th>", // 海戦
+"<th>日付</th><th>海域</th><th>マス</th><th>ボス</th><th>ランク</th><th>艦隊行動</th><th>味方陣形</th><th>敵陣形</th><th>敵艦隊</th><th>味方艦1</th><th>味方艦1HP</th><th>味方艦2</th><th>味方艦2HP</th><th>味方艦3</th><th>味方艦3HP</th><th>味方艦4</th><th>味方艦4HP</th><th>味方艦5</th><th>味方艦5HP</th><th>味方艦6</th><th>味方艦6HP</th><th>大破艦</ht><th>敵艦1</th><th>敵艦1HP</th><th>敵艦2</th><th>敵艦2HP</th><th>敵艦3</th><th>敵艦3HP</th><th>敵艦4</th><th>敵艦4HP</th><th>敵艦5</th><th>敵艦5HP</th><th>敵艦6</th><th>敵艦6HP</th><th>味方制空値</th><th>敵制空値</th><th>制空状態</th>", // 海戦
"<th>日付</th><th>結果</th><th>遠征</th><th>燃料</th><th>弾薬</th><th>鋼材</th><th>ボーキ</th><th>開発資材</th><th>高速修復材</th><th>高速建造材</th>", // 遠征
"<th>日付</th><th>開発装備</th><th>種別</th><th>燃料</th><th>弾薬</th><th>鋼材</th><th>ボーキ</th><th>秘書艦</th><th>司令部Lv</th>", // 開発
"<th>日付</th><th>種類</th><th>名前</th><th>艦種</th><th>燃料</th><th>弾薬</th><th>鋼材</th><th>ボーキ</th><th>開発資材</th><th>空きドック</th><th>秘書艦</th><th>司令部Lv</th>", // 建造
opts.columns = [{ data: 0 }, { data: 1 }, { data: 2 }, { data: 3 }, { data: 4 }, { data: 9 }, { data: 10 }];
} else if (t === 1) {
var entries = [];
- for (var i = 0; i < 38; i++) {
+ for (var i = 0; i < 39; i++) {
if (i === 9 || i === 10)
continue;
entries.push({ data: i });