116 lines
3.0 KiB
Lua
116 lines
3.0 KiB
Lua
local UIWidgetBase = require_ex('Common/Core/UIWidgetBase')
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
CommonToggleGroup = HL.Class('CommonToggleGroup', UIWidgetBase)
|
|
|
|
|
|
CommonToggleGroup.m_toggleCache = HL.Field(HL.Forward("UIListCache"))
|
|
|
|
|
|
CommonToggleGroup.m_tweenSelectBg = HL.Field(HL.Userdata)
|
|
|
|
|
|
CommonToggleGroup.m_toggleIsOnAction = HL.Field(HL.Function)
|
|
|
|
|
|
CommonToggleGroup.m_selectBgSiblingIndex = HL.Field(HL.Number) << -1
|
|
|
|
|
|
|
|
|
|
CommonToggleGroup._OnFirstTimeInit = HL.Override() << function(self)
|
|
self.m_toggleCache = UIUtils.genCellCache(self.view.toggle)
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
CommonToggleGroup.InitCommonToggleGroup = HL.Method(HL.Table) << function(self, arg)
|
|
self:_FirstTimeInit()
|
|
|
|
self.m_toggleIsOnAction = arg.onToggleIsOn
|
|
self.m_selectBgSiblingIndex = -1
|
|
local defaultIndex = arg.defaultIndex or 1
|
|
self.m_toggleCache:Refresh(#arg.toggleDataList, function(toggleCell, index)
|
|
toggleCell.toggle.onValueChanged:RemoveAllListeners()
|
|
local toggleData = arg.toggleDataList[index]
|
|
local isDefault = index == defaultIndex
|
|
toggleCell.toggle.isOn = isDefault
|
|
toggleCell.txtName.text = toggleData.name
|
|
toggleCell.toggle.onValueChanged:AddListener(function(isOn)
|
|
if isOn then
|
|
self:_OnToggleIsOn(index, toggleCell, true)
|
|
end
|
|
end)
|
|
if isDefault then
|
|
if arg.defaultNotCall ~= true then
|
|
self:_OnToggleIsOn(index, toggleCell, false)
|
|
end
|
|
self.m_selectBgSiblingIndex = self.view.selectedBG.transform:GetSiblingIndex()
|
|
self.view.selectedBG.transform:SetParent(toggleCell.transform, false)
|
|
self.view.selectedBG.transform:SetSiblingIndex(0)
|
|
self.view.selectedBG.transform.localPosition = Vector3.zero
|
|
end
|
|
end)
|
|
LayoutRebuilder.ForceRebuildLayoutImmediate(self.view.transform)
|
|
end
|
|
|
|
|
|
|
|
CommonToggleGroup._OnDestroy = HL.Override() << function (self)
|
|
if self.m_tweenSelectBg then
|
|
self.m_tweenSelectBg:Kill()
|
|
self.m_tweenSelectBg = nil
|
|
end
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
|
|
CommonToggleGroup._OnToggleIsOn = HL.Method(HL.Number, HL.Table, HL.Boolean) << function(self, index, toggleCell, playAnim)
|
|
if self.m_selectBgSiblingIndex > 0 then
|
|
self.view.selectedBG.transform:SetParent(self.view.transform, false)
|
|
self.view.selectedBG.transform:SetSiblingIndex(self.m_selectBgSiblingIndex)
|
|
self.m_selectBgSiblingIndex = -1
|
|
end
|
|
if self.m_tweenSelectBg then
|
|
self.m_tweenSelectBg:Kill()
|
|
end
|
|
if playAnim then
|
|
self.m_tweenSelectBg = DOTween.To(function()
|
|
return self.view.selectedBG.transform.position
|
|
end, function(value)
|
|
self.view.selectedBG.transform.position = value
|
|
end, toggleCell.transform.position, self.config.TWEEN_BG_DURATION)
|
|
else
|
|
self.view.selectedBG.transform.position = toggleCell.transform.position
|
|
end
|
|
|
|
if self.m_toggleIsOnAction then
|
|
self.m_toggleIsOnAction(index)
|
|
end
|
|
end
|
|
|
|
HL.Commit(CommonToggleGroup)
|
|
return CommonToggleGroup
|
|
|