MaidSwitcherPane.cs 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. using UnityEngine;
  2. namespace COM3D2.MeidoPhotoStudio.Plugin
  3. {
  4. internal class MaidSwitcherPane : BasePane
  5. {
  6. private readonly MeidoManager meidoManager;
  7. private readonly Button PreviousButton;
  8. private readonly Button NextButton;
  9. public MaidSwitcherPane(MeidoManager meidoManager)
  10. {
  11. this.meidoManager = meidoManager;
  12. PreviousButton = new Button("<");
  13. PreviousButton.ControlEvent += (s, a) => ChangeMaid(-1);
  14. NextButton = new Button(">");
  15. NextButton.ControlEvent += (s, a) => ChangeMaid(1);
  16. }
  17. public override void Draw()
  18. {
  19. GUIStyle boxStyle = new GUIStyle(GUI.skin.box);
  20. GUIStyle buttonStyle = new GUIStyle(GUI.skin.button);
  21. GUIStyle labelStyle = new GUIStyle(GUI.skin.label);
  22. boxStyle.padding.top = -15;
  23. buttonStyle.margin.top = 20;
  24. labelStyle.alignment = TextAnchor.UpperLeft;
  25. GUILayout.BeginHorizontal();
  26. GUI.enabled = meidoManager.HasActiveMeido;
  27. PreviousButton.Draw(buttonStyle, GUILayout.Height(40), GUILayout.ExpandWidth(false));
  28. if (meidoManager.HasActiveMeido)
  29. MpsGui.DrawTexture(meidoManager.ActiveMeido.Portrait, GUILayout.Width(70), GUILayout.Height(70));
  30. else
  31. GUILayout.Box("", boxStyle, GUILayout.Height(70), GUILayout.Width(70));
  32. GUILayout.BeginVertical();
  33. GUILayout.Space(30);
  34. string label = "";
  35. if (meidoManager.HasActiveMeido)
  36. {
  37. Meido meido = meidoManager.ActiveMeido;
  38. label = $"{meido.LastName}\n{meido.FirstName}";
  39. }
  40. GUILayout.Label(label, labelStyle, GUILayout.ExpandWidth(false));
  41. GUILayout.EndVertical();
  42. NextButton.Draw(buttonStyle, GUILayout.Height(40), GUILayout.ExpandWidth(false));
  43. GUILayout.EndHorizontal();
  44. }
  45. private void ChangeMaid(int dir)
  46. {
  47. dir = (int)Mathf.Sign(dir);
  48. int selected = Utility.Wrap(
  49. meidoManager.SelectedMeido + dir, 0, meidoManager.ActiveMeidoList.Count
  50. );
  51. meidoManager.ChangeMaid(selected);
  52. }
  53. }
  54. }