: new Record[0];\r
}\r
\r
+ private void SetResult()\r
+ {\r
+ Result = new BattleResult\r
+ {\r
+ Friend = new BattleResult.Combined\r
+ {\r
+ Main = _friend.Select(r => r.SnapShot).ToArray(),\r
+ Guard = _guard.Select(r => r.SnapShot).ToArray()\r
+ },\r
+ Enemy = new BattleResult.Combined\r
+ {\r
+ Main = _enemy.Select(r => r.SnapShot).ToArray(),\r
+ Guard = _enemyGuard.Select(r => r.SnapShot).ToArray()\r
+ }\r
+ };\r
+ }\r
+\r
private void FlagshipRecovery(string request, ShipStatus flagship)\r
{\r
var type = int.Parse(HttpUtility.ParseQueryString(request)["api_recovery_type"] ?? "0");\r
_shipInfo.ClearBadlyDamagedShips();\r
}\r
\r
- private void SetResult()\r
- {\r
- Result = new BattleResult\r
- {\r
- Friend = new BattleResult.Combined\r
- {\r
- Main = _friend.Select(r => r.SnapShot).ToArray(),\r
- Guard = _guard.Select(r => r.SnapShot).ToArray()\r
- },\r
- Enemy = new BattleResult.Combined\r
- {\r
- Main = _enemy.Select(r => r.SnapShot).ToArray(),\r
- Guard = _enemyGuard.Select(r => r.SnapShot).ToArray()\r
- }\r
- };\r
- }\r
-\r
public void SetEscapeShips(dynamic json)\r
{\r
_escapingShips.Clear();\r
// See the License for the specific language governing permissions and\r
// limitations under the License.\r
\r
+using System;\r
using System.Collections.Generic;\r
using System.Drawing;\r
using System.Linq;\r
private bool _hpPercent;\r
private readonly List<ShipLabel> _hpLabels = new List<ShipLabel>();\r
private readonly ToolTip _toolTip = new ToolTip {ShowAlways = true};\r
+ private readonly BattleInfo.BattleResult[] _result = new BattleInfo.BattleResult[2];\r
+ private Label _phaseLabel;\r
+ private BattleState _prevBattleState;\r
+\r
+ public bool Spoiler { get; set; }\r
\r
public BattleResultPanel()\r
{\r
\r
public void Update(Sniffer sniffer)\r
{\r
+\r
+ if (_prevBattleState == BattleState.None)\r
+ _result[0] = _result[1] = null;\r
+ var state = _prevBattleState = sniffer.Battle.BattleState;\r
+ if (state != BattleState.Day && state != BattleState.Night)\r
+ return;\r
+ if (Spoiler)\r
+ {\r
+ ShowResult(sniffer.Battle.Result);\r
+ if (state == BattleState.Day)\r
+ {\r
+ _result[0] = sniffer.Battle.Result;\r
+ SetPhase("昼戦");\r
+ }\r
+ else if (state == BattleState.Night)\r
+ {\r
+ _result[1] = sniffer.Battle.Result;\r
+ SetPhase("夜戦");\r
+ }\r
+ }\r
+ else\r
+ {\r
+ ClearResult();\r
+ _phaseLabel.Text = "結果";\r
+ _phaseLabel.BorderStyle = BorderStyle.FixedSingle;\r
+ _phaseLabel.Cursor = Cursors.Hand;\r
+ if (state == BattleState.Day)\r
+ {\r
+ _result[0] = sniffer.Battle.Result;\r
+ }\r
+ else if (state == BattleState.Night)\r
+ {\r
+ _result[1] = sniffer.Battle.Result;\r
+ }\r
+ }\r
+ }\r
+\r
+ private void PhaseLabelClick(object sender, EventArgs ev)\r
+ {\r
+ switch (_phaseLabel.Text)\r
+ {\r
+ case "結果":\r
+ if (_result[0] != null)\r
+ {\r
+ ShowResult(_result[0]);\r
+ SetPhase("昼戦");\r
+ }\r
+ else if (_result[1] != null)\r
+ {\r
+ ShowResult(_result[1]);\r
+ SetPhase("夜戦");\r
+ }\r
+ break;\r
+ case "昼戦":\r
+ if (_result[1] != null)\r
+ {\r
+ ShowResult(_result[1]);\r
+ SetPhase("夜戦");\r
+ }\r
+ break;\r
+ case "夜戦":\r
+ if (_result[0] != null)\r
+ {\r
+ ShowResult(_result[0]);\r
+ SetPhase("昼戦");\r
+ }\r
+ break;\r
+ }\r
+ }\r
+\r
+ private void SetPhase(string phase)\r
+ {\r
+ _phaseLabel.Text = phase;\r
+ if (_result[0] != null && _result[1] != null)\r
+ {\r
+ _phaseLabel.BorderStyle = BorderStyle.FixedSingle;\r
+ _phaseLabel.Cursor = Cursors.Hand;\r
+ }\r
+ else\r
+ {\r
+ _phaseLabel.BorderStyle = BorderStyle.None;\r
+ _phaseLabel.Cursor = Cursors.Default;\r
+ }\r
+ }\r
+\r
+ private void ClearResult()\r
+ {\r
+ foreach (var panel in _panelList)\r
+ panel.Visible = false;\r
+ }\r
+\r
+ private void ShowResult(BattleInfo.BattleResult result)\r
+ {\r
SuspendLayout();\r
- var friend = sniffer.Battle.Result.Friend;\r
- var enemy = sniffer.Battle.Result.Enemy;\r
+ var friend = result.Friend;\r
+ var enemy = result.Enemy;\r
\r
var fleet = new[] {"第一", "第二", "第三", "第四"};\r
_friendLabels[0][1].Text = fleet[friend.Main[0].Fleet];\r
private void CreateLabels()\r
{\r
SuspendLayout();\r
+ _phaseLabel = new Label\r
+ {\r
+ Location = new Point(93, 2),\r
+ Size = new Size(31, 14)\r
+ };\r
+ _phaseLabel.Click += PhaseLabelClick;\r
+ Controls.Add(_phaseLabel);\r
for (var i = 0; i < 14; i++)\r
{\r
var y = 1 + LineHeight * i;\r
public Size ListSize { get; set; }\r
}\r
\r
+ [Flags]\r
+ public enum Spoiler\r
+ {\r
+ ResultRank = 1,\r
+ AirBattleResult = 1 << 1,\r
+ BattleResult = 1 << 2,\r
+ All = (1 << 3) - 1\r
+ }\r
+\r
public class Config\r
{\r
private readonly string _baseDir = AppDomain.CurrentDomain.BaseDirectory;\r
public List<int> NotifyConditions { get; set; }\r
public List<int> ResetHours { get; set; }\r
public bool AlwaysShowResultRank { get; set; }\r
+ public Spoiler Spoilers { get; set; }\r
public bool UsePresetAkashi { get; set; }\r
public SoundConfig Sounds { get; set; } = new SoundConfig();\r
public bool DebugLogging { get; set; }\r
ns[i] = ns[i] ^ NotificationType.Pushbullet | NotificationType.Push;\r
}\r
ComposeNotificationFlags();\r
+ if (AlwaysShowResultRank)\r
+ {\r
+ Spoilers = Spoiler.All;\r
+ AlwaysShowResultRank = false;\r
+ }\r
if (SaveLocationPerMachine)\r
{\r
foreach (var l in LocationList)\r
this.tabPageAchievement = new System.Windows.Forms.TabPage();\r
this.checkBoxPresetAkashi = new System.Windows.Forms.CheckBox();\r
this.groupBox3 = new System.Windows.Forms.GroupBox();\r
- this.radioButtonResultRankWhenClick = new System.Windows.Forms.RadioButton();\r
- this.radioButtonResultRankAlways = new System.Windows.Forms.RadioButton();\r
+ this.checkBoxBattleResult = new System.Windows.Forms.CheckBox();\r
+ this.checkBoxAirBattleResult = new System.Windows.Forms.CheckBox();\r
+ this.checkBoxResultRank = new System.Windows.Forms.CheckBox();\r
this.groupBox2 = new System.Windows.Forms.GroupBox();\r
this.checkBoxReset02 = new System.Windows.Forms.CheckBox();\r
this.buttonResetAchievement = new System.Windows.Forms.Button();\r
// \r
// groupBox3\r
// \r
- this.groupBox3.Controls.Add(this.radioButtonResultRankWhenClick);\r
- this.groupBox3.Controls.Add(this.radioButtonResultRankAlways);\r
+ this.groupBox3.Controls.Add(this.checkBoxBattleResult);\r
+ this.groupBox3.Controls.Add(this.checkBoxAirBattleResult);\r
+ this.groupBox3.Controls.Add(this.checkBoxResultRank);\r
this.groupBox3.Location = new System.Drawing.Point(11, 65);\r
this.groupBox3.Name = "groupBox3";\r
this.groupBox3.Padding = new System.Windows.Forms.Padding(6);\r
this.groupBox3.Size = new System.Drawing.Size(234, 48);\r
this.groupBox3.TabIndex = 18;\r
this.groupBox3.TabStop = false;\r
- this.groupBox3.Text = "勝利判定と航空戦の結果の表示";\r
- // \r
- // radioButtonResultRankWhenClick\r
- // \r
- this.radioButtonResultRankWhenClick.AutoSize = true;\r
- this.radioButtonResultRankWhenClick.Location = new System.Drawing.Point(65, 21);\r
- this.radioButtonResultRankWhenClick.Name = "radioButtonResultRankWhenClick";\r
- this.radioButtonResultRankWhenClick.Size = new System.Drawing.Size(88, 16);\r
- this.radioButtonResultRankWhenClick.TabIndex = 1;\r
- this.radioButtonResultRankWhenClick.TabStop = true;\r
- this.radioButtonResultRankWhenClick.Text = "クリックしたとき";\r
- this.radioButtonResultRankWhenClick.UseVisualStyleBackColor = true;\r
- // \r
- // radioButtonResultRankAlways\r
- // \r
- this.radioButtonResultRankAlways.AutoSize = true;\r
- this.radioButtonResultRankAlways.Location = new System.Drawing.Point(9, 21);\r
- this.radioButtonResultRankAlways.Name = "radioButtonResultRankAlways";\r
- this.radioButtonResultRankAlways.Size = new System.Drawing.Size(50, 16);\r
- this.radioButtonResultRankAlways.TabIndex = 0;\r
- this.radioButtonResultRankAlways.TabStop = true;\r
- this.radioButtonResultRankAlways.Text = "すぐに";\r
- this.radioButtonResultRankAlways.UseVisualStyleBackColor = true;\r
+ this.groupBox3.Text = "ネタバレ";\r
+ // \r
+ // checkBoxBattleResult\r
+ // \r
+ this.checkBoxBattleResult.AutoSize = true;\r
+ this.checkBoxBattleResult.Location = new System.Drawing.Point(147, 21);\r
+ this.checkBoxBattleResult.Name = "checkBoxBattleResult";\r
+ this.checkBoxBattleResult.Size = new System.Drawing.Size(48, 16);\r
+ this.checkBoxBattleResult.TabIndex = 2;\r
+ this.checkBoxBattleResult.Text = "戦況";\r
+ this.checkBoxBattleResult.UseVisualStyleBackColor = true;\r
+ // \r
+ // checkBoxAirBattleResult\r
+ // \r
+ this.checkBoxAirBattleResult.AutoSize = true;\r
+ this.checkBoxAirBattleResult.Location = new System.Drawing.Point(84, 21);\r
+ this.checkBoxAirBattleResult.Name = "checkBoxAirBattleResult";\r
+ this.checkBoxAirBattleResult.Size = new System.Drawing.Size(60, 16);\r
+ this.checkBoxAirBattleResult.TabIndex = 1;\r
+ this.checkBoxAirBattleResult.Text = "航空戦";\r
+ this.checkBoxAirBattleResult.UseVisualStyleBackColor = true;\r
+ // \r
+ // checkBoxResultRank\r
+ // \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.TabIndex = 0;\r
+ this.checkBoxResultRank.Text = "勝利判定";\r
+ this.checkBoxResultRank.UseVisualStyleBackColor = true;\r
// \r
// groupBox2\r
// \r
private System.Windows.Forms.OpenFileDialog openDebugLogDialog;\r
private System.Windows.Forms.GroupBox groupBox3;\r
private System.Windows.Forms.GroupBox groupBox2;\r
- private System.Windows.Forms.RadioButton radioButtonResultRankWhenClick;\r
- private System.Windows.Forms.RadioButton radioButtonResultRankAlways;\r
private System.Windows.Forms.CheckBox checkBoxPresetAkashi;\r
private System.Windows.Forms.TabPage tabPageCollabo;\r
private System.Windows.Forms.GroupBox groupBoxKancolleDb;\r
private System.Windows.Forms.TextBox textBoxPushoverUserKey;\r
private System.Windows.Forms.TabPage tabPageExternalService;\r
private System.Windows.Forms.CheckBox checkBoxRepeat;\r
+ private System.Windows.Forms.CheckBox checkBoxBattleResult;\r
+ private System.Windows.Forms.CheckBox checkBoxAirBattleResult;\r
+ private System.Windows.Forms.CheckBox checkBoxResultRank;\r
}\r
}
\ No newline at end of file
\r
checkBoxReset02.Checked = _config.ResetHours.Contains(2);\r
checkBoxReset14.Checked = _config.ResetHours.Contains(14);\r
- radioButtonResultRankAlways.Checked = _config.AlwaysShowResultRank;\r
- radioButtonResultRankWhenClick.Checked = !_config.AlwaysShowResultRank;\r
+ checkBoxResultRank.Checked = (_config.Spoilers & Spoiler.ResultRank) != 0;\r
+ checkBoxAirBattleResult.Checked = (_config.Spoilers & Spoiler.AirBattleResult) != 0;\r
+ checkBoxBattleResult.Checked = (_config.Spoilers & Spoiler.BattleResult) != 0;\r
checkBoxPresetAkashi.Checked = _config.UsePresetAkashi;\r
\r
numericUpDownSoundVolume.Value = _config.Sounds.Volume;\r
if (checkBoxReset14.Checked)\r
_config.ResetHours.Add(14);\r
\r
- _config.AlwaysShowResultRank = radioButtonResultRankAlways.Checked;\r
+ _config.Spoilers = (checkBoxResultRank.Checked ? Spoiler.ResultRank : 0) |\r
+ (checkBoxAirBattleResult.Checked ? Spoiler.AirBattleResult : 0) |\r
+ (checkBoxBattleResult.Checked ? Spoiler.BattleResult : 0);\r
_config.UsePresetAkashi = checkBoxPresetAkashi.Checked;\r
\r
_config.Sounds.Volume = (int)numericUpDownSoundVolume.Value;\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 UpdateAirBattleResult()\r
{\r
- airBattleResultPanel.ShowResultAutomatic = true;\r
+ airBattleResultPanel.ShowResultAutomatic = (_config.Spoilers & Spoiler.AirBattleResult) != 0;\r
airBattleResultPanel.SetResult(_sniffer.Battle.AirBattleResults);\r
}\r
\r
public void UpdateBattleResult()\r
{\r
battleResultPanel.SetShowHpPercent(shipListPanel.ShowHpInPercent);\r
+ battleResultPanel.Spoiler = (_config.Spoilers & Spoiler.BattleResult) != 0;\r
battleResultPanel.Update(_sniffer);\r
}\r
\r
private void UpdateBattleInfo()\r
{\r
ResetBattleInfo();\r
+ _listForm.UpdateBattleResult();\r
if (_sniffer.Battle.BattleState == BattleState.None)\r
return;\r
panelBattleInfo.BringToFront();\r
var battle = _sniffer.Battle;\r
labelFormation.Text = battle.Formation;\r
UpdateBattleFighterPower();\r
- if (_config.AlwaysShowResultRank)\r
+ if ((_config.Spoilers & Spoiler.ResultRank) != 0)\r
ShowResultRank();\r
if (_sniffer.Battle.BattleState == BattleState.Day)\r
_listForm.UpdateAirBattleResult();\r
- _listForm.UpdateBattleResult();\r
}\r
\r
private void ResetBattleInfo()\r