OSDN Git Service

次のマスが何戦目かを表示する
authorKazuhiro Fujieda <fujieda@users.osdn.me>
Sun, 24 Jun 2018 04:54:49 +0000 (13:54 +0900)
committerKazuhiro Fujieda <fujieda@users.osdn.me>
Sun, 24 Jun 2018 04:54:49 +0000 (13:54 +0900)
KancolleSniffer/BattleResultPanel.cs
KancolleSniffer/CellInfo.cs [new file with mode: 0644]
KancolleSniffer/Config.cs
KancolleSniffer/ConfigDialog.Designer.cs
KancolleSniffer/ConfigDialog.cs
KancolleSniffer/KancolleSniffer.csproj
KancolleSniffer/ListForm.Designer.cs
KancolleSniffer/ListForm.cs
KancolleSniffer/MainForm.cs
KancolleSniffer/Sniffer.cs

index bfe8f08..68e71db 100644 (file)
@@ -31,12 +31,12 @@ namespace KancolleSniffer
         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
@@ -76,7 +76,7 @@ namespace KancolleSniffer
             }\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
@@ -284,6 +284,17 @@ namespace KancolleSniffer
             _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
@@ -299,6 +310,12 @@ namespace KancolleSniffer
                 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
diff --git a/KancolleSniffer/CellInfo.cs b/KancolleSniffer/CellInfo.cs
new file mode 100644 (file)
index 0000000..45e2d2d
--- /dev/null
@@ -0,0 +1,94 @@
+// 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
index 9c1ceb1..2277aaf 100644 (file)
@@ -186,7 +186,8 @@ namespace KancolleSniffer
         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
index 5827649..a0145bf 100644 (file)
@@ -132,6 +132,7 @@ namespace KancolleSniffer
             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
@@ -455,6 +456,7 @@ namespace KancolleSniffer
             // \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
@@ -469,7 +471,7 @@ namespace KancolleSniffer
             // 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
@@ -479,7 +481,7 @@ namespace KancolleSniffer
             // 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
@@ -491,9 +493,9 @@ namespace KancolleSniffer
             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
@@ -1095,6 +1097,16 @@ namespace KancolleSniffer
             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
@@ -1240,5 +1252,6 @@ namespace KancolleSniffer
         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
index 7183cd3..2debe75 100644 (file)
@@ -88,6 +88,7 @@ namespace KancolleSniffer
             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
@@ -190,7 +191,8 @@ namespace KancolleSniffer
 \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
index 5e091d1..41ef2de 100644 (file)
@@ -67,6 +67,7 @@
     <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
index 8497342..0e12e68 100644 (file)
@@ -425,7 +425,6 @@ namespace KancolleSniffer
             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
index 66d3b0b..7b2de2a 100644 (file)
@@ -117,10 +117,16 @@ namespace KancolleSniffer
 \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
index d2525e7..e5c1491 100644 (file)
@@ -284,6 +284,8 @@ namespace KancolleSniffer
                 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
@@ -707,7 +709,15 @@ namespace KancolleSniffer
             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
index b800118..109c110 100644 (file)
@@ -36,6 +36,7 @@ namespace KancolleSniffer
         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
@@ -63,7 +64,8 @@ namespace KancolleSniffer
             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
@@ -161,6 +163,7 @@ namespace KancolleSniffer
             _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
@@ -333,6 +336,7 @@ namespace KancolleSniffer
             {\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
@@ -474,8 +478,9 @@ namespace KancolleSniffer
                 _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
@@ -484,7 +489,8 @@ namespace KancolleSniffer
                 _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
@@ -593,6 +599,8 @@ namespace KancolleSniffer
 \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