jx_client_neibu/lua_probject/base_project/Game/View/SettingView.lua

208 lines
6.2 KiB
Lua
Raw Normal View History

2025-04-01 10:48:36 +08:00
--设置窗口对象
--author--
local TableBG = import 'Game.Data.TableBG'
local SettingView = {}
local M = SettingView
setmetatable(M, {__index = BaseWindow})
2025-04-01 10:48:36 +08:00
function SettingView.new(blur_view)
local self = setmetatable({}, {__index = M})
2025-04-01 10:48:36 +08:00
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)
2025-04-01 10:48:36 +08:00
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)
2025-04-01 10:48:36 +08:00
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
2025-07-25 22:17:17 +08:00
--[[
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
2025-07-25 22:17:17 +08:00
]]
function M:SetCanDissroom(enable)
self._btn_dismiss_room.enabled = enable
end
function M:SetBtnDismissRoomEnable(enable)
self._btn_dismiss_room_enable = enable
self:SetCanDissroom(enable)
2025-04-01 10:48:36 +08:00
end
return M