mirror of
https://github.com/jie65535/GrasscutterCommandGenerator.git
synced 2025-12-13 09:21:35 +08:00
Update page navigation
Add Achievement page
This commit is contained in:
101
Source/GrasscutterTools/Pages/PageAchievement.cs
Normal file
101
Source/GrasscutterTools/Pages/PageAchievement.cs
Normal file
@@ -0,0 +1,101 @@
|
||||
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();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 点击全部达成时触发
|
||||
/// </summary>
|
||||
private void LnkGrantAll_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
|
||||
{
|
||||
SetCommand("/achievement grantall");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 点击全部撤销时触发
|
||||
/// </summary>
|
||||
private void LnkRevokeAll_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
|
||||
{
|
||||
SetCommand("/achievement revokeall");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 更新列表显示内容
|
||||
/// </summary>
|
||||
private void UpdateList()
|
||||
{
|
||||
UIUtil.ListBoxFilter(ListAchievements, GameData.Achievements.Lines, TxtAchievementFilter.Text);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 过滤器输入改变时触发
|
||||
/// </summary>
|
||||
private void TxtAchievementFilter_TextChanged(object sender, EventArgs e)
|
||||
{
|
||||
UpdateList();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取所有选中项ID
|
||||
/// </summary>
|
||||
/// <returns>所有选中项ID,如未选中返回 null</returns>
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user