--设置窗口对象 --author:-- local TableBG = import 'Game.Data.TableBG' local SettingView = {} local M = SettingView setmetatable(M, {__index = BaseWindow}) function SettingView.new(blur_view) local self = setmetatable({}, {__index = M}) self.class = 'SettingView' self._currenIndex = 0 self._blur_view = blur_view self.onCallback = event('onCallback', true) self.stateIndex = 0 self.cd_time = 0 self._btn_dismiss_room_enable = true self._close_destroy = true self._default_bg = 0 self:init('ui://Common/SettingWindow1') return self end function M:init(url) BaseWindow.init(self, url) local view = self._view local slider_sound = view:GetChild('slider_sound') local slider_music = view:GetChild('slider_music') -- local btn_music = view:GetChild('btn_music') -- local btn_sound = view:GetChild('btn_sound') -- btn_music.selected = (GameApplication.Instance.MusicValue < 5 and false or true) slider_sound.value = GameApplication.Instance.SoundValue slider_music.value = GameApplication.Instance.MusicValue -- btn_sound.selected = GameApplication.Instance.SoundValue < 5 and false or true slider_music.onChanged:Add( function() GameApplication.Instance.MusicValue = slider_music.value -- btn_music.selected = GameApplication.Instance.MusicValue < 5 and false or true end ) slider_sound.onChanged:Add( function() GameApplication.Instance.SoundValue = slider_sound.value -- btn_sound.selected = GameApplication.Instance.SoundValue < 5 and false or true end ) -- btn_sound.onChanged:Add( -- function() -- GameApplication.Instance.SoundValue = btn_sound.selected and 50 or 0 -- slider_sound.value = GameApplication.Instance.SoundValue -- end -- ) -- btn_music.onChanged:Add( -- function() -- GameApplication.Instance.MusicValue = btn_music.selected and 50 or 0 -- slider_music.value = GameApplication.Instance.MusicValue -- end -- ) self._stateController = view:GetController('state') self.cd_time_text = view:GetChild('n35') local _btn_quit = view:GetChild('btn_quit') if _btn_quit then _btn_quit.onClick:Set( function() local _curren_msg = MsgWindow.new(self._root_view, '您是否退出游戏?', MsgWindow.MsgMode.OkAndCancel) _curren_msg.onOk:Add( function() Application.Quit() end ) _curren_msg:Show() end ) end local _btn_logout = view:GetChild('btn_logout') if _btn_logout then _btn_logout.onClick:Add( function() local _curren_msg = MsgWindow.new(self._root_view, '您是否退出当前账号?', MsgWindow.MsgMode.OkAndCancel) _curren_msg.onOk:Add( function() PlayerPrefs.DeleteKey('session_id') PlayerPrefs.Save() RestartGame() end ) _curren_msg:Show() end ) end local _btn_dismiss_room = view:GetChild('btn_dismiss_room') self._btn_dismiss_room = _btn_dismiss_room if _btn_dismiss_room then _btn_dismiss_room.onClick:Add( function() local _gamectr = ControllerManager.GetController(GameController) _gamectr:AskDismissRoom() self:Destroy() end ) end -- local btn_close = self._view:GetChild("btn_close") -- if btn_close then -- btn_close.onClick:Add(function( ... ) -- end) -- end end --赋值bg_config function M:GetBGConfig() return TableBG.GetBGConfig() end --获得背景 function M:GetBgByGameId(game_id) return TableBG.GetTableBG(game_id) end --显示背景选项,并加载背景 function M:FillBgSection(cb, game_id, default_bg, bg_config) local view = self._view local lst_bg = view:GetChild('lst_bg') local ctr_bg = view:GetController('bg') bg_config = bg_config or self:GetBGConfig() for i = 1, #bg_config do local config = bg_config[i] local item = lst_bg:AddItemFromPool() item.icon = config.thumb --printlog("显示背景选项,并加载背景",item.icon) item.data = config if i > 6 then ctr_bg:AddPage(i - 1) end item.onClick:Add( function(index) cb(config.url,i) end ) end self._game_id = game_id self._default_bg = default_bg self._bg = self:GetBgByGameId(game_id) if self._bg > 0 then lst_bg.selectedIndex = self._bg - 1 else lst_bg.selectedIndex = default_bg - 1 end end function M:Show() self._stateController.selectedIndex = self.stateIndex BaseWindow.Show(self) if self.cd_coroutine ~= nil then coroutine.stop(self.cd_coroutine) end if self._stateController.selectedIndex == 2 and self.cd_time_text ~= nil then self.cd_coroutine = coroutine.start( function() while (self.cd_time > 0) do self:SetCanDissroom(false) self.cd_time = self.cd_time - 1 self.cd_time = math.max(0, self.cd_time) self.cd_time_text.text = tostring(math.ceil(self.cd_time)) if self.cd_time > 0 then coroutine.wait(1) end end self:SetCanDissroom(self._btn_dismiss_room_enable) self.cd_time_text.text = '' end ) end end --[[ function M:Destroy() local bg_id = self._view:GetController('bg').selectedIndex + 1 if self._bg ~= bg_id then self._bg = bg_id TableBG.SaveTableBG(self._game_id, self._bg) end BaseWindow.Destroy(self) end ]] function M:SetCanDissroom(enable) self._btn_dismiss_room.enabled = enable end function M:SetBtnDismissRoomEnable(enable) self._btn_dismiss_room_enable = enable self:SetCanDissroom(enable) end return M