From 7e7bc8ffe0733b61627aec99cbc511d991702851 Mon Sep 17 00:00:00 2001 From: Kazuhiro Fujieda Date: Fri, 21 Aug 2015 22:04:51 +0900 Subject: [PATCH] =?utf8?q?=E6=B5=B7=E6=88=A6=E3=83=BB=E3=83=89=E3=83=AD?= =?utf8?q?=E3=83=83=E3=83=97=E5=A0=B1=E5=91=8A=E6=9B=B8=E3=81=AE=E6=95=B5?= =?utf8?q?=E8=89=A6=E9=9A=8A=E3=81=AEHP=E3=82=92=E6=88=A6=E9=97=98?= =?utf8?q?=E7=B5=82=E4=BA=86=E5=BE=8C=E3=81=AE=E5=80=A4=E3=81=AB=E3=81=99?= =?utf8?q?=E3=82=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- KancolleSniffer.Test/LoggerTest.cs | 16 ++++++++-------- KancolleSniffer/BattleInfo.cs | 16 ++++++++++++++++ KancolleSniffer/Logger.cs | 9 +++++---- KancolleSniffer/Sniffer.cs | 2 +- 4 files changed, 30 insertions(+), 13 deletions(-) diff --git a/KancolleSniffer.Test/LoggerTest.cs b/KancolleSniffer.Test/LoggerTest.cs index 7a1db15..435a80d 100644 --- a/KancolleSniffer.Test/LoggerTest.cs +++ b/KancolleSniffer.Test/LoggerTest.cs @@ -125,16 +125,16 @@ namespace KancolleSniffer.Test SnifferTest.SniffLogFile(sniffer, "battle_004"); PAssert.That(() => "2015-01-01 00:00:00,珊瑚諸島沖,1,出撃,S,同航戦,単縦陣,単縦陣,敵前衛艦隊,重巡洋艦,青葉," + "武蔵改(Lv133),86/106,扶桑改二(Lv87),77/77,北上改二(Lv113),49/49,飛龍改二(Lv133),63/74,蒼龍改二(Lv133),74/74,龍鳳改(Lv97),48/48," + - "軽巡ヘ級(flagship),57/57,重巡リ級(flagship),76/76,重巡リ級(flagship),76/76,雷巡チ級(elite),50/50,駆逐ニ級(elite),45/45,駆逐ニ級(elite),45/45|" + + "軽巡ヘ級(flagship),0/57,重巡リ級(flagship),0/76,重巡リ級(flagship),0/76,雷巡チ級(elite),0/50,駆逐ニ級(elite),0/45,駆逐ニ級(elite),0/45|" + "2015-01-01 00:00:00,珊瑚諸島沖,2,,B,反航戦,単横陣,単横陣,敵潜水艦隊,,," + "武蔵改(Lv133),86/106,扶桑改二(Lv87),77/77,北上改二(Lv113),46/49,飛龍改二(Lv133),63/74,蒼龍改二(Lv133),74/74,龍鳳改(Lv97),48/48," + - "潜水ヨ級(flagship),44/44,潜水カ級(elite),27/27,潜水カ級(elite),27/27,潜水カ級(elite),27/27,潜水カ級,19/19,潜水カ級,19/19|" + + "潜水ヨ級(flagship),44/44,潜水カ級(elite),27/27,潜水カ級(elite),5/27,潜水カ級(elite),9/27,潜水カ級,0/19,潜水カ級,0/19|" + "2015-01-01 00:00:00,珊瑚諸島沖,4,,S,反航戦,単縦陣,単縦陣,敵水上打撃部隊,戦艦,扶桑," + "武蔵改(Lv133),86/106,扶桑改二(Lv87),77/77,北上改二(Lv113),46/49,飛龍改二(Lv133),63/74,蒼龍改二(Lv133),45/74,龍鳳改(Lv97),48/48," + - "戦艦タ級(flagship),90/90,重巡リ級(flagship),76/76,重巡リ級(flagship),76/76,雷巡チ級(elite),50/50,駆逐ロ級(flagship),43/43,駆逐ニ級(elite),45/45|" + + "戦艦タ級(flagship),0/90,重巡リ級(flagship),0/76,重巡リ級(flagship),0/76,雷巡チ級(elite),0/50,駆逐ロ級(flagship),0/43,駆逐ニ級(elite),0/45|" + "2015-01-01 00:00:00,珊瑚諸島沖,10,ボス,S,反航戦,単縦陣,単縦陣,敵機動部隊本隊,戦艦,山城," + "武蔵改(Lv133),86/106,扶桑改二(Lv87),77/77,北上改二(Lv113),46/49,飛龍改二(Lv133),63/74,蒼龍改二(Lv133),39/74,龍鳳改(Lv97),48/48," + - "装甲空母姫,270/270,空母ヲ級(elite),88/88,戦艦タ級(flagship),90/90,重巡リ級(elite),60/60,軽巡ホ級(flagship),53/53,駆逐ハ級(flagship),47/47|" + "装甲空母姫,0/270,空母ヲ級(elite),0/88,戦艦タ級(flagship),0/90,重巡リ級(elite),0/60,軽巡ホ級(flagship),0/53,駆逐ハ級(flagship),0/47|" == result); } @@ -148,7 +148,7 @@ namespace KancolleSniffer.Test SnifferTest.SniffLogFile(sniffer, "sp_midnight_001"); PAssert.That(() => "2015-01-01 00:00:00,サブ島沖海域,3,出撃,D,反航戦,単縦陣,単縦陣,敵前衛警戒艦隊,,," + "Prinz Eugen改(Lv52),1/63,,,,,,,,,,," + - "軽巡ヘ級(flagship),57/57,重巡リ級(flagship),76/76,重巡リ級(flagship),76/76,雷巡チ級(elite),50/50,雷巡チ級(elite),50/50,駆逐ロ級(flagship),43/43|" + "軽巡ヘ級(flagship),57/57,重巡リ級(flagship),76/76,重巡リ級(flagship),76/76,雷巡チ級(elite),50/50,雷巡チ級(elite),50/50,駆逐ロ級(flagship),0/43|" == result); } @@ -162,10 +162,10 @@ namespace KancolleSniffer.Test SnifferTest.SniffLogFile(sniffer, "combined_surface_001"); PAssert.That(() => "2015-01-01 00:00:00,南西方面海域,3,出撃,S,同航戦,第四警戒航行序列,単縦陣,ピケット水雷戦隊 A群,,," + "あきつ丸改(Lv68),40/40,山城改二(Lv85),77/77,扶桑改二(Lv85),77/77,利根改二(Lv117),59/66,筑摩改二(Lv117),51/65,神通改二(Lv97),47/50," + - "軽巡ツ級(elite),66/66,軽巡ト級(elite),55/55,駆逐イ級後期型,35/35,駆逐イ級後期型,35/35,駆逐イ級後期型,35/35,駆逐イ級後期型,35/35|" + + "軽巡ツ級(elite),0/66,軽巡ト級(elite),0/55,駆逐イ級後期型,0/35,駆逐イ級後期型,0/35,駆逐イ級後期型,0/35,駆逐イ級後期型,0/35|" + "2015-01-01 00:00:00,南西方面海域,7,,S,同航戦,第四警戒航行序列,複縦陣,任務部隊 D群,駆逐艦,満潮," + "あきつ丸改(Lv68),40/40,山城改二(Lv85),77/77,扶桑改二(Lv85),77/77,利根改二(Lv117),33/66,筑摩改二(Lv117),51/65,神通改二(Lv97),47/50," + - "戦艦タ級(flagship),90/90,軽母ヌ級(flagship),84/84,軽巡ト級(elite),55/55,軽巡ト級(elite),55/55,駆逐ロ級後期型,37/37,駆逐ロ級後期型,37/37|" + "戦艦タ級(flagship),0/90,軽母ヌ級(flagship),0/84,軽巡ト級(elite),0/55,軽巡ト級(elite),0/55,駆逐ロ級後期型,0/37,駆逐ロ級後期型,0/37|" == result); } @@ -179,7 +179,7 @@ namespace KancolleSniffer.Test SnifferTest.SniffLogFile(sniffer, "battle_005"); PAssert.That(() => "2015-01-01 00:00:00,バシー島沖,7,出撃&ボス,S,同航戦,単縦陣,単縦陣,敵通商破壊艦隊,軽空母,龍驤," + "那珂改二(Lv97),48/48,隼鷹改二(Lv129),62/62,北上改二(Lv129),49/49,大井改二(Lv115),40/49,呂500(Lv62),13/13,伊168改(Lv97),15/15," + - "重巡リ級(elite),60/60,重巡リ級,58/58,雷巡チ級(elite),50/50,軽巡ヘ級,36/36,駆逐ニ級,28/28,駆逐ニ級,28/28|" + "重巡リ級(elite),0/60,重巡リ級,0/58,雷巡チ級(elite),0/50,軽巡ヘ級,0/36,駆逐ニ級,0/28,駆逐ニ級,0/28|" == result); } diff --git a/KancolleSniffer/BattleInfo.cs b/KancolleSniffer/BattleInfo.cs index b039fa2..7e89540 100644 --- a/KancolleSniffer/BattleInfo.cs +++ b/KancolleSniffer/BattleInfo.cs @@ -52,6 +52,7 @@ namespace KancolleSniffer public string[] DamagedShipNames { get; private set; } public int AirControlLevel { get; private set; } public BattleResultRank ResultRank { get; private set; } + public ShipStatus[] EnemyResultStatus { get; private set; } public BattleInfo(ShipMaster shipMaster, ShipInfo shipInfo, ItemInfo itemInfo) { @@ -118,6 +119,10 @@ namespace KancolleSniffer _itemInfo); _enemyHp = nowhps.Skip(7).TakeWhile(hp => hp != -1).ToArray(); _enemyStartHp = (int[])_enemyHp.Clone(); + EnemyResultStatus = + (from id in ((int[])json.api_ship_ke).Skip(1) + where id != -1 + select new ShipStatus {Id = id, Spec = _shipMaster[id]}).ToArray(); if (combined) { var gstats = _shipInfo.GetShipStatuses(1); @@ -290,6 +295,16 @@ namespace KancolleSniffer e.now.UpdateShipStatus(e.ship); if (warnDamagedShip) UpdateDamgedShipNames(ships); + SetEnemyResultStatus(); + } + + private void SetEnemyResultStatus() + { + for (var i = 0; i < EnemyResultStatus.Length; i++) + { + EnemyResultStatus[i].MaxHp = _enemyStartHp[i]; + EnemyResultStatus[i].NowHp = _enemyHp[i]; + } } private void UpdateDamgedShipNames(IEnumerable ships) @@ -338,6 +353,7 @@ namespace KancolleSniffer e.now.UpdateShipStatus(e.ship); if (warnDamagedShip) UpdateDamgedShipNames(ships); + SetEnemyResultStatus(); } public void CauseCombinedBattleEscape() diff --git a/KancolleSniffer/Logger.cs b/KancolleSniffer/Logger.cs index 2472b89..e1615bc 100644 --- a/KancolleSniffer/Logger.cs +++ b/KancolleSniffer/Logger.cs @@ -44,6 +44,7 @@ namespace KancolleSniffer private readonly ShipMaster _shipMaster; private readonly ShipInfo _shipInfo; private readonly ItemInfo _itemInfo; + private readonly BattleInfo _battleInfo; private Action _writer; private Func _nowFunc; public const string DateTimeFormat = @"yyyy\-MM\-dd HH\:mm\:ss"; @@ -65,11 +66,12 @@ namespace KancolleSniffer set { _writer = new LogWriter(value).Write; } } - public Logger(ShipMaster master, ShipInfo ship, ItemInfo item) + public Logger(ShipMaster master, ShipInfo ship, ItemInfo item, BattleInfo battle) { _shipMaster = master; _shipInfo = ship; _itemInfo = item; + _battleInfo = battle; _writer = new LogWriter().Write; _nowFunc = () => DateTime.Now; } @@ -149,15 +151,14 @@ namespace KancolleSniffer var s = _shipInfo[id]; return $"{s.Name}(Lv{s.Level}),{s.NowHp}/{s.MaxHp}"; })); + var estatus = _battleInfo.EnemyResultStatus; var edeck = ((int[])_battle.api_ship_ke).Skip(1).ToArray(); - var enowhp = ((int[])_battle.api_nowhps).Skip(7).ToArray(); - var emaxhp = ((int[])_battle.api_maxhps).Skip(7).ToArray(); var eships = new List(); for (var i = 0; i < edeck.Count(); i++) { eships.Add(edeck[i] == -1 ? "," - : $"{_shipMaster[edeck[i]].Name},{enowhp[i]}/{emaxhp[i]}"); + : $"{estatus[i].Name},{estatus[i].NowHp}/{estatus[i].MaxHp}"); } var cell = (int)_map.api_no; var boss = ""; diff --git a/KancolleSniffer/Sniffer.cs b/KancolleSniffer/Sniffer.cs index e037a1b..c7dcf07 100644 --- a/KancolleSniffer/Sniffer.cs +++ b/KancolleSniffer/Sniffer.cs @@ -63,7 +63,7 @@ namespace KancolleSniffer _dockInfo = new DockInfo(_shipInfo, _itemInfo); _akashiTimer = new AkashiTimer(_shipInfo, _itemInfo, _dockInfo); _battleInfo = new BattleInfo(_shipMaster, _shipInfo, _itemInfo); - _logger = new Logger(_shipMaster, _shipInfo, _itemInfo); + _logger = new Logger(_shipMaster, _shipInfo, _itemInfo, _battleInfo); _haveState = new List {_achievement, _itemInfo, _conditionTimer, _exMapInfo}; } -- 2.11.0