MaidFaceWindow.cs 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using UnityEngine;
  6. namespace COM3D2.MeidoPhotoStudio.Plugin
  7. {
  8. public class MaidFaceWindow : BaseMainWindow
  9. {
  10. private MeidoManager meidoManager;
  11. private MaidFaceSliderPane maidFaceSliderPane;
  12. private Dropdown faceBlendDropdown;
  13. private Button facePrevButton;
  14. private Button faceNextButton;
  15. public MaidFaceWindow(MeidoManager meidoManager)
  16. {
  17. this.meidoManager = meidoManager;
  18. this.meidoManager.SelectMeido += SelectMeido;
  19. TabsPane.TabChange += ChangeTab;
  20. this.maidFaceSliderPane = new MaidFaceSliderPane(this.meidoManager);
  21. this.faceBlendDropdown = new Dropdown(Translation.GetList("faceBlendPresetsDropdown", Constants.FaceBlendList));
  22. this.faceBlendDropdown.SelectionChange += (s, a) =>
  23. {
  24. string faceBlend = Constants.FaceBlendList[this.faceBlendDropdown.SelectedItemIndex];
  25. this.meidoManager.ActiveMeido.SetFaceBlend(faceBlend);
  26. this.UpdateFace();
  27. };
  28. this.facePrevButton = new Button("<");
  29. this.facePrevButton.ControlEvent += (s, a) => this.faceBlendDropdown.Step(-1);
  30. this.faceNextButton = new Button(">");
  31. this.faceNextButton.ControlEvent += (s, a) => this.faceBlendDropdown.Step(1);
  32. }
  33. ~MaidFaceWindow()
  34. {
  35. TabsPane.TabChange -= ChangeTab;
  36. }
  37. public override void Draw(params GUILayoutOption[] layoutOptions)
  38. {
  39. float arrowButtonSize = 30;
  40. GUILayoutOption[] arrowLayoutOptions = {
  41. GUILayout.Width(arrowButtonSize),
  42. GUILayout.Height(arrowButtonSize)
  43. };
  44. float dropdownButtonHeight = arrowButtonSize;
  45. float dropdownButtonWidth = 143f;
  46. GUILayoutOption[] dropdownLayoutOptions = new GUILayoutOption[] {
  47. GUILayout.Height(dropdownButtonHeight),
  48. GUILayout.Width(dropdownButtonWidth)
  49. };
  50. MaidSwitcherPane.Draw();
  51. bool previousState = GUI.enabled;
  52. GUI.enabled = this.meidoManager.HasActiveMeido;
  53. GUILayout.BeginHorizontal();
  54. this.facePrevButton.Draw(arrowLayoutOptions);
  55. this.faceBlendDropdown.Draw(dropdownLayoutOptions);
  56. this.faceNextButton.Draw(arrowLayoutOptions);
  57. GUILayout.EndHorizontal();
  58. this.scrollPos = GUILayout.BeginScrollView(this.scrollPos);
  59. this.maidFaceSliderPane.Draw();
  60. GUILayout.EndScrollView();
  61. GUI.enabled = previousState;
  62. }
  63. private void UpdateFace()
  64. {
  65. if (this.meidoManager.HasActiveMeido)
  66. {
  67. this.meidoManager.ActiveMeido.Maid.boMabataki = false;
  68. this.meidoManager.ActiveMeido.Maid.body0.Face.morph.EyeMabataki = 0f;
  69. this.maidFaceSliderPane.SetControlValues();
  70. }
  71. }
  72. private void SelectMeido(object sender, MeidoChangeEventArgs args)
  73. {
  74. if (TabsPane.SelectedTab == Constants.Window.Face)
  75. UpdateFace();
  76. }
  77. private void ChangeTab(object sender, EventArgs args)
  78. {
  79. if (TabsPane.SelectedTab == Constants.Window.Face)
  80. UpdateFace();
  81. }
  82. }
  83. }