Newer
Older
DungeonShooting / DungeonShooting_Godot / src / game / ui / setting / SettingPanel.cs
  1. using Config;
  2. using Godot;
  3.  
  4. namespace UI.Setting;
  5.  
  6. public partial class SettingPanel : Setting
  7. {
  8. public override void OnCreateUi()
  9. {
  10. if (PrevUi != null)
  11. {
  12. //返回上一级UI
  13. S_Back.Instance.Pressed += () =>
  14. {
  15. OpenPrevUi();
  16. };
  17. }
  18. else
  19. {
  20. S_Back.Instance.Pressed += () =>
  21. {
  22. Destroy();
  23. };
  24. }
  25. //声音设置BGM
  26. S_BGM.Instance.ValueChanged += (double v) =>
  27. {
  28. var value = (float)v;
  29. GameApplication.Instance.GameSave.BgmVolume = value;
  30. SoundManager.SetBusValue(BUS.BGM, value);
  31. };
  32. //声音设置SFX
  33. S_SFX.Instance.ValueChanged += (double v) =>
  34. {
  35. var value = (float)v;
  36. GameApplication.Instance.GameSave.SfxVolume = value;
  37. SoundManager.SetBusValue(BUS.SFX, value);
  38. };
  39. //声音设置设置BGM SFX的值
  40. S_SFX.Instance.VisibilityChanged += () =>
  41. {
  42. S_BGM.Instance.Value = GameApplication.Instance.GameSave.BgmVolume;
  43. S_SFX.Instance.Value = GameApplication.Instance.GameSave.SfxVolume;
  44. };
  45.  
  46. //---------------------- 视频设置 -----------------------------
  47. //全屏属性
  48. S_FullScreen.L_CheckBox.Instance.ButtonPressed = DisplayServer.WindowGetMode() == DisplayServer.WindowMode.Fullscreen;
  49. S_FullScreen.L_CheckBox.Instance.Pressed += OnChangeFullScreen;
  50. //-----------------------------------------------------------
  51. }
  52.  
  53. public override void OnDestroyUi()
  54. {
  55. GameApplication.Instance.GameSave.Save();
  56. }
  57.  
  58. //切换全屏/非全屏
  59. private void OnChangeFullScreen()
  60. {
  61. var checkBox = S_FullScreen.L_CheckBox.Instance;
  62. GameApplication.Instance.GameSave.FullScreen = checkBox.ButtonPressed;
  63. if (checkBox.ButtonPressed)
  64. {
  65. DisplayServer.WindowSetMode(DisplayServer.WindowMode.Fullscreen);
  66. }
  67. else
  68. {
  69. DisplayServer.WindowSetMode(DisplayServer.WindowMode.Windowed);
  70. }
  71. }
  72.  
  73. }