源战役客户端
您最多选择25个主题 主题必须以字母或数字开头,可以包含连字符 (-),并且长度不得超过35个字符

255 行
9.7 KiB

  1. BasicSettingView = BasicSettingView or BaseClass(BaseItem)
  2. local BasicSettingView = BasicSettingView
  3. local lua_settingM = lua_settingM
  4. local lua_soundM = lua_soundM
  5. -- 挂机设置界面
  6. function BasicSettingView:__init(parent)
  7. self.base_file = "setting"
  8. self.layout_file = "BasicSettingView"
  9. self.perform_item_list = {}
  10. self.perform_list = {}
  11. self.model = GameSettingModel:GetInstance()
  12. self:Load()
  13. end
  14. function BasicSettingView:Load_callback()
  15. self:LoadSuccess()
  16. self:InitEvent()
  17. end
  18. function BasicSettingView:LoadSuccess()
  19. self.perform_con = self:GetChild("perform_con")
  20. -- 音效和同屏人数设置
  21. self.count_slider = self:GetChild("count/countSlider"):GetComponent("Slider")
  22. self.count_value = self:GetChild("count/value"):GetComponent("TextMeshProUGUI")
  23. self.music_slider = self:GetChild("Music/musicSlider"):GetComponent("Slider") -- 背景音乐
  24. self.music_value = self:GetChild("Music/value"):GetComponent("TextMeshProUGUI")
  25. self.music_btn = self:GetChild("Music/valueBtn"):GetComponent("Image")
  26. self.soundEffect_slider = self:GetChild("soundEffect/effectSlider"):GetComponent("Slider") -- 音效
  27. self.soundEffect_value = self:GetChild("soundEffect/value"):GetComponent("TextMeshProUGUI")
  28. self.soundEffect_btn = self:GetChild("soundEffect/valueBtn"):GetComponent("Image")
  29. self:InitPerformItem()
  30. if self.need_refreshData then
  31. self:SetData()
  32. end
  33. end
  34. -- 初始化性能设置item
  35. function BasicSettingView:InitPerformItem()
  36. self.perform_list = GameSettingManager.PerformanceList
  37. if self.perform_list == nil or #self.perform_list == 0 then return end
  38. local item
  39. local call_back = function(symbol,val)
  40. self:SetPerformance(symbol,val)
  41. end
  42. for i,v in ipairs(self.perform_list) do
  43. if self.perform_item_list[i] == nil then
  44. item = SettingPerformItem.New(self.perform_con)
  45. self.perform_item_list[i] = item
  46. end
  47. item = self.perform_item_list[i]
  48. item:SetData(v,call_back)
  49. end
  50. self:SetPerformData()
  51. end
  52. function BasicSettingView:SetPerformance(key,val)
  53. --修改画质的时候同步修改后处理效果
  54. if key == "quality" then
  55. lua_settingM:SetPostEffectLevel(val)
  56. end
  57. lua_settingM:SetPerformanceProperty(key,val)
  58. CookieWrapper.Instance:WriteAll()
  59. end
  60. function BasicSettingView:InitEvent()
  61. -- 滑动条拖动完毕后,写cookie
  62. local function onSliderDragEnd(target)
  63. local value = target:GetComponent("Slider").value
  64. if target == self.music_slider.gameObject then
  65. lua_settingM:SetSoundValue(value)
  66. local value_img_res = self.music_slider.value == 0 and "setting_value_2" or "setting_value_1"
  67. lua_resM:setImageSprite(self, self.music_btn, "setting_asset",value_img_res)
  68. elseif target == self.soundEffect_slider.gameObject then
  69. lua_settingM:SetEffectSoundValue(value)
  70. local value_img_res = self.soundEffect_slider.value == 0 and "setting_value_2" or "setting_value_1"
  71. lua_resM:setImageSprite(self, self.soundEffect_btn, "setting_asset",value_img_res)
  72. elseif target == self.count_slider.gameObject then
  73. lua_settingM:SetPlayerCounts(value)
  74. end
  75. CookieWrapper.Instance:WriteAll()
  76. end
  77. AddDragEndEvent(self.music_slider.gameObject,onSliderDragEnd)
  78. AddDragEndEvent(self.soundEffect_slider.gameObject,onSliderDragEnd)
  79. AddDragEndEvent(self.count_slider.gameObject,onSliderDragEnd)
  80. local function onSliderClick(target)
  81. local value = target:GetComponent("Slider").value
  82. if target == self.music_slider.gameObject then
  83. self.music_value.text = tostring(value).."%"
  84. lua_settingM:SetSoundValue(value)
  85. lua_soundM:ChangeVolume(self.music_slider.value / 100)
  86. local value_img_res = self.music_slider.value == 0 and "setting_value_2" or "setting_value_1"
  87. lua_resM:setImageSprite(self, self.music_btn, "setting_asset",value_img_res)
  88. elseif target == self.soundEffect_slider.gameObject then
  89. self.soundEffect_value.text = value.."%"
  90. lua_settingM:SetEffectSoundValue(value)
  91. lua_soundM:ChangeVolumeEffect(self.soundEffect_slider.value / 100)
  92. local value_img_res = self.soundEffect_slider.value == 0 and "setting_value_2" or "setting_value_1"
  93. lua_resM:setImageSprite(self, self.soundEffect_btn, "setting_asset",value_img_res)
  94. elseif target == self.count_slider.gameObject then
  95. self.count_value.text = value
  96. lua_settingM:SetPlayerCounts(value)
  97. end
  98. CookieWrapper.Instance:WriteAll()
  99. end
  100. AddClickEvent(self.music_slider.gameObject,onSliderClick)
  101. AddClickEvent(self.soundEffect_slider.gameObject,onSliderClick)
  102. AddClickEvent(self.count_slider.gameObject,onSliderClick)
  103. -- 滑动条拖动时改变音量以及数值
  104. local function onSliderDrag(target)
  105. if target == self.music_slider.gameObject then
  106. self.music_value.text = tostring(self.music_slider.value).."%"
  107. lua_soundM:ChangeVolume(self.music_slider.value / 100)
  108. elseif target == self.soundEffect_slider.gameObject then
  109. self.soundEffect_value.text = self.soundEffect_slider.value.."%"
  110. lua_soundM:ChangeVolumeEffect(self.soundEffect_slider.value / 100)
  111. elseif target == self.count_slider.gameObject then
  112. self.count_value.text = self.count_slider.value
  113. end
  114. end
  115. AddDragEvent(self.music_slider.gameObject,onSliderDrag)
  116. AddDragEvent(self.soundEffect_slider.gameObject,onSliderDrag)
  117. AddDragEvent(self.count_slider.gameObject,onSliderDrag)
  118. local on_click = function ( click_obj )
  119. if self.music_btn.gameObject == click_obj then
  120. -- local data = lua_settingM.soundSet
  121. if self.music_slider.value <= 0 then--还原到默认音量
  122. self.music_slider.value = lua_settingM:GetBasicDefualt("music")
  123. self.music_value.text = lua_settingM:GetBasicDefualt("music").."%"
  124. lua_soundM:ChangeVolume(self.music_slider.value / 100)
  125. lua_resM:setImageSprite(self, self.music_btn, "setting_asset","setting_value_1")
  126. else--切换到静音状态
  127. self.music_slider.value = 0
  128. self.music_value.text = "0%"
  129. lua_soundM:ChangeVolume(self.music_slider.value / 100)
  130. lua_resM:setImageSprite(self, self.music_btn, "setting_asset","setting_value_2")
  131. end
  132. lua_settingM:SetSoundValue(self.music_slider.value)
  133. elseif self.soundEffect_btn.gameObject == click_obj then
  134. -- local data = lua_settingM.soundSet
  135. if self.soundEffect_slider.value <= 0 then--还原到默认音量
  136. self.soundEffect_slider.value = lua_settingM:GetBasicDefualt("soundEffect")
  137. self.soundEffect_value.text = lua_settingM:GetBasicDefualt("soundEffect").."%"
  138. lua_soundM:ChangeVolumeEffect(self.soundEffect_slider.value / 100)
  139. lua_resM:setImageSprite(self, self.soundEffect_btn, "setting_asset","setting_value_1")
  140. else--切换到静音状态
  141. self.soundEffect_slider.value = 0
  142. self.soundEffect_value.text = "0%"
  143. lua_soundM:ChangeVolumeEffect(self.soundEffect_slider.value / 100)
  144. lua_resM:setImageSprite(self, self.soundEffect_btn, "setting_asset","setting_value_2")
  145. end
  146. lua_settingM:SetEffectSoundValue(self.soundEffect_slider.value)
  147. end
  148. end
  149. AddClickEvent(self.music_btn.gameObject, on_click)
  150. AddClickEvent(self.soundEffect_btn.gameObject, on_click)
  151. local function return_default(cur_index)
  152. if not self.is_loaded then return end
  153. if cur_index == GameSettingModel.TabData.SYSYTEM then
  154. self:ReturnDefault()
  155. end
  156. end
  157. self:BindEvent(GameSettingModel:GetInstance(), GameSettingModel.RETURN_ALL_DEFAULT, return_default)
  158. end
  159. function BasicSettingView:SetData()
  160. if self.is_loaded then
  161. self:SetSliderData()
  162. self.need_refreshData = false
  163. else
  164. self.need_refreshData = true
  165. end
  166. end
  167. function BasicSettingView:SetSliderData()
  168. local data = lua_settingM.soundSet
  169. self.music_slider.value = data.sound
  170. self.soundEffect_slider.value = data.effectSound
  171. self.music_value.text = data.sound.."%"
  172. self.soundEffect_value.text = data.effectSound.."%"
  173. local value_img_res_1 = self.music_slider.value == 0 and "setting_value_2" or "setting_value_1"
  174. lua_resM:setImageSprite(self, self.music_btn, "setting_asset",value_img_res_1)
  175. local value_img_res_2 = self.soundEffect_slider.value == 0 and "setting_value_2" or "setting_value_1"
  176. lua_resM:setImageSprite(self, self.soundEffect_btn, "setting_asset",value_img_res_2)
  177. local playerCounts = lua_settingM:GetPlayerCounts()
  178. self.count_slider.value = playerCounts
  179. self.count_value.text = playerCounts
  180. end
  181. function BasicSettingView:SetPerformData()
  182. if self.perform_list == nil then return end
  183. local state
  184. for i,v in ipairs(self.perform_list) do
  185. if self.perform_item_list[i] then
  186. state = lua_settingM:GetPerformanceProperty(v.setting_str)
  187. self.perform_item_list[i]:SelectBtnByVal(state)
  188. end
  189. end
  190. end
  191. function BasicSettingView:__delete()
  192. -- 界面销毁
  193. for i,item in pairs(self.perform_item_list) do
  194. item:DeleteMe()
  195. item = nil
  196. end
  197. self.perform_item_list = {}
  198. -- 重新加载一次音量设置
  199. lua_soundM:LoadSetting()
  200. end
  201. function BasicSettingView:ReturnDefault()
  202. -- 还原表现
  203. self.music_slider.value = lua_settingM:GetBasicDefualt("music")
  204. self.music_value.text = lua_settingM:GetBasicDefualt("music").."%"
  205. lua_soundM:ChangeVolume(self.music_slider.value / 100)
  206. self.soundEffect_slider.value = lua_settingM:GetBasicDefualt("soundEffect")
  207. self.soundEffect_value.text = lua_settingM:GetBasicDefualt("soundEffect").."%"
  208. lua_soundM:ChangeVolumeEffect(self.soundEffect_slider.value / 100)
  209. self.count_slider.value = lua_settingM:GetBasicDefualt("playerCounts")
  210. self.count_value.text = lua_settingM:GetBasicDefualt("playerCounts")
  211. -- 还原配置
  212. lua_settingM:SetSoundValue(lua_settingM:GetBasicDefualt("music"))
  213. lua_settingM:SetEffectSoundValue(lua_settingM:GetBasicDefualt("soundEffect"))
  214. lua_settingM:SetPlayerCounts(lua_settingM:GetBasicDefualt("playerCounts"))
  215. lua_settingM:ApplyPlayerCounts()
  216. -- 还原性能设置
  217. if self.perform_list == nil then return end
  218. local val
  219. for i,v in ipairs(self.perform_list) do
  220. if self.perform_item_list[i] then
  221. val = lua_settingM:GetPerformanceDefualt(v.setting_str)
  222. self.perform_item_list[i]:SelectBtnByVal(val)
  223. lua_settingM:SetPerformanceProperty(v.setting_str,val)
  224. end
  225. end
  226. end