PC_SettingPanel.cs 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178
  1. using UnityEngine;
  2. using UnityEngine.UI;
  3. using QFramework;
  4. using I2.Loc;
  5. using System;
  6. using CustomTool;
  7. using System.IO;
  8. namespace QFramework
  9. {
  10. public class PC_SettingPanelData : UIPanelData
  11. {
  12. }
  13. [Serializable]
  14. public class SettingInfo
  15. {
  16. public float keySpeedValue;
  17. public float mouseSpeedValue;
  18. public string language;
  19. public SettingInfo(float keySpeed = 0.5f, float mouseSpeed = 0.5f, string language = "Chinese")
  20. {
  21. this.keySpeedValue = keySpeed;
  22. this.mouseSpeedValue = mouseSpeed;
  23. this.language = language;
  24. }
  25. }
  26. public partial class PC_SettingPanel : UIPanel
  27. {
  28. protected override void ProcessMsg(int eventId, QMsg msg)
  29. {
  30. throw new System.NotImplementedException();
  31. }
  32. private SettingInfo initSettingInfo = new SettingInfo(0.5f, 0.5f, "Chinese");
  33. private SettingInfo configSettingInfo;
  34. private SettingInfo currentSettingInfo = new SettingInfo();
  35. protected override void OnInit(IUIData uiData = null)
  36. {
  37. mData = uiData as PC_SettingPanelData ?? new PC_SettingPanelData();
  38. // please add init code here
  39. LanguageDropdown.onValueChanged.AddListener(s =>
  40. {
  41. if (LocalizationManager.HasLanguage(GetLanguageKeyCode(LanguageDropdown.options[LanguageDropdown.value].text)))
  42. {
  43. LocalizationManager.CurrentLanguage = GetLanguageKeyCode((LanguageDropdown.options[LanguageDropdown.value].text));
  44. currentSettingInfo.language = LocalizationManager.CurrentLanguage;
  45. }
  46. });
  47. ConfirmBtn.onClick.AddListener(() =>
  48. {
  49. SaveSettingInfo(currentSettingInfo);
  50. UIKit.ClosePanel<PC_SettingPanel>();
  51. });
  52. CancelBtn.onClick.AddListener(() =>
  53. {
  54. LoadSetingInfo(configSettingInfo);
  55. UIKit.ClosePanel<PC_SettingPanel>();
  56. });
  57. ResetBtrn.onClick.AddListener(() =>
  58. {
  59. LoadSetingInfo(initSettingInfo);
  60. });
  61. keySpeedSlider.onValueChanged.AddListener(s =>
  62. {
  63. keySpeedValue.text = Mathf.RoundToInt(keySpeedSlider.value * 100).ToString() + "%";
  64. currentSettingInfo.keySpeedValue = keySpeedSlider.value;
  65. RoamCameraController.Instance.TranslateSpeed = keySpeedSlider.value * 20;
  66. });
  67. mouseSpeedSlider.onValueChanged.AddListener(s =>
  68. {
  69. mouseSpeedValue.text = Mathf.RoundToInt(mouseSpeedSlider.value * 100).ToString() + "%";
  70. currentSettingInfo.mouseSpeedValue = mouseSpeedSlider.value;
  71. RoamCameraController.Instance.MouseScrollMoveSpeed = mouseSpeedSlider.value * 2;
  72. });
  73. }
  74. protected override void OnOpen(IUIData uiData = null)
  75. {
  76. RecordSettingInfo();
  77. configSettingInfo = GetSettingInfo();
  78. if (configSettingInfo != null)
  79. {
  80. LoadSetingInfo(configSettingInfo);
  81. }
  82. else
  83. {
  84. Debug.LogError("当前为存在设置信息,重新创建");
  85. }
  86. }
  87. protected override void OnShow()
  88. {
  89. }
  90. protected override void OnHide()
  91. {
  92. }
  93. protected override void OnClose()
  94. {
  95. }
  96. public void RecordSettingInfo()
  97. {
  98. currentSettingInfo.keySpeedValue = keySpeedSlider.value;
  99. currentSettingInfo.mouseSpeedValue = mouseSpeedSlider.value;
  100. currentSettingInfo.language = GetLanguageKeyCode(LanguageDropdown.options[LanguageDropdown.value].text);
  101. }
  102. public void LoadSetingInfo(SettingInfo settingInfo)
  103. {
  104. keySpeedSlider.value = settingInfo.keySpeedValue;
  105. mouseSpeedSlider.value = settingInfo.mouseSpeedValue;
  106. RoamCameraController.Instance.TranslateSpeed = keySpeedSlider.value * 20;
  107. RoamCameraController.Instance.MouseScrollMoveSpeed = mouseSpeedSlider.value * 2;
  108. foreach (var item in LanguageDropdown.options)
  109. {
  110. if (GetLanguageKeyCode(item.text) == settingInfo.language)
  111. {
  112. LanguageDropdown.value = LanguageDropdown.options.IndexOf(item);
  113. if (LocalizationManager.HasLanguage(settingInfo.language))
  114. {
  115. LocalizationManager.CurrentLanguage = settingInfo.language;
  116. }
  117. break;
  118. }
  119. }
  120. }
  121. /// <summary>
  122. /// 获取相机配置数据
  123. /// </summary>
  124. /// <returns></returns>
  125. private SettingInfo GetSettingInfo()
  126. {
  127. // 拼接文件基本路径
  128. string filePath = PathHelper.CombineFilePath(PathHelper.m_ReadOnlyPath,
  129. "Json",
  130. "SettingInfo.json");
  131. string fileData = FileHelper.GetAllDataInfo(filePath);
  132. SettingInfo config = JsonUtility.FromJson<SettingInfo>(fileData);
  133. return config == null ? null : config;
  134. }
  135. public void SaveSettingInfo(SettingInfo info)
  136. {
  137. // 拼接文件基本路径
  138. string filePath = PathHelper.CombineFilePath(PathHelper.m_ReadOnlyPath,
  139. "Json",
  140. "SettingInfo.json");
  141. File.WriteAllText(filePath, JsonUtility.ToJson(info));
  142. }
  143. //语言Code转换
  144. public string GetLanguageKeyCode(string name)
  145. {
  146. if (name.Equals("简体中文") || name.Equals("中文"))
  147. {
  148. return "Chinese";
  149. }
  150. return name;
  151. }
  152. }
  153. }