MaidPoseWindow.cs 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  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 MaidPoseWindow : BaseMainWindow
  9. {
  10. private MeidoManager meidoManager;
  11. private Button poseLeftButton;
  12. private Button poseRightButton;
  13. private Button poseGroupLeftButton;
  14. private Button poseGroupRightButton;
  15. private Dropdown poseGroupDropdown;
  16. private Dropdown poseDropdown;
  17. private string selectedPoseGroup;
  18. private int selectedPose;
  19. public MaidPoseWindow(MeidoManager meidoManager)
  20. {
  21. this.meidoManager = meidoManager;
  22. this.meidoManager.SelectMeido += SelectMeido;
  23. this.poseGroupDropdown = new Dropdown(Translation.GetList("poseGroupDropdown", Constants.PoseGroupList));
  24. this.poseGroupDropdown.SelectionChange += ChangePoseGroup;
  25. this.poseDropdown = new Dropdown(Constants.PoseDict[Constants.PoseGroupList[0]].ToArray());
  26. this.poseDropdown.SelectionChange += ChangePose;
  27. this.poseGroupLeftButton = new Button("<");
  28. this.poseGroupLeftButton.ControlEvent += (s, a) => poseGroupDropdown.Step(-1);
  29. this.poseGroupRightButton = new Button(">");
  30. this.poseGroupRightButton.ControlEvent += (s, a) => poseGroupDropdown.Step(1);
  31. this.poseLeftButton = new Button("<");
  32. this.poseLeftButton.ControlEvent += (s, a) => poseDropdown.Step(-1);
  33. this.poseRightButton = new Button(">");
  34. this.poseRightButton.ControlEvent += (s, a) => poseDropdown.Step(1);
  35. }
  36. private void ChangePoseGroup(object sender, EventArgs args)
  37. {
  38. string newPoseGroup = Constants.PoseGroupList[this.poseGroupDropdown.SelectedItemIndex];
  39. if (selectedPoseGroup == newPoseGroup)
  40. {
  41. this.poseDropdown.SelectedItemIndex = 0;
  42. }
  43. else
  44. {
  45. selectedPoseGroup = newPoseGroup;
  46. if (this.poseGroupDropdown.SelectedItemIndex >= Constants.CustomPoseGroupsIndex)
  47. {
  48. List<KeyValuePair<string, string>> pairList = Constants.CustomPoseDict[selectedPoseGroup];
  49. string[] poseList = pairList.Select(pair => pair.Key).ToArray();
  50. this.poseDropdown.SetDropdownItems(poseList);
  51. }
  52. else
  53. {
  54. this.poseDropdown.SetDropdownItems(Constants.PoseDict[selectedPoseGroup].ToArray());
  55. }
  56. }
  57. }
  58. private void ChangePose(object sender, EventArgs args)
  59. {
  60. selectedPose = poseDropdown.SelectedItemIndex;
  61. string poseName;
  62. if (this.poseGroupDropdown.SelectedItemIndex >= Constants.CustomPoseGroupsIndex)
  63. poseName = Constants.CustomPoseDict[selectedPoseGroup][selectedPose].Value;
  64. else
  65. poseName = Constants.PoseDict[selectedPoseGroup][selectedPose];
  66. meidoManager.ActiveMeido.SetPose(poseName);
  67. }
  68. public override void Draw(params GUILayoutOption[] layoutOptions)
  69. {
  70. float arrowButtonSize = 30;
  71. GUILayoutOption[] arrowLayoutOptions = {
  72. GUILayout.Width(arrowButtonSize),
  73. GUILayout.Height(arrowButtonSize)
  74. };
  75. float dropdownButtonHeight = arrowButtonSize;
  76. float dropdownButtonWidth = 143f;
  77. GUILayoutOption[] dropdownLayoutOptions = new GUILayoutOption[] {
  78. GUILayout.Height(dropdownButtonHeight),
  79. GUILayout.Width(dropdownButtonWidth)
  80. };
  81. MaidSwitcherPane.Draw();
  82. bool previousState = GUI.enabled;
  83. GUI.enabled = meidoManager.HasActiveMeido;
  84. GUILayout.BeginHorizontal();
  85. this.poseGroupLeftButton.Draw(arrowLayoutOptions);
  86. this.poseGroupDropdown.Draw(dropdownLayoutOptions);
  87. this.poseGroupRightButton.Draw(arrowLayoutOptions);
  88. GUILayout.EndHorizontal();
  89. GUILayout.BeginHorizontal();
  90. this.poseLeftButton.Draw(arrowLayoutOptions);
  91. this.poseDropdown.Draw(dropdownLayoutOptions);
  92. this.poseRightButton.Draw(arrowLayoutOptions);
  93. GUILayout.EndHorizontal();
  94. GUI.enabled = previousState;
  95. }
  96. private void SelectMeido(object sender, EventArgs args)
  97. {
  98. }
  99. }
  100. }