SavePosePane.cs 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. using System;
  2. using UnityEngine;
  3. namespace MeidoPhotoStudio.Plugin;
  4. public class SavePosePane : BasePane
  5. {
  6. private readonly MeidoManager meidoManager;
  7. private readonly Button savePoseButton;
  8. private readonly TextField poseNameTextField;
  9. private readonly ComboBox categoryComboBox;
  10. private string categoryHeader;
  11. private string nameHeader;
  12. public SavePosePane(MeidoManager meidoManager)
  13. {
  14. Constants.CustomPoseChange += (_, _) =>
  15. categoryComboBox.SetDropdownItems(Constants.CustomPoseGroupList.ToArray());
  16. this.meidoManager = meidoManager;
  17. categoryHeader = Translation.Get("posePane", "categoryHeader");
  18. nameHeader = Translation.Get("posePane", "nameHeader");
  19. savePoseButton = new(Translation.Get("posePane", "saveButton"));
  20. savePoseButton.ControlEvent += OnSavePose;
  21. categoryComboBox = new(Constants.CustomPoseGroupList.ToArray());
  22. poseNameTextField = new();
  23. poseNameTextField.ControlEvent += OnSavePose;
  24. }
  25. public override void Draw()
  26. {
  27. GUI.enabled = meidoManager.HasActiveMeido;
  28. MpsGui.Header(categoryHeader);
  29. categoryComboBox.Draw(GUILayout.Width(160f));
  30. MpsGui.Header(nameHeader);
  31. GUILayout.BeginHorizontal();
  32. poseNameTextField.Draw(GUILayout.Width(160f));
  33. savePoseButton.Draw(GUILayout.ExpandWidth(false));
  34. GUILayout.EndHorizontal();
  35. GUI.enabled = true;
  36. }
  37. protected override void ReloadTranslation()
  38. {
  39. categoryHeader = Translation.Get("posePane", "categoryHeader");
  40. nameHeader = Translation.Get("posePane", "nameHeader");
  41. savePoseButton.Label = Translation.Get("posePane", "saveButton");
  42. }
  43. private void OnSavePose(object sender, EventArgs args)
  44. {
  45. var anmBinary = meidoManager.ActiveMeido.SerializePose();
  46. Constants.AddPose(anmBinary, poseNameTextField.Value, categoryComboBox.Value);
  47. poseNameTextField.Value = string.Empty;
  48. }
  49. }