using System; using System.Linq; using System.Windows.Forms; using GrasscutterTools.Game; using GrasscutterTools.Properties; using GrasscutterTools.Utils; namespace GrasscutterTools.Pages { internal partial class PageAchievement : BasePage { public PageAchievement() { InitializeComponent(); } public override void OnLoad() { base.OnLoad(); UpdateList(); } /// /// 点击全部达成时触发 /// private void LnkGrantAll_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) { SetCommand("/achievement grantall"); } /// /// 点击全部撤销时触发 /// private void LnkRevokeAll_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) { SetCommand("/achievement revokeall"); } /// /// 更新列表显示内容 /// private void UpdateList() { UIUtil.ListBoxFilter(ListAchievements, GameData.Achievements.Lines, TxtAchievementFilter.Text); } /// /// 过滤器输入改变时触发 /// private void TxtAchievementFilter_TextChanged(object sender, EventArgs e) { UpdateList(); } /// /// 获取所有选中项ID /// /// 所有选中项ID,如未选中返回 null private int[] GetSelectedIds() { if (ListAchievements.SelectedItems.Count == 0) return null; var selectedIds = new int[ListAchievements.SelectedItems.Count]; var i = 0; foreach (string item in ListAchievements.SelectedItems) selectedIds[i++] = int.Parse(item.Substring(0, item.IndexOf(':'))); return selectedIds; } private void GenSelected(string command, string args = "") { var selectedIds = GetSelectedIds(); if (selectedIds == null) { MessageBox.Show(Resources.SelectAnyItem, Resources.Error, MessageBoxButtons.OK, MessageBoxIcon.Error); return; } if (selectedIds.Length == 1) SetCommand(args == "" ? $"{command} {selectedIds[0]}" : $"{command} {selectedIds[0]} {args}"); else SetCommand(string.Join(" | ", selectedIds.Select(it => args == "" ? $"{command} {it}" : $"{command} {it} {args}"))); } private void BtnGrant_Click(object sender, EventArgs e) { GenSelected("/achievement grant"); } private void BtnRevoke_Click(object sender, EventArgs e) { GenSelected("/achievement revoke"); } private void BtnProgress_Click(object sender, EventArgs e) { GenSelected("/achievement progress", NUDProgress.Text); } } }