private void CheckExpedition(int missionID, int fleetID)
        {
            var fleet  = KCDatabase.Instance.Fleet[fleetID];
            var result = MissionClearCondition.Check(missionID, fleet);

            if (!result.IsSuceeded)
            {
                var mission = KCDatabase.Instance.Mission[missionID];
                MessageBox.Show(
                    $"#{fleet.FleetID} {fleet.Name} の遠征 {mission.DisplayID}:{mission.Name} は、失敗する可能性があります。\r\n\r\n{string.Join("\r\n", result.FailureReason)}\r\n\r\n(この警告は 設定→動作 から無効化できます。)",
                    "遠征失敗警告", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }
        }
        private void UpdateCheckView()
        {
            CheckView.SuspendLayout();

            CheckView.Rows.Clear();

            var db   = KCDatabase.Instance;
            var rows = new List <DataGridViewRow>(db.Mission.Count);

            var defaultStyle = CheckView.RowsDefaultCellStyle;
            var failedStyle  = defaultStyle.Clone();

            failedStyle.BackColor          = Color.MistyRose;
            failedStyle.SelectionBackColor = Color.Brown;


            foreach (var mission in db.Mission.Values)
            {
                var results = new[]
                {
                    MissionClearCondition.Check(mission.MissionID, db.Fleet[2]),
                    MissionClearCondition.Check(mission.MissionID, db.Fleet[3]),
                    MissionClearCondition.Check(mission.MissionID, db.Fleet[4]),
                    MissionClearCondition.Check(mission.MissionID, null),
                };


                var row = new DataGridViewRow();
                row.CreateCells(CheckView);
                row.SetValues(
                    mission.MissionID,
                    mission.MissionID,
                    results[0],
                    results[1],
                    results[2],
                    results[3]);

                row.Cells[1].ToolTipText = $"ID: {mission.MissionID}";

                for (int i = 0; i < 4; i++)
                {
                    var result = results[i];
                    var cell   = row.Cells[i + 2];

                    if (result.IsSuceeded || i == 3)
                    {
                        if (!result.FailureReason.Any())
                        {
                            cell.Value = "○";
                        }
                        else
                        {
                            cell.Value = string.Join(", ", result.FailureReason);
                        }

                        cell.Style = defaultStyle;
                    }
                    else
                    {
                        cell.Value = string.Join(", ", result.FailureReason);
                        cell.Style = failedStyle;
                    }
                }

                rows.Add(row);
            }

            CheckView.Rows.AddRange(rows.ToArray());

            CheckView.Sort(CheckView_Name, ListSortDirection.Ascending);

            CheckView.ResumeLayout();
        }