/** * Grasscutter Tools * Copyright (C) 2022 jie65535 * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as published * by the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see . * **/ using System; using System.Linq; using System.Windows.Forms; using GrasscutterTools.Game; using GrasscutterTools.Properties; using GrasscutterTools.Utils; namespace GrasscutterTools.Pages { internal partial class PageAvatar : BasePage { public override string Text => Resources.PageAvatarTitle; public PageAvatar() { InitializeComponent(); } public override void OnLoad() { InitAvatars(); InitStatList(); } #region -- 获取角色 -- /// /// 初始化角色列表 /// private void InitAvatars() { CmbAvatar.Items.Clear(); CmbAvatar.Items.AddRange(GameData.Avatars.Names); } /// /// 角色页面输入改变时触发 /// private void GiveAvatarInputChanged(object sender, EventArgs e) { if (CmbAvatar.SelectedIndex >= 0) GenAvatar((int)NUDAvatarLevel.Value, (int)NUDAvatarConstellation.Value, (int)NUDAvatarSkillLevel.Value); } /// /// 获取角色命令 /// /// 等级 private void GenAvatar(int level, int constellation, int skillLevel) { if (CommandVersion.Check(CommandVersion.V1_4_1)) { int avatarId = GameData.Avatars.Ids[CmbAvatar.SelectedIndex]; SetCommand("/give", $"{avatarId} lv{level} c{constellation} sl{skillLevel}"); } else if (CommandVersion.Check(CommandVersion.V1_2_2)) { int avatarId = GameData.Avatars.Ids[CmbAvatar.SelectedIndex]; SetCommand("/give", $"{avatarId} lv{level} c{constellation}"); } else { int avatarId = GameData.Avatars.Ids[CmbAvatar.SelectedIndex] - 1000 + 10000000; SetCommand("/givechar", $"{avatarId} {level}"); } } /// /// 点击获取所有角色按钮时触发 /// /// /// private void BtnGiveAllChar_Click(object sender, EventArgs e) { var level = NUDAvatarLevel.Value; var constellation = NUDAvatarConstellation.Value; var skillLevel = NUDAvatarSkillLevel.Value; if (CommandVersion.Check(CommandVersion.V1_4_1)) SetCommand("/give avatars", $"lv{level} c{constellation} sl{skillLevel}"); else SetCommand("/give avatars", $"lv{level} c{constellation}"); } #endregion -- 获取角色 -- #region -- 切换主角元素 -- /// /// 点击切换主角元素链接标签时触发 /// private void LnkSwitchElement_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) { UIUtil.OpenURL("https://github.com/Penelopeep/SwitchElementTraveller"); } /// /// 元素参数 /// private readonly string[] Elements = { "white", "fire", "water", "wind", "ice", "rock", "electro", "grass" }; /// /// 切换元素下拉框选中项改变时触发 /// private void CmbSwitchElement_SelectedIndexChanged(object sender, EventArgs e) { if (CmbSwitchElement.SelectedIndex == -1 || CmbSwitchElement.SelectedIndex >= Elements.Length) return; SetCommand("/se", Elements[CmbSwitchElement.SelectedIndex]); } #endregion -- 切换主角元素 -- #region -- 设置角色属性 -- /// /// 初始化数据列表 /// private void InitStatList() { LblStatTip.Text = ""; SetStatsCommand.InitStats(); CmbStat.Items.Clear(); CmbStat.Items.AddRange(SetStatsCommand.Stats.Select(s => s.Name).ToArray()); } /// /// 数据页面输入改变时触发 /// private void SetStatsInputChanged(object sender, EventArgs e) { if (CmbStat.SelectedIndex < 0) return; else BtnLockStat.Enabled = BtnUnlockStat.Enabled = true; var stat = SetStatsCommand.Stats[CmbStat.SelectedIndex]; LblStatPercent.Visible = stat.Percent; LblStatTip.Text = stat.Tip; SetCommand("/setstats", $"{stat.ArgName} {NUDStat.Value}{(stat.Percent ? "%" : "")}"); } /// /// 点击锁定按钮时触发 /// private void BtnLockStat_Click(object sender, EventArgs e) { var stat = SetStatsCommand.Stats[CmbStat.SelectedIndex]; SetCommand("/setstats", $"lock {stat.ArgName} {NUDStat.Value}{(stat.Percent ? "%" : "")}"); } /// /// 点击解锁按钮时触发 /// private void BtnUnlockStat_Click(object sender, EventArgs e) { var stat = SetStatsCommand.Stats[CmbStat.SelectedIndex]; SetCommand("/setstats", $"unlock {stat.ArgName}"); } #endregion -- 设置角色属性 -- #region -- 设置技能等级 -- /// /// 点击设置技能按钮时触发 /// private void LnkSetTalentClicked(object sender, LinkLabelLinkClickedEventArgs e) { SetCommand("/talent", $"{(sender as LinkLabel).Tag} {NUDTalentLevel.Value}"); } #endregion -- 设置技能等级 -- #region -- 设置命座 -- /// /// 设置命座链接标签点击时触发 /// private void LnkSetConst_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) { if (NUDSetConstellation.Value >= 0) SetCommand("/setConst", $"{NUDSetConstellation.Value}" + (sender == LnkSetAllConst ? " all" : string.Empty)); else SetCommand("/resetConst", (sender == LnkSetAllConst ? "all" : string.Empty)); } #endregion -- 设置命座 -- } }