MaidFaceWindow.cs 3.6 KB

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