MaidFaceWindow.cs 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  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. GUI.enabled = this.meidoManager.HasActiveMeido;
  52. GUILayout.BeginHorizontal();
  53. this.facePrevButton.Draw(arrowLayoutOptions);
  54. this.faceBlendDropdown.Draw(dropdownLayoutOptions);
  55. this.faceNextButton.Draw(arrowLayoutOptions);
  56. GUILayout.EndHorizontal();
  57. this.scrollPos = GUILayout.BeginScrollView(this.scrollPos);
  58. this.maidFaceSliderPane.Draw();
  59. GUILayout.EndScrollView();
  60. }
  61. private void UpdateFace()
  62. {
  63. if (!this.meidoManager.HasActiveMeido) return;
  64. if (TabsPane.SelectedTab == Constants.Window.Face)
  65. {
  66. this.meidoManager.ActiveMeido.Maid.boMabataki = false;
  67. this.meidoManager.ActiveMeido.Maid.body0.Face.morph.EyeMabataki = 0f;
  68. this.maidFaceSliderPane.Update();
  69. }
  70. }
  71. private void SelectMeido(object sender, MeidoChangeEventArgs args)
  72. {
  73. UpdateFace();
  74. }
  75. private void ChangeTab(object sender, EventArgs args)
  76. {
  77. UpdateFace();
  78. }
  79. }
  80. }