bayuMIR/client/dev/GUILayout/set/SettingProtect.lua
2026-06-23 01:08:46 +08:00

721 lines
28 KiB
Lua

SettingProtect = {}
SettingProtect._ui = nil
local group1 = {
SLDefine.SETTINGID.SETTING_IDX_HP_PROTECT1, -- 生命值低于多少使用
SLDefine.SETTINGID.SETTING_IDX_HP_PROTECT2, -- 生命值低于多少使用
SLDefine.SETTINGID.SETTING_IDX_HP_PROTECT3, -- 生命值低于多少使用
SLDefine.SETTINGID.SETTING_IDX_HP_PROTECT4, -- 生命值低于多少使用
SLDefine.SETTINGID.SETTING_IDX_MP_PROTECT1, -- 魔法值低于多少使用
SLDefine.SETTINGID.SETTING_IDX_MP_PROTECT2, -- 魔法值低于多少使用
SLDefine.SETTINGID.SETTING_IDX_MP_PROTECT3, -- 魔法值低于多少使用
SLDefine.SETTINGID.SETTING_IDX_MP_PROTECT4, -- 魔法值低于多少使用
SLDefine.SETTINGID.SETTING_IDX_PK_PROTECT, -- 红名保护
SLDefine.SETTINGID.SETTING_IDX_HP_LOW_USE_SKILL, -- 生命低于多少使用
SLDefine.SETTINGID.SETTING_IDX_REVIVE_PROTECT, -- 复活保护
SLDefine.SETTINGID.SETTING_IDX_REVIVE_PROTECT_HERO, -- 英雄复活保护
13000, -- 自动竹叶青
13001, -- 自动苹果
}
local heroGroup1 = {
SLDefine.SETTINGID.SETTING_IDX_HERO_HP_PROTECT1, -- 生命值低于多少使用
SLDefine.SETTINGID.SETTING_IDX_HERO_HP_PROTECT2, -- 生命值低于多少使用
SLDefine.SETTINGID.SETTING_IDX_HERO_HP_PROTECT3, -- 生命值低于多少使用
SLDefine.SETTINGID.SETTING_IDX_HERO_HP_PROTECT4, -- 生命值低于多少使用
SLDefine.SETTINGID.SETTING_IDX_HERO_MP_PROTECT1, -- 魔法值低于多少使用
SLDefine.SETTINGID.SETTING_IDX_HERO_MP_PROTECT2, -- 魔法值低于多少使用
SLDefine.SETTINGID.SETTING_IDX_HERO_MP_PROTECT3, -- 魔法值低于多少使用
SLDefine.SETTINGID.SETTING_IDX_HERO_MP_PROTECT4, -- 魔法值低于多少使用
SLDefine.SETTINGID.SETTING_IDX_HERO_AUTO_LOGINOUT, -- 英雄生命值低于多少自动收回
}
local getConfigFunc = function(group)
local configs = {}
local config
for i, id in ipairs(group) do
config = SL:GetValue("SETTING_CONFIG", id)
if config and (config.platform == 0 or config.platform == SL:GetValue("CURRENT_OPERMODE")) then
if not config.order or not tonumber(config.order) then
config.order = 0
end
table.insert(configs, config)
end
end
table.sort(configs, function(a, b)
return a.order < b.order
end)
return configs
end
function SettingProtect.main()
local parent = GUI:Attach_Parent()
GUI:LoadExport(parent, "set/setting_protect")
SettingProtect._ui = GUI:ui_delegate(parent)
SettingProtect._parent = parent
if not SettingProtect._ui then
return false
end
SettingProtect.InitGroup()
end
function SettingProtect.InitGroup()
local tconfigs = SL:CopyData(group1)
--英雄系统是否开启
if SL:GetValue("USEHERO") then
for i, id in ipairs(heroGroup1) do
table.insert(tconfigs, id)
end
end
local groupConfig = getConfigFunc(tconfigs)
local ScrollView_1 = SettingProtect._ui.ScrollView_1
local contentSize = GUI:getContentSize(ScrollView_1)
local cellW = 343
local cellH = 54
local addH = 0
local y = 0
for i, config in ipairs(groupConfig) do
local x = (i - 1) % 2
y = math.ceil(i / 2)
if x == 0 then
if config.id == SLDefine.SETTINGID.SETTING_IDX_HP_LOW_USE_SKILL then
addH = addH + 10
elseif config.id == SLDefine.SETTINGID.SETTING_IDX_REVIVE_PROTECT
or config.id == SLDefine.SETTINGID.SETTING_IDX_REVIVE_PROTECT_HERO
or config.id == 13000
or config.id == 13001 then
addH = addH - 14
end
end
config.height = y * cellH + addH
config.width = cellW * x
end
local innerContainerSize = GUI:Size(contentSize.width, y * cellH + addH)
if innerContainerSize.height <= contentSize.height then
innerContainerSize.height = contentSize.height
end
GUI:ScrollView_setInnerContainerSize(ScrollView_1, innerContainerSize.width, innerContainerSize.height)
for i, v in ipairs(groupConfig) do
local cell = SettingProtect.CreateCell(ScrollView_1, v)
GUI:setPosition(cell, v.width, innerContainerSize.height - v.height)
end
end
function SettingProtect.CreateCell(parent, config)
local cell
if config.id == SLDefine.SETTINGID.SETTING_IDX_PK_PROTECT then
cell = SettingProtect.CreateListClickCell(parent, config)
elseif config.id == SLDefine.SETTINGID.SETTING_IDX_HP_LOW_USE_SKILL then
cell = SettingProtect.CreateSelectInputClickCell(parent, config)
elseif config.id == SLDefine.SETTINGID.SETTING_IDX_HERO_AUTO_LOGINOUT then
cell = SettingProtect.CreateInput2ClickCell(parent, config)
elseif config.id == SLDefine.SETTINGID.SETTING_IDX_REVIVE_PROTECT or config.id == SLDefine.SETTINGID.SETTING_IDX_REVIVE_PROTECT_HERO or config.id == 13000 or config.id == 13001 then
cell = SettingProtect.CreateClickCell(parent, config)
else
cell = SettingProtect.CreateClickProgressSelectCell(parent, config)
end
return cell
end
--点击的开关
function SettingProtect.CreateClickCell(parent, data)
--
local Panel_Click = GUI:Layout_Create(parent, "Panel_Click_" .. data.id, 0, 1, 200, 40, false)
GUI:setTouchEnabled(Panel_Click, true)
-- 描述
local Text_desc = GUI:Text_Create(Panel_Click, "Text_desc", 12, 20, 16, "#ffffff", data.content or "")
GUI:setAnchorPoint(Text_desc, 0, 0.5)
--选择容器
local CheckBox_able = GUI:Layout_Create(Panel_Click, "CheckBox_able", 134, 19, 44, 18, false)
GUI:setAnchorPoint(CheckBox_able, 0, 0.5)
-- 背景
local Image_5 = GUI:Image_Create(CheckBox_able, "Image_5", 22, 9, "res/private/new_setting/clickbg2.png")
GUI:setAnchorPoint(Image_5, 0.5, 0.5)
--关闭状态
local Panel_1 = GUI:Layout_Create(CheckBox_able, "Panel_1", 0, 0, 44, 18, false)
local Image_8 = GUI:Image_Create(Panel_1, "Image_8", 10, 8, "res/private/new_setting/click3.png")
GUI:setAnchorPoint(Image_8, 0.5, 0.5)
--开启状态
local Panel_2 = GUI:Layout_Create(CheckBox_able, "Panel_2", 0, 0, 44, 18, false)
local Image_5 = GUI:Image_Create(Panel_2, "Image_5", 22, 9, "res/private/new_setting/clickbg1.png")
GUI:setAnchorPoint(Image_5, 0.5, 0.5)
local Image_8 = GUI:Image_Create(Panel_2, "Image_8", 33, 8, "res/private/new_setting/click3.png")
GUI:setAnchorPoint(Image_8, 0.5, 0.5)
--触摸提示
if data.tips then
GUI:Text_enableUnderline(Text_desc)
GUI:setTouchEnabled(Text_desc, true)
GUI:addOnClickEvent(Text_desc, function()
local worldPos = GUI:getTouchEndPosition(Text_desc)
SL:SHOW_DESCTIP(data.tips, nil, worldPos, GUI:p(0, 1))
end)
end
--设置是否开启
local isOn = SL:GetValue("SETTING_ENABLED", (data.id))
local enable = isOn == 1
local func = function(enable)
--关闭状态ui
GUI:setVisible(Panel_1, not enable)
--开启状态ui
GUI:setVisible(Panel_2, enable)
end
--刷新开关状态
func(enable)
--开关点击
GUI:addOnClickEvent(Panel_Click, function()
local isOn = SL:GetValue("SETTING_ENABLED", (data.id))
local enable = isOn == 1
SL:SetValue("SETTING_VALUE", data.id, enable and { 0 } or { 1 })
--刷新开关状态
func(not enable)
end)
return Panel_Click
end
function SettingProtect.CreateListClickCell(parent, data)
-- 容器
local Panel_Layout = GUI:Layout_Create(parent, "Panel_" .. data.id, 0, 2, 200, 40, false)
GUI:setTouchEnabled(Panel_Layout, true)
-- 描述
local Text_desc = GUI:Text_Create(Panel_Layout, "Text_desc", 14, 20, 16, "#ffffff", data.content or "")
GUI:setAnchorPoint(Text_desc, 0, 0.5)
GUI:setTouchEnabled(Text_desc, false)
-- 点击背景
local Image_ClickBg = GUI:Image_Create(Panel_Layout, "Image_ClickBg", 128, 18, "res/private/new_setting/textBg.png")
GUI:Image_setScale9Slice(Image_ClickBg, 33, 33, 9, 9)
GUI:setContentSize(Image_ClickBg, 77, 28)
GUI:setIgnoreContentAdaptWithSize(Image_ClickBg, false)
GUI:setAnchorPoint(Image_ClickBg, 0.5, 0.5)
GUI:setTouchEnabled(Image_ClickBg, true)
-- 列表配置
local Text_desc_2 = GUI:Text_Create(Image_ClickBg, "Text_desc_2", 39, 16, 18, "#109c18", "列表配置")
GUI:setAnchorPoint(Text_desc_2, 0.5, 0.5)
GUI:setTouchEnabled(Text_desc_2, false)
-- 开关容器
local CheckBox_able = GUI:Layout_Create(Panel_Layout, "CheckBox_able", 174, 19, 44, 18, false)
GUI:setAnchorPoint(CheckBox_able, 0, 0.5)
GUI:setTouchEnabled(CheckBox_able, true)
-- 开关背景
local Image_bg = GUI:Image_Create(CheckBox_able, "Image_bg", 22, 9, "res/private/new_setting/clickbg2.png")
GUI:setAnchorPoint(Image_bg, 0.5, 0.5)
GUI:setTouchEnabled(Image_bg, false)
-- 关闭状态
local Panel_1 = GUI:Layout_Create(CheckBox_able, "Panel_1", 0, 0, 44, 18, false)
GUI:setTouchEnabled(Panel_1, false)
local Image_8 = GUI:Image_Create(Panel_1, "Image_8", 10.28, 8.78, "res/private/new_setting/click3.png")
GUI:setAnchorPoint(Image_8, 0.5, 0.5)
GUI:setTouchEnabled(Image_8, false)
-- 开启状态
local Panel_2 = GUI:Layout_Create(CheckBox_able, "Panel_2", 0, 0, 44, 18, false)
GUI:setTouchEnabled(Panel_2, false)
local Image_5 = GUI:Image_Create(Panel_2, "Image_5", 22, 9, "res/private/new_setting/clickbg1.png")
GUI:setAnchorPoint(Image_5, 0.5, 0.5)
GUI:setTouchEnabled(Image_5, false)
local Image_8 = GUI:Image_Create(Panel_2, "Image_8", 33, 9, "res/private/new_setting/click3.png")
GUI:setAnchorPoint(Image_8, 0.5, 0.5)
GUI:setTouchEnabled(Image_8, false)
local values = SL:GetValue("SETTING_VALUE", data.id)
local enable = values[1] == 1
local func = function(enable)
--关闭状态ui
GUI:setVisible(Panel_1, not enable)
--开启状态ui
GUI:setVisible(Panel_2, enable)
end
--刷新开关状态
func(enable)
GUI:addOnClickEvent(CheckBox_able, function()
local values = SL:GetValue("SETTING_VALUE", data.id)
local enable = values[1] == 1
SL:SetValue("SETTING_VALUE", data.id, { enable and 0 or 1 })
--刷新开关状态
func(not enable)
end)
GUI:addOnClickEvent(Image_ClickBg, function()
--打开保护设置
UIOperator:OpenProtectSettingUI(data)
end)
return Panel_Layout
end
function SettingProtect.CreateSelectInputClickCell(parent, data)
-- 容器
local Panel_Layout = GUI:Layout_Create(parent, "Panel_" .. data.id, -0, 0, 323, 64, false)
GUI:setTouchEnabled(Panel_Layout, true)
-- 描述
local Text_desc = GUI:Text_Create(Panel_Layout, "Text_desc", 6, 32, 16, "#ffffff", [[生命值低于]])
GUI:setAnchorPoint(Text_desc, 0, 0.5)
GUI:setTouchEnabled(Text_desc, false)
GUI:Text_enableOutline(Text_desc, "#000000", 1)
local Text_desc_0 = GUI:Text_Create(Panel_Layout, "Text_desc_0", 131, 32, 16, "#ffffff", [[%时使用]])
GUI:setAnchorPoint(Text_desc_0, 0, 0.5)
GUI:setTouchEnabled(Text_desc_0, false)
GUI:Text_enableOutline(Text_desc_0, "#000000", 1)
-- 技能框
local Image_skill = GUI:Image_Create(Panel_Layout, "Image_skill", 231, 31, "res/public/1900000651.png")
GUI:setAnchorPoint(Image_skill, 0.5, 0.5)
GUI:setTouchEnabled(Image_skill, false)
-- 无
local Text_empty = GUI:Text_Create(Panel_Layout, "Text_empty", 231, 34, 16, "#ffffff", [[无]])
GUI:setAnchorPoint(Text_empty, 0.5, 0.5)
GUI:setTouchEnabled(Text_empty, false)
GUI:Text_enableOutline(Text_empty, "#000000", 1)
-- 输入框背景
local Image_2 = GUI:Image_Create(Panel_Layout, "Image_2", 109, 31, "res/private/new_setting/textBg.png")
GUI:Image_setScale9Slice(Image_2, 33, 33, 9, 9)
GUI:setContentSize(Image_2, 30, 28)
GUI:setIgnoreContentAdaptWithSize(Image_2, false)
GUI:setAnchorPoint(Image_2, 0.5, 0.5)
GUI:setTouchEnabled(Image_2, false)
-- 开关容器
local CheckBox_able = GUI:Layout_Create(Panel_Layout, "CheckBox_able", 270, 32, 44, 18, false)
GUI:setAnchorPoint(CheckBox_able, 0, 0.5)
GUI:setTouchEnabled(CheckBox_able, true)
-- 开关背景
local Image_5 = GUI:Image_Create(CheckBox_able, "Image_5", 22, 9, "res/private/new_setting/clickbg2.png")
GUI:setAnchorPoint(Image_5, 0.5, 0.5)
GUI:setTouchEnabled(Image_5, false)
-- 关闭状态
local Panel_1 = GUI:Layout_Create(CheckBox_able, "Panel_1", 0, 0, 44, 18, false)
GUI:setTouchEnabled(Panel_1, false)
local Image_8 = GUI:Image_Create(Panel_1, "Image_8", 10, 8, "res/private/new_setting/click3.png")
GUI:setAnchorPoint(Image_8, 0.5, 0.5)
GUI:setTouchEnabled(Image_8, false)
-- 开启状态
local Panel_2 = GUI:Layout_Create(CheckBox_able, "Panel_2", 0, 0, 44, 18, false)
GUI:setTouchEnabled(Panel_2, false)
local Image_5 = GUI:Image_Create(Panel_2, "Image_5", 22, 9, "res/private/new_setting/clickbg1.png")
GUI:setAnchorPoint(Image_5, 0.5, 0.5)
GUI:setTouchEnabled(Image_5, false)
local Image_8 = GUI:Image_Create(Panel_2, "Image_8", 33, 8, "res/private/new_setting/click3.png")
GUI:setAnchorPoint(Image_8, 0.5, 0.5)
GUI:setTouchEnabled(Image_8, false)
local values = SL:GetValue("SETTING_VALUE", data.id)
local enable = values[1] == 1
local percent = values[2] or 20
local skillID = values[3]
local func = function(enable)
--关闭状态ui
GUI:setVisible(Panel_1, not enable)
--开启状态ui
GUI:setVisible(Panel_2, enable)
end
--刷新开关状态
func(enable)
GUI:addOnClickEvent(CheckBox_able, function()
local values = SL:GetValue("SETTING_VALUE", data.id)
local enable = values[1] == 1
SL:SetValue("SETTING_VALUE", data.id, { enable and 0 or 1 })
--刷新开关状态
func(not enable)
end)
if skillID and skillID ~= -1 then
local contentSize = GUI:getContentSize(Image_skill)
local skillItem = SettingProtect.CreateSkillIcon(Image_skill, skillID)
GUI:setPosition(skillItem, contentSize.width / 2, contentSize.height / 2)
GUI:setTouchEnabled(skillItem, false)
GUI:setScale(skillItem, 0.9)
GUI:setVisible(Text_empty, false)
end
--
GUI:setTouchEnabled(Image_skill, true)
GUI:addOnClickEvent(Image_skill, function()
SettingProtect.ShowSelectSkill(data)
end)
local TextField_input = GUI:TextInput_Create(Image_2, "TextField_input", 0, 0, 30, 26, 14)
GUI:TextInput_setTextHorizontalAlignment(TextField_input, 1)
GUI:TextInput_setMaxLength(TextField_input, 2)
GUI:TextInput_setInputMode(TextField_input, 2)
GUI:TextInput_setString(TextField_input, percent)
GUI:TextInput_addOnEvent(TextField_input, function(_, eventType)
if eventType == 1 then
local input = math.min(math.max(tonumber(GUI:TextInput_getString(TextField_input)) or 1, 1), 99)
SL:SetValue("SETTING_VALUE", data.id, {nil, input })
end
end)
return Panel_Layout
end
function SettingProtect.CreateSkillIcon(parent, skillID)
local icon = GUI:Image_Create(parent, "Image_icon", 30, 30, "Default/ImageFile.png")
GUI:setContentSize(icon, 60, 60)
GUI:setIgnoreContentAdaptWithSize(icon, false)
GUI:setAnchorPoint(icon, 0.50, 0.50)
GUI:setTouchEnabled(icon, false)
local iconPath = SL:GetValue("SKILL_RECT_ICON_PATH", skillID)
if iconPath then
GUI:Image_loadTexture(icon, iconPath)
end
return icon
end
--显示选择技能
function SettingProtect.ShowSelectSkill(data)
local items = {}
if data.id == SLDefine.SETTINGID.SETTING_IDX_HP_LOW_USE_SKILL then
-- 道士 治疗技能
items = SL:GetValue("SKILL_INFO_FILTER", 3, 3, true)
end
items = SL:HashToSortArray(items, function(a, b)
return a.MagicID < b.MagicID
end)
if not next(items) then
SL:ShowSystemTips("未发现可用技能")
return nil
end
-- 背景底框
local Panel_1 = GUI:Layout_Create(SettingProtect._parent, "Panel_SelectSkill", 0, 0, 732, 445, false)
GUI:Layout_setBackGroundColorType(Panel_1, 1)
GUI:Layout_setBackGroundColor(Panel_1, "#000000")
GUI:Layout_setBackGroundColorOpacity(Panel_1, 127)
GUI:setTouchEnabled(Panel_1, true)
-- 底框
local Panel_2 = GUI:Layout_Create(Panel_1, "Panel_2", 366, 222.5, 360, 280, false)
GUI:setAnchorPoint(Panel_2, 0.5, 0.5)
GUI:setTouchEnabled(Panel_2, true)
-- 背景图
local Image_1 = GUI:Image_Create(Panel_2, "Image_1", 180, 140, "res/public/1900000677.png")
GUI:Image_setScale9Slice(Image_1, 21, 21, 34, 32)
GUI:setContentSize(Image_1, 360, 280)
GUI:setIgnoreContentAdaptWithSize(Image_1, false)
GUI:setAnchorPoint(Image_1, 0.5, 0.5)
GUI:setTouchEnabled(Image_1, false)
-- ListView
local ListView = GUI:ListView_Create(Panel_2, "ListView", 180, 140, 355, 275, 1)
GUI:ListView_setGravity(ListView, 0)
GUI:setAnchorPoint(ListView, 0.5, 0.5)
GUI:setTouchEnabled(ListView, true)
GUI:addOnClickEvent(Panel_1, function()
GUI:removeFromParent(Panel_1)
end)
for i, v in ipairs(items) do
local item = {}
item.skill = v
item.setting = data
item.callback = function()
GUI:removeFromParent(Panel_1)
end
local cell = SettingProtect.CreateSelectSkillCell(ListView, item)
GUI:ListView_doLayout(ListView)
end
end
--创建 技能描述item
function SettingProtect.CreateSelectSkillCell(parent, data)
-- 容器
local Panel_item = GUI:Layout_Create(parent, "Panel_" .. data.skill.MagicID, 0, 0, 355, 80, false)
GUI:setTouchEnabled(Panel_item, true)
-- 技能框
local Image_skill = GUI:Image_Create(Panel_item, "Image_skill", 40, 40, "res/public/1900000651.png")
GUI:setAnchorPoint(Image_skill, 0.5, 0.5)
GUI:setTouchEnabled(Image_skill, false)
-- 描述
local Node_desc = GUI:Node_Create(Panel_item, "Node_desc", 80, 40)
GUI:setAnchorPoint(Node_desc, 0.5, 0.5)
-- 线条
local Image_2 = GUI:Image_Create(Panel_item, "Image_2", 177.5, 0, "res/public/1900000667.png")
GUI:setContentSize(Image_2, 355, 2)
GUI:setIgnoreContentAdaptWithSize(Image_2, false)
GUI:setAnchorPoint(Image_2, 0.5, 0)
GUI:setTouchEnabled(Image_2, false)
if data.skill.MagicID == -1 then
local size = GUI:getContentSize(Panel_item)
local RichText_empty = GUI:RichText_Create(Panel_item, "RichText_empty", size.width / 2, size.height / 2, "")
GUI:setAnchorPoint(RichText_empty, 0.5, 0.5)
GUI:setVisible(Image_skill, false)
else
local contentSize = GUI:getContentSize(Image_skill)
local skillItem = SettingProtect.CreateSkillIcon(Image_skill, data.skill.MagicID)
GUI:setPosition(skillItem, contentSize.width / 2, contentSize.height / 2)
GUI:setTouchEnabled(skillItem, false)
GUI:setScale(skillItem, 0.9)
GUI:removeAllChildren(Node_desc)
local RichText_desc = GUI:RichTextFCOLOR_Create(Node_desc, "RichText_desc", 0, 0, data.skill.desc, 2013)
GUI:setAnchorPoint(RichText_desc, 0, 0.5)
end
GUI:addOnClickEvent(Panel_item, function()
local tgroupID
if data.setting.id == SLDefine.SETTINGID.SETTING_IDX_HP_LOW_USE_SKILL then
tgroupID = data.skill.skillgroup
SL:SetValue("SETTING_VALUE", data.setting.id, {nil, nil, tgroupID })
end
local panel = SettingProtect._ui["Panel_" .. data.setting.id]
local Image_skill = GUI:getChildByName(panel, "Image_skill")
GUI:removeAllChildren(Image_skill)
local Text_empty = GUI:getChildByName(panel, "Text_empty")
if tgroupID then
local contentSize = GUI:getContentSize(Image_skill)
local skillItem = SettingProtect.CreateSkillIcon(Image_skill, tgroupID)
GUI:setPosition(skillItem, contentSize.width / 2, contentSize.height / 2)
GUI:setTouchEnabled(skillItem, false)
GUI:setScale(skillItem, 0.9)
GUI:setVisible(Text_empty, false)
else
GUI:setVisible(Text_empty, true)
end
data.callback()
end)
return Panel_item
end
function SettingProtect.CreateInput2ClickCell(parent, data)
-- 容器
local Panel_Layout = GUI:Layout_Create(parent, "Panel_" .. data.id, 0, 2, 346, 54, false)
GUI:setTouchEnabled(Panel_Layout, true)
-- 描述
local Text_desc = GUI:Text_Create(Panel_Layout, "Text_desc", 14, 27, 16, "#ffffff", "英雄生命低于")
GUI:setAnchorPoint(Text_desc, 0, 0.5)
GUI:setTouchEnabled(Text_desc, false)
GUI:Text_enableOutline(Text_desc, "#000000", 1)
local Text_desc_0 = GUI:Text_Create(Panel_Layout, "Text_desc_0", 160, 27, 16, "#ffffff", "%时自动收回")
GUI:setAnchorPoint(Text_desc_0, 0, 0.5)
GUI:setTouchEnabled(Text_desc_0, false)
GUI:setTag(Text_desc_0, 332)
GUI:Text_enableOutline(Text_desc_0, "#000000", 1)
-- 输入框背景
local Image_2 = GUI:Image_Create(Panel_Layout, "Image_2", 135, 26, "res/private/new_setting/textBg.png")
GUI:Image_setScale9Slice(Image_2, 9, 9, 9, 9)
GUI:setContentSize(Image_2, 28, 28)
GUI:setIgnoreContentAdaptWithSize(Image_2, false)
GUI:setAnchorPoint(Image_2, 0.5, 0.5)
GUI:setTouchEnabled(Image_2, false)
-- 开关容器
local CheckBox_able = GUI:Layout_Create(Panel_Layout, "CheckBox_able", 260, 26, 44, 18, false)
GUI:setAnchorPoint(CheckBox_able, 0, 0.5)
GUI:setTouchEnabled(CheckBox_able, true)
GUI:setTag(CheckBox_able, 42)
-- 开关背景
local Image_5 = GUI:Image_Create(CheckBox_able, "Image_5", 22, 9, "res/private/new_setting/clickbg2.png")
GUI:setAnchorPoint(Image_5, 0.5, 0.5)
GUI:setTouchEnabled(Image_5, false)
-- 关闭状态
local Panel_1 = GUI:Layout_Create(CheckBox_able, "Panel_1", 0, 0, 44, 18, false)
GUI:setTouchEnabled(Panel_1, false)
local Image_8 = GUI:Image_Create(Panel_1, "Image_8", 10.28, 8.78, "res/private/new_setting/click3.png")
GUI:setAnchorPoint(Image_8, 0.5, 0.5)
GUI:setTouchEnabled(Image_8, false)
-- 开启状态
local Panel_2 = GUI:Layout_Create(CheckBox_able, "Panel_2", 0, 0, 44, 18, false)
GUI:setTouchEnabled(Panel_2, false)
local Image_5 = GUI:Image_Create(Panel_2, "Image_5", 22, 9, "res/private/new_setting/clickbg1.png")
GUI:setAnchorPoint(Image_5, 0.5, 0.5)
GUI:setTouchEnabled(Image_5, false)
local Image_8 = GUI:Image_Create(Panel_2, "Image_8", 33.28, 8.78, "res/private/new_setting/click3.png")
GUI:setAnchorPoint(Image_8, 0.5, 0.5)
GUI:setTouchEnabled(Image_8, false)
local values = SL:GetValue("SETTING_VALUE", data.id)
local enable = values[1] == 1
local count = values[2] or 0
--输入框
local TextField_input = GUI:TextInput_Create(Image_2, "TextField_input", 12, 15, 24, 24, 14)
GUI:setAnchorPoint(TextField_input, 0.5, 0.5)
GUI:TextInput_setTextHorizontalAlignment(TextField_input, 1)
GUI:TextInput_setMaxLength(TextField_input, 3)
GUI:TextInput_setInputMode(TextField_input, 2)
GUI:TextInput_setString(TextField_input, count)
GUI:TextInput_addOnEvent(TextField_input, function(_, eventType)
if eventType == 1 then
local count = GUI:TextInput_getString(TextField_input)
if count ~= "" then
count = tonumber(count) or 0
count = math.max(math.min(100, count), 0)
GUI:TextInput_setString(TextField_input, count)
SL:SetValue("SETTING_VALUE", data.id, {nil, count })
end
end
end)
local func = function(enable)
--关闭状态ui
GUI:setVisible(Panel_1, not enable)
--开启状态ui
GUI:setVisible(Panel_2, enable)
end
--刷新开关状态
func(enable)
GUI:addOnClickEvent(CheckBox_able, function()
local values = SL:GetValue("SETTING_VALUE", data.id)
local enable = values[1] == 1
SL:SetValue("SETTING_VALUE", data.id, { enable and 0 or 1 })
--刷新开关状态
func(not enable)
end)
return Panel_Layout
end
function SettingProtect.CreateClickProgressSelectCell(parent, data)
local values = SL:GetValue("SETTING_VALUE", data.id)
local enable = values[1] == 1
local percent = values[2] or 50
local t = values[3]
-- 容器
local Panel_Layout = GUI:Layout_Create(parent, "Panel_" .. data.id, 0, 0, 343, 54, false)
GUI:setTouchEnabled(Panel_Layout, false)
Panel_Layout.config = data
-- 开关容器
local CheckBox_able = GUI:Layout_Create(Panel_Layout, "CheckBox_able", 8, 20, 28, 28, false)
GUI:setAnchorPoint(CheckBox_able, 0, 0.5)
GUI:setTouchEnabled(CheckBox_able, true)
-- 开关背景
local Image_5 = GUI:Image_Create(CheckBox_able, "Image_5", 14, 14, "res/private/new_setting/clickbg2.png")
GUI:Image_setScale9Slice(Image_5, 9, 9, 5, 5)
GUI:setContentSize(Image_5, 18, 18)
GUI:setIgnoreContentAdaptWithSize(Image_5, false)
GUI:setAnchorPoint(Image_5, 0.5, 0.5)
GUI:setTouchEnabled(Image_5, false)
-- 开关
local Image_sel = GUI:Image_Create(CheckBox_able, "Image_sel", 14, 14, "res/private/new_setting/click3.png")
GUI:setAnchorPoint(Image_sel, 0.5, 0.5)
GUI:setTouchEnabled(Image_sel, false)
-- 描述
local Text_desc = GUI:Text_Create(Panel_Layout, "Text_desc", 152, 41, 16, "#ffffff", string.format(data.content, percent) or "")
GUI:setAnchorPoint(Text_desc, 0.5, 0.5)
GUI:setTouchEnabled(Text_desc, false)
GUI:Text_enableOutline(Text_desc, "#000000", 1)
-- 滑动条
local Slider_progress = GUI:Slider_Create(Panel_Layout, "Slider_progress", 154, 20, "res/private/new_setting/bg_progress.png", "res/private/new_setting/bg_progress2.png", "res/private/new_setting/icon_xdtzy_17.png")
GUI:setContentSize(Slider_progress, 228, 14)
GUI:setIgnoreContentAdaptWithSize(Slider_progress, false)
GUI:Slider_setPercent(Slider_progress, 50)
GUI:setAnchorPoint(Slider_progress, 0.5, 0.5)
GUI:setTouchEnabled(Slider_progress, true)
-- 配置背景
local Image_2 = GUI:Image_Create(Panel_Layout, "Image_2", 307, 20, "res/private/new_setting/textBg.png")
GUI:Image_setScale9Slice(Image_2, 33, 33, 9, 9)
GUI:setContentSize(Image_2, 59, 28)
GUI:setIgnoreContentAdaptWithSize(Image_2, false)
GUI:setAnchorPoint(Image_2, 0.5, 0.5)
GUI:setTouchEnabled(Image_2, true)
-- 配置
local Text_desc_0 = GUI:Text_Create(Image_2, "Text_desc_0", 28, 14, 18, "#109c18", [[配置]])
GUI:setAnchorPoint(Text_desc_0, 0.5, 0.5)
GUI:setTouchEnabled(Text_desc_0, false)
GUI:Text_enableOutline(Text_desc_0, "#111111", 1)
GUI:setVisible(Image_sel, enable)
GUI:Slider_setPercent(Slider_progress, percent)
local progressBarPath = ""
local progressSlidBallPath = ""
--红条
if data.id == SLDefine.SETTINGID.SETTING_IDX_HP_PROTECT1
or data.id == SLDefine.SETTINGID.SETTING_IDX_HP_PROTECT2
or data.id == SLDefine.SETTINGID.SETTING_IDX_HP_PROTECT3
or data.id == SLDefine.SETTINGID.SETTING_IDX_HP_PROTECT4
or data.id == SLDefine.SETTINGID.SETTING_IDX_HERO_HP_PROTECT1
or data.id == SLDefine.SETTINGID.SETTING_IDX_HERO_HP_PROTECT2
or data.id == SLDefine.SETTINGID.SETTING_IDX_HERO_HP_PROTECT3
or data.id == SLDefine.SETTINGID.SETTING_IDX_HERO_HP_PROTECT4 then
progressBarPath = GUIDefine.PATH_RES_PRIVATE .. "new_setting/bg_progress3.png"
progressSlidBallPath = GUIDefine.PATH_RES_PRIVATE .. "new_setting/hpbar.png"
else --蓝条
progressBarPath = GUIDefine.PATH_RES_PRIVATE .. "new_setting/bg_progress4.png"
progressSlidBallPath = GUIDefine.PATH_RES_PRIVATE .. "new_setting/mpbar.png"
end
GUI:Slider_loadProgressBarTexture(Slider_progress, progressBarPath)
GUI:Slider_loadSlidBallTextureNormal(Slider_progress, progressSlidBallPath)
GUI:Slider_addOnEvent(Slider_progress, function(_, eventType)
if eventType == 0 then
local newValue = GUI:Slider_getPercent(Slider_progress)
local values = SL:GetValue("SETTING_VALUE", data.id)
local percent = values[2] or 50
if math.abs(newValue - percent) >= 1 then
SL:SetValue("SETTING_VALUE", data.id, {nil, newValue })
GUI:Text_setString(Text_desc,string.format(data.content, newValue))
end
end
end)
GUI:addOnClickEvent(CheckBox_able, function()
local values = SL:GetValue("SETTING_VALUE", data.id)
local enable = values[1] == 1
SL:SetValue("SETTING_VALUE", data.id, { enable and 0 or 1 })
--刷新ui
GUI:setVisible(Image_sel, not enable)
end)
GUI:addOnClickEvent(Image_2, function()
UIOperator:OpenProtectSettingUI(data)
end)
return Panel_Layout
end