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(); }