MaidFaceWindow.cs 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  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(
  22. Translation.GetArray("faceBlendPresetsDropdown", Constants.FaceBlendList)
  23. );
  24. this.faceBlendDropdown.SelectionChange += (s, a) =>
  25. {
  26. string faceBlend = Constants.FaceBlendList[this.faceBlendDropdown.SelectedItemIndex];
  27. this.meidoManager.ActiveMeido.SetFaceBlend(faceBlend);
  28. this.UpdateFace();
  29. };
  30. this.facePrevButton = new Button("<");
  31. this.facePrevButton.ControlEvent += (s, a) => this.faceBlendDropdown.Step(-1);
  32. this.faceNextButton = new Button(">");
  33. this.faceNextButton.ControlEvent += (s, a) => this.faceBlendDropdown.Step(1);
  34. }
  35. ~MaidFaceWindow()
  36. {
  37. TabsPane.TabChange -= ChangeTab;
  38. }
  39. public override void Draw(params GUILayoutOption[] layoutOptions)
  40. {
  41. float arrowButtonSize = 30;
  42. GUILayoutOption[] arrowLayoutOptions = {
  43. GUILayout.Width(arrowButtonSize),
  44. GUILayout.Height(arrowButtonSize)
  45. };
  46. float dropdownButtonHeight = arrowButtonSize;
  47. float dropdownButtonWidth = 153f;
  48. GUILayoutOption[] dropdownLayoutOptions = new GUILayoutOption[] {
  49. GUILayout.Height(dropdownButtonHeight),
  50. GUILayout.Width(dropdownButtonWidth)
  51. };
  52. MaidSwitcherPane.Draw();
  53. GUI.enabled = this.meidoManager.HasActiveMeido;
  54. GUILayout.BeginHorizontal();
  55. this.facePrevButton.Draw(arrowLayoutOptions);
  56. this.faceBlendDropdown.Draw(dropdownLayoutOptions);
  57. this.faceNextButton.Draw(arrowLayoutOptions);
  58. GUILayout.EndHorizontal();
  59. this.scrollPos = GUILayout.BeginScrollView(this.scrollPos);
  60. this.maidFaceSliderPane.Draw();
  61. GUILayout.EndScrollView();
  62. }
  63. private void UpdateFace()
  64. {
  65. if (!this.meidoManager.HasActiveMeido) return;
  66. if (TabsPane.SelectedTab == Constants.Window.Face)
  67. {
  68. this.meidoManager.ActiveMeido.Maid.boMabataki = false;
  69. this.meidoManager.ActiveMeido.Maid.body0.Face.morph.EyeMabataki = 0f;
  70. this.maidFaceSliderPane.Update();
  71. }
  72. }
  73. private void SelectMeido(object sender, MeidoChangeEventArgs args)
  74. {
  75. UpdateFace();
  76. }
  77. private void ChangeTab(object sender, EventArgs args)
  78. {
  79. UpdateFace();
  80. }
  81. }
  82. }