SaveFacePane.cs 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. using UnityEngine;
  2. namespace MeidoPhotoStudio.Plugin;
  3. public class SaveFacePane : BasePane
  4. {
  5. private readonly MeidoManager meidoManager;
  6. private readonly ComboBox categoryComboBox;
  7. private readonly TextField faceNameTextField;
  8. private readonly Button saveFaceButton;
  9. private string categoryHeader;
  10. private string nameHeader;
  11. public SaveFacePane(MeidoManager meidoManager)
  12. {
  13. Constants.CustomFaceChange += (_, _) =>
  14. categoryComboBox.SetDropdownItems(Constants.CustomFaceGroupList.ToArray());
  15. this.meidoManager = meidoManager;
  16. categoryHeader = Translation.Get("faceSave", "categoryHeader");
  17. nameHeader = Translation.Get("faceSave", "nameHeader");
  18. saveFaceButton = new(Translation.Get("faceSave", "saveButton"));
  19. saveFaceButton.ControlEvent += (_, _) =>
  20. SaveFace();
  21. categoryComboBox = new(Constants.CustomFaceGroupList.ToArray());
  22. faceNameTextField = new();
  23. }
  24. public override void Draw()
  25. {
  26. GUI.enabled = meidoManager.HasActiveMeido;
  27. MpsGui.Header(categoryHeader);
  28. categoryComboBox.Draw(GUILayout.Width(165f));
  29. MpsGui.Header(nameHeader);
  30. GUILayout.BeginHorizontal();
  31. faceNameTextField.Draw(GUILayout.Width(160f));
  32. saveFaceButton.Draw(GUILayout.ExpandWidth(false));
  33. GUILayout.EndHorizontal();
  34. GUI.enabled = true;
  35. }
  36. protected override void ReloadTranslation()
  37. {
  38. categoryHeader = Translation.Get("faceSave", "categoryHeader");
  39. nameHeader = Translation.Get("faceSave", "nameHeader");
  40. saveFaceButton.Label = Translation.Get("faceSave", "saveButton");
  41. }
  42. private void SaveFace()
  43. {
  44. if (!meidoManager.HasActiveMeido)
  45. return;
  46. var meido = meidoManager.ActiveMeido;
  47. Constants.AddFacePreset(meido.SerializeFace(), faceNameTextField.Value, categoryComboBox.Value);
  48. faceNameTextField.Value = string.Empty;
  49. }
  50. }