private readonly List<ShipLabel> _hpLabels = new List<ShipLabel>();\r
private readonly ResizableToolTip _toolTip = new ResizableToolTip {ShowAlways = true};\r
private readonly BattleInfo.BattleResult[] _result = new BattleInfo.BattleResult[2];\r
- private Label _phaseLabel, _rankLabel;\r
+ private Label _phaseLabel, _rankLabel, _cellLabel;\r
private BattleState _prevBattleState;\r
private readonly BattleResultRank[] _rank = new BattleResultRank[2];\r
private readonly InformationPanel _infomationPanel;\r
\r
- public bool Spoiler { get; set; }\r
+ public Spoiler Spoilers { get; set; }\r
\r
public BattleResultPanel()\r
{\r
}\r
if (state != BattleState.Day && state != BattleState.Night)\r
return;\r
- if (Spoiler)\r
+ if ((Spoilers & Spoiler.BattleResult) != 0)\r
{\r
ShowResult(sniffer.Battle.Result);\r
ShowResultRank(sniffer.Battle.ResultRank);\r
_rankLabel.Text = result[(int)rank];\r
}\r
\r
+ public void UpdateCellInfo(Sniffer sniffer)\r
+ {\r
+ var text = sniffer.CellInfo;\r
+ if (text == null)\r
+ return;\r
+ if ((Spoilers & Spoiler.NextCell) == 0 && text[0] == '次')\r
+ return;\r
+ _cellLabel.Text = sniffer.CellInfo;\r
+ _cellLabel.Location = new Point(ClientSize.Width - _cellLabel.Width - 2, 4);\r
+ }\r
+\r
private void CreateLabels()\r
{\r
_phaseLabel = new Label\r
Size = new Size(42, 12)\r
};\r
Controls.Add(_rankLabel);\r
+ _cellLabel = new Label\r
+ {\r
+ Location = new Point(0, 4),\r
+ AutoSize = true,\r
+ };\r
+ Controls.Add(_cellLabel);\r
for (var i = 0; i < 13; i++)\r
{\r
var y = LineHeight * i + 38;\r
--- /dev/null
+// Copyright (C) 2018 Kazuhiro Fujieda <fujieda@users.osdn.me>\r
+//\r
+// Licensed under the Apache License, Version 2.0 (the "License");\r
+// you may not use this file except in compliance with the License.\r
+// You may obtain a copy of the License at\r
+//\r
+// http://www.apache.org/licenses/LICENSE-2.0\r
+//\r
+// Unless required by applicable law or agreed to in writing, software\r
+// distributed under the License is distributed on an "AS IS" BASIS,\r
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
+// See the License for the specific language governing permissions and\r
+// limitations under the License.\r
+\r
+namespace KancolleSniffer\r
+{\r
+ public class CellInfo\r
+ {\r
+ private int _batttleCount;\r
+\r
+ public string Text { get; set; }\r
+\r
+ private string _info;\r
+\r
+ public void Port()\r
+ {\r
+ Text = _info;\r
+ }\r
+\r
+ public void StartBattle()\r
+ {\r
+ Text = _info;\r
+ }\r
+\r
+ public void InspectMapStart(dynamic json)\r
+ {\r
+ _batttleCount = 0;\r
+ InspectMapNext(json);\r
+ }\r
+\r
+ public void InspectMapNext(dynamic json)\r
+ {\r
+ SetInfo(json);\r
+ Text = "次" + _info;\r
+ }\r
+\r
+ private void SetInfo(dynamic json)\r
+ {\r
+ switch ((int)json.api_color_no)\r
+ {\r
+ case 2:\r
+ _info = "資源";\r
+ break;\r
+ case 3:\r
+ _info = "渦潮";\r
+ break;\r
+ case 4:\r
+ switch ((int)json.api_event_id)\r
+ {\r
+ case 4:\r
+ _batttleCount++;\r
+ _info = $"{BattleCount}戦目";\r
+ break;\r
+ case 6:\r
+ _info = "気のせい";\r
+ break;\r
+ }\r
+ break;\r
+ case 5:\r
+ _info = "ボス戦";\r
+ break;\r
+ case 6:\r
+ _info = "揚陸地点";\r
+ break;\r
+ case 7:\r
+ _batttleCount++;\r
+ _info = $"{BattleCount}戦目(航空)";\r
+ break;\r
+ case 8:\r
+ _info = "護衛成功";\r
+ break;\r
+ case 9:\r
+ _info = "航空偵察";\r
+ break;\r
+ case 10:\r
+ _batttleCount++;\r
+ _info = $"{BattleCount}戦目(空襲)";\r
+ break;\r
+ }\r
+ }\r
+\r
+ private string BattleCount => ((char)('0' + _batttleCount)).ToString();\r
+ }\r
+}
\ No newline at end of file
ResultRank = 1,\r
AirBattleResult = 1 << 1,\r
BattleResult = 1 << 2,\r
- All = (1 << 3) - 1\r
+ NextCell = 1 << 3,\r
+ All = (1 << 4) - 1\r
}\r
\r
[Flags]\r
this.openSoundFileDialog = new System.Windows.Forms.OpenFileDialog();\r
this.folderBrowserDialogOutputDir = new System.Windows.Forms.FolderBrowserDialog();\r
this.openDebugLogDialog = new System.Windows.Forms.OpenFileDialog();\r
+ this.checkBoxNextCell = new System.Windows.Forms.CheckBox();\r
this.tabControl.SuspendLayout();\r
this.tabPageWindow.SuspendLayout();\r
this.tabPageNotification.SuspendLayout();\r
// \r
// groupBox3\r
// \r
+ this.groupBox3.Controls.Add(this.checkBoxNextCell);\r
this.groupBox3.Controls.Add(this.checkBoxBattleResult);\r
this.groupBox3.Controls.Add(this.checkBoxAirBattleResult);\r
this.groupBox3.Controls.Add(this.checkBoxResultRank);\r
// checkBoxBattleResult\r
// \r
this.checkBoxBattleResult.AutoSize = true;\r
- this.checkBoxBattleResult.Location = new System.Drawing.Point(147, 21);\r
+ this.checkBoxBattleResult.Location = new System.Drawing.Point(123, 21);\r
this.checkBoxBattleResult.Name = "checkBoxBattleResult";\r
this.checkBoxBattleResult.Size = new System.Drawing.Size(48, 16);\r
this.checkBoxBattleResult.TabIndex = 2;\r
// checkBoxAirBattleResult\r
// \r
this.checkBoxAirBattleResult.AutoSize = true;\r
- this.checkBoxAirBattleResult.Location = new System.Drawing.Point(84, 21);\r
+ this.checkBoxAirBattleResult.Location = new System.Drawing.Point(60, 21);\r
this.checkBoxAirBattleResult.Name = "checkBoxAirBattleResult";\r
this.checkBoxAirBattleResult.Size = new System.Drawing.Size(60, 16);\r
this.checkBoxAirBattleResult.TabIndex = 1;\r
this.checkBoxResultRank.AutoSize = true;\r
this.checkBoxResultRank.Location = new System.Drawing.Point(9, 21);\r
this.checkBoxResultRank.Name = "checkBoxResultRank";\r
- this.checkBoxResultRank.Size = new System.Drawing.Size(72, 16);\r
+ this.checkBoxResultRank.Size = new System.Drawing.Size(48, 16);\r
this.checkBoxResultRank.TabIndex = 0;\r
- this.checkBoxResultRank.Text = "勝利判定";\r
+ this.checkBoxResultRank.Text = "勝敗";\r
this.checkBoxResultRank.UseVisualStyleBackColor = true;\r
// \r
// groupBox2\r
this.openDebugLogDialog.CheckFileExists = false;\r
this.openDebugLogDialog.Title = "ログファイルの選択";\r
// \r
+ // checkBoxNextCell\r
+ // \r
+ this.checkBoxNextCell.AutoSize = true;\r
+ this.checkBoxNextCell.Location = new System.Drawing.Point(174, 21);\r
+ this.checkBoxNextCell.Name = "checkBoxNextCell";\r
+ this.checkBoxNextCell.Size = new System.Drawing.Size(48, 16);\r
+ this.checkBoxNextCell.TabIndex = 3;\r
+ this.checkBoxNextCell.Text = "進路";\r
+ this.checkBoxNextCell.UseVisualStyleBackColor = true;\r
+ // \r
// ConfigDialog\r
// \r
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);\r
private System.Windows.Forms.CheckBox checkBoxBattleResult;\r
private System.Windows.Forms.CheckBox checkBoxAirBattleResult;\r
private System.Windows.Forms.CheckBox checkBoxResultRank;\r
+ private System.Windows.Forms.CheckBox checkBoxNextCell;\r
}\r
}
\ No newline at end of file
checkBoxResultRank.Checked = (_config.Spoilers & Spoiler.ResultRank) != 0;\r
checkBoxAirBattleResult.Checked = (_config.Spoilers & Spoiler.AirBattleResult) != 0;\r
checkBoxBattleResult.Checked = (_config.Spoilers & Spoiler.BattleResult) != 0;\r
+ checkBoxNextCell.Checked = (_config.Spoilers & Spoiler.NextCell) != 0;\r
checkBoxPresetAkashi.Checked = _config.UsePresetAkashi;\r
\r
numericUpDownSoundVolume.Value = _config.Sounds.Volume;\r
\r
_config.Spoilers = (checkBoxResultRank.Checked ? Spoiler.ResultRank : 0) |\r
(checkBoxAirBattleResult.Checked ? Spoiler.AirBattleResult : 0) |\r
- (checkBoxBattleResult.Checked ? Spoiler.BattleResult : 0);\r
+ (checkBoxBattleResult.Checked ? Spoiler.BattleResult : 0) |\r
+ (checkBoxNextCell.Checked ? Spoiler.NextCell : 0);\r
_config.UsePresetAkashi = checkBoxPresetAkashi.Checked;\r
\r
_config.Sounds.Volume = (int)numericUpDownSoundVolume.Value;\r
<Compile Include="BattleResultPanel.cs">\r
<SubType>Component</SubType>\r
</Compile>\r
+ <Compile Include="CellInfo.cs" />\r
<Compile Include="ErrorLog.cs" />\r
<Compile Include="Config.cs" />\r
<Compile Include="ConfigDialog.cs">\r
this.battleResultPanel.Location = new System.Drawing.Point(6, 73);\r
this.battleResultPanel.Name = "battleResultPanel";\r
this.battleResultPanel.Size = new System.Drawing.Size(238, 213);\r
- this.battleResultPanel.Spoiler = false;\r
this.battleResultPanel.TabIndex = 0;\r
// \r
// antiAirPanel\r
\r
public void UpdateBattleResult()\r
{\r
- battleResultPanel.Spoiler = (_config.Spoilers & Spoiler.BattleResult) != 0;\r
+ battleResultPanel.Spoilers = _config.Spoilers;\r
battleResultPanel.Update(_sniffer);\r
}\r
\r
+ public void UpdateCellInfo()\r
+ {\r
+ battleResultPanel.Spoilers = _config.Spoilers;\r
+ battleResultPanel.UpdateCellInfo(_sniffer);\r
+ }\r
+\r
private void SetHeaderSortOrder()\r
{\r
switch (_config.ShipList.SortOrder)\r
UpdateShipInfo();\r
if ((update & Sniffer.Update.Battle) != 0)\r
UpdateBattleInfo();\r
+ if ((update & Sniffer.Update.Cell) != 0)\r
+ UpdateCellInfo();\r
}\r
\r
private void MainForm_Load(object sender, EventArgs e)\r
if ((_config.Spoilers & Spoiler.ResultRank) != 0)\r
ShowResultRank();\r
if (_sniffer.Battle.BattleState == BattleState.Day)\r
+ {\r
_listForm.UpdateAirBattleResult();\r
+ _listForm.UpdateCellInfo();\r
+ }\r
+ }\r
+\r
+ private void UpdateCellInfo()\r
+ {\r
+ _listForm.UpdateCellInfo();\r
}\r
\r
private void ResetBattleInfo()\r
private readonly MiscTextInfo _miscTextInfo;\r
private readonly BaseAirCoprs _baseAirCoprs;\r
private readonly PresetDeck _presetDeck = new PresetDeck();\r
+ private readonly CellInfo _cellInfo = new CellInfo();\r
private readonly Status _status = new Status();\r
private bool _saveState;\r
private readonly List<IHaveState> _haveState;\r
Mission = 1 << 6,\r
QuestList = 1 << 7,\r
Battle = 1 << 8,\r
- All = (1 << 9) - 1\r
+ Cell = 1 << 9,\r
+ All = (1 << 10) - 1\r
}\r
\r
public Sniffer(bool start = false)\r
_battleInfo.BattleState = BattleState.None;\r
_shipInfo.ClearEscapedShips();\r
_miscTextInfo.Port();\r
+ _cellInfo.Port();\r
SaveState();\r
RepeatingTimerController?.Resume();\r
foreach (var s in new[] {"遠征終了", "入渠終了", "疲労回復", "泊地修理"})\r
{\r
_battleInfo.InspectBattle(url, request, data);\r
_logger.InspectBattle(data);\r
+ _cellInfo.StartBattle();\r
return Update.Ship | Update.Battle;\r
}\r
if (url.EndsWith("api_req_practice/battle") || url.EndsWith("api_req_practice/midnight_battle"))\r
_logger.InspectMapStart(data);\r
_miscTextInfo.InspectMapStart(data);\r
_questInfo.InspectMapStart(data);\r
+ _cellInfo.InspectMapStart(data);\r
RepeatingTimerController?.Suspend();\r
- return Update.Timer | Update.Ship;\r
+ return Update.Timer | Update.Ship | Update.Cell;\r
}\r
if (url.EndsWith("api_req_map/next"))\r
{\r
_logger.InspectMapNext(data);\r
_questInfo.InspectMapNext(data);\r
_miscTextInfo.InspectMapNext(data);\r
- return Update.None;\r
+ _cellInfo.InspectMapNext(data);\r
+ return Update.Cell;\r
}\r
if (url.EndsWith("api_req_mission/start"))\r
{\r
\r
public BaseAirCoprs.BaseInfo[] BaseAirCorps => _baseAirCoprs.AllAirCorps;\r
\r
+ public string CellInfo => _cellInfo.Text;\r
+\r
public void SetLogWriter(Action<string, string, string> writer, Func<DateTime> nowFunc)\r
{\r
_logger.SetWriter(writer, nowFunc);\r