SaveHandPane.cs 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. using UnityEngine;
  2. namespace MeidoPhotoStudio.Plugin;
  3. public class SaveHandPane : BasePane
  4. {
  5. private readonly MeidoManager meidoManager;
  6. private readonly ComboBox categoryComboBox;
  7. private readonly TextField handNameTextField;
  8. private readonly Button saveLeftHandButton;
  9. private readonly Button saveRightHandButton;
  10. private string categoryHeader;
  11. private string nameHeader;
  12. public SaveHandPane(MeidoManager meidoManager)
  13. {
  14. Constants.CustomHandChange += (_, _) =>
  15. categoryComboBox.SetDropdownItems(Constants.CustomHandGroupList.ToArray());
  16. this.meidoManager = meidoManager;
  17. categoryHeader = Translation.Get("handPane", "categoryHeader");
  18. nameHeader = Translation.Get("handPane", "nameHeader");
  19. saveLeftHandButton = new(Translation.Get("handPane", "saveLeftButton"));
  20. saveLeftHandButton.ControlEvent += (_, _) =>
  21. SaveHand(right: false);
  22. saveRightHandButton = new(Translation.Get("handPane", "saveRightButton"));
  23. saveRightHandButton.ControlEvent += (_, _) =>
  24. SaveHand(right: true);
  25. categoryComboBox = new(Constants.CustomHandGroupList.ToArray());
  26. handNameTextField = new();
  27. }
  28. public override void Draw()
  29. {
  30. GUI.enabled = meidoManager.HasActiveMeido;
  31. MpsGui.Header(categoryHeader);
  32. categoryComboBox.Draw(GUILayout.Width(165f));
  33. MpsGui.Header(nameHeader);
  34. handNameTextField.Draw(GUILayout.Width(165f));
  35. GUILayout.BeginHorizontal();
  36. saveRightHandButton.Draw();
  37. saveLeftHandButton.Draw();
  38. GUILayout.EndHorizontal();
  39. GUI.enabled = true;
  40. }
  41. protected override void ReloadTranslation()
  42. {
  43. categoryHeader = Translation.Get("handPane", "categoryHeader");
  44. nameHeader = Translation.Get("handPane", "nameHeader");
  45. saveLeftHandButton.Label = Translation.Get("handPane", "saveLeftButton");
  46. saveRightHandButton.Label = Translation.Get("handPane", "saveRightButton");
  47. }
  48. private void SaveHand(bool right)
  49. {
  50. var handBinary = meidoManager.ActiveMeido.IKManager.SerializeHand(right);
  51. Constants.AddHand(handBinary, right, handNameTextField.Value, categoryComboBox.Value);
  52. handNameTextField.Value = string.Empty;
  53. }
  54. }