186 lines
7.1 KiB
Lua
186 lines
7.1 KiB
Lua
|
local XUiGridFubenSideTab = XClass(nil, "XUiGridFubenSideTab")
|
|||
|
|
|||
|
local BtnState =
|
|||
|
{
|
|||
|
Disable = "Disable",
|
|||
|
Normal = "Normal"
|
|||
|
}
|
|||
|
|
|||
|
function XUiGridFubenSideTab:Ctor(ui)
|
|||
|
XUiHelper.InitUiClass(self, ui)
|
|||
|
self.IsDestroy = nil
|
|||
|
self.GridIndex = nil
|
|||
|
self.CenterPosition = self.BtnTab.transform.localPosition
|
|||
|
local downPositionY = self.CenterPosition.y - self.Transform.sizeDelta.y / 4 - self.BtnTab.transform.sizeDelta.y / 2
|
|||
|
self.DownPosition = CS.UnityEngine.Vector3(self.CenterPosition.x, downPositionY, self.CenterPosition.z)
|
|||
|
local upPositionY = self.CenterPosition.y + self.Transform.sizeDelta.y / 4 + self.BtnTab.transform.sizeDelta.y / 2
|
|||
|
self.UpPosition = CS.UnityEngine.Vector3(self.CenterPosition.x, upPositionY, self.CenterPosition.z)
|
|||
|
self.MoveTimerId = nil
|
|||
|
self.Duration = 0.3
|
|||
|
self.IsBtnDisable = nil
|
|||
|
XUiHelper.RegisterClickEvent(self, self.BtnPressNm, self.OnBtnTabClicked)
|
|||
|
XUiHelper.RegisterClickEvent(self, self.BtnPressDisable, self.OnBtnTabClicked)
|
|||
|
end
|
|||
|
|
|||
|
function XUiGridFubenSideTab:SetData(index)
|
|||
|
self.GridIndex = index
|
|||
|
end
|
|||
|
|
|||
|
function XUiGridFubenSideTab:Click(...)
|
|||
|
-- 侧边栏兼容新手指引
|
|||
|
if XDataCenter.GuideManager.CheckIsInGuide() and XDataCenter.GuideManager.GetGridNextCb() then
|
|||
|
XDataCenter.GuideManager:DoNextGridCb(self.Index)
|
|||
|
XDataCenter.GuideManager.SetGridNextCb(nil) -- 执行后将回调置空
|
|||
|
self:SetIsSelected(true)
|
|||
|
self:PlayCenterAnim(false)
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
function XUiGridFubenSideTab:PlayCenterAnim(isAnim, isUp)
|
|||
|
if isAnim == nil then isAnim = true end
|
|||
|
-- XLog.Warning(string.format("================ PlayCenterAnim %s %s ", self.GridIndex, isAnim))
|
|||
|
if not isAnim then
|
|||
|
self.BtnTab.transform.localPosition = self.CenterPosition
|
|||
|
self.BtnPressNm.transform.localPosition = self.CenterPosition
|
|||
|
self.BtnPressDisable.transform.localPosition = self.CenterPosition
|
|||
|
return
|
|||
|
end
|
|||
|
local beginY = self.BtnTab.transform.localPosition.y
|
|||
|
local diffValue = math.abs(self.CenterPosition.y - beginY)
|
|||
|
if isUp then
|
|||
|
diffValue = diffValue * -1
|
|||
|
end
|
|||
|
self:StopMoveTimer()
|
|||
|
self.MoveTimerId = XUiHelper.Tween(self.Duration, function(weight)
|
|||
|
if self.IsDestroy then
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
self.BtnTab.transform:UpdateLocalPositionY(beginY + diffValue * weight)
|
|||
|
self.BtnPressNm.transform:UpdateLocalPositionY(beginY + diffValue * weight)
|
|||
|
self.BtnPressDisable.transform:UpdateLocalPositionY(beginY + diffValue * weight)
|
|||
|
end, function()
|
|||
|
self.BtnTab.transform.localPosition = self.CenterPosition
|
|||
|
self.BtnPressNm.transform.localPosition = self.CenterPosition
|
|||
|
self.BtnPressDisable.transform.localPosition = self.CenterPosition
|
|||
|
end)
|
|||
|
end
|
|||
|
|
|||
|
function XUiGridFubenSideTab:PlayMoveUpAnim(isAnim)
|
|||
|
if isAnim == nil then isAnim = true end
|
|||
|
-- XLog.Warning(string.format("================ PlayMoveUpAnim %s %s ", self.GridIndex, isAnim))
|
|||
|
if not isAnim then
|
|||
|
self.BtnTab.transform.localPosition = self.UpPosition
|
|||
|
self.BtnPressNm.transform.localPosition = self.UpPosition
|
|||
|
self.BtnPressDisable.transform.localPosition = self.UpPosition
|
|||
|
return
|
|||
|
end
|
|||
|
local beginY = self.BtnTab.transform.localPosition.y
|
|||
|
local diffValue = math.abs(self.UpPosition.y - beginY)
|
|||
|
self:StopMoveTimer()
|
|||
|
self.MoveTimerId = XUiHelper.Tween(self.Duration, function(weight)
|
|||
|
if self.IsDestroy then
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
self.BtnTab.transform:UpdateLocalPositionY(beginY + diffValue * weight)
|
|||
|
self.BtnPressNm.transform:UpdateLocalPositionY(beginY + diffValue * weight)
|
|||
|
self.BtnPressDisable.transform:UpdateLocalPositionY(beginY + diffValue * weight)
|
|||
|
end, function()
|
|||
|
self.BtnTab.transform.localPosition = self.UpPosition
|
|||
|
self.BtnPressNm.transform.localPosition = self.UpPosition
|
|||
|
self.BtnPressDisable.transform.localPosition = self.UpPosition
|
|||
|
end)
|
|||
|
end
|
|||
|
|
|||
|
function XUiGridFubenSideTab:PlayMoveDownAnim(isAnim)
|
|||
|
if isAnim == nil then isAnim = true end
|
|||
|
-- XLog.Warning(string.format("================ PlayMoveDownAnim %s %s ", self.GridIndex, isAnim))
|
|||
|
if not isAnim then
|
|||
|
self.BtnTab.transform.localPosition = self.DownPosition
|
|||
|
self.BtnPressNm.transform.localPosition = self.DownPosition
|
|||
|
self.BtnPressDisable.transform.localPosition = self.DownPosition
|
|||
|
return
|
|||
|
end
|
|||
|
local beginY = self.BtnTab.transform.localPosition.y
|
|||
|
local diffValue = math.abs(self.DownPosition.y - beginY)
|
|||
|
self:StopMoveTimer()
|
|||
|
self.MoveTimerId = XUiHelper.Tween(self.Duration, function(weight)
|
|||
|
if self.IsDestroy then
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
self.BtnTab.transform:UpdateLocalPositionY(beginY - diffValue * weight)
|
|||
|
self.BtnPressNm.transform:UpdateLocalPositionY(beginY - diffValue * weight)
|
|||
|
self.BtnPressDisable.transform:UpdateLocalPositionY(beginY - diffValue * weight)
|
|||
|
end)
|
|||
|
end
|
|||
|
|
|||
|
function XUiGridFubenSideTab:SetBtnState(stateName)
|
|||
|
self.BtnTab.transform:Find(stateName).gameObject:SetActiveEx(true)
|
|||
|
for i = 0, self.BtnTab.transform.childCount - 1 do
|
|||
|
local trans = self.BtnTab.transform:GetChild(i)
|
|||
|
if trans.gameObject.name ~= stateName then
|
|||
|
trans.gameObject:SetActiveEx(false)
|
|||
|
end
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
function XUiGridFubenSideTab:SetBtnSelect(flag)
|
|||
|
local stateName = "Select"
|
|||
|
if flag then
|
|||
|
stateName = self.IsBtnDisable and stateName..BtnState.Disable or stateName..BtnState.Normal
|
|||
|
else
|
|||
|
stateName = self.IsBtnDisable and BtnState.Disable or BtnState.Normal
|
|||
|
end
|
|||
|
self:SetBtnState(stateName)
|
|||
|
end
|
|||
|
|
|||
|
function XUiGridFubenSideTab:SetBtnStateDisable(flag)
|
|||
|
local stateName = flag and "Disable" or "Normal" -- Btn是normal状态的点击按钮,Btn2是Disable的按钮
|
|||
|
self.IsBtnDisable = flag
|
|||
|
self.BtnPressNm.transform.gameObject:SetActiveEx(not flag)
|
|||
|
self.BtnPressDisable.transform.gameObject:SetActiveEx(flag)
|
|||
|
self:SetBtnState(stateName)
|
|||
|
end
|
|||
|
|
|||
|
function XUiGridFubenSideTab:SetIsSelected(value, isDraging, isBeginDrag)
|
|||
|
if self.ImgSelect then
|
|||
|
if not value and isDraging and isBeginDrag then -- 只有拖拽的时候才有聚焦效果
|
|||
|
self.ImgSelect.gameObject:SetActiveEx(true)
|
|||
|
else
|
|||
|
self.ImgSelect.gameObject:SetActiveEx(false)
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
if self.ExCheckOwnLock then -- 如果有子判单方法就用该方法判断该标签是否开放
|
|||
|
self:SetBtnStateDisable(self:ExCheckOwnLock())
|
|||
|
elseif self.GroupConfig then -- 判断该标签是否开放
|
|||
|
local isDisable = not XDataCenter.FubenManagerEx.CheckHasOpenBySecondTagId(self.GroupConfig.Id)
|
|||
|
self:SetBtnStateDisable(isDisable)
|
|||
|
end
|
|||
|
|
|||
|
if value then
|
|||
|
self:SetBtnSelect(true)
|
|||
|
else
|
|||
|
self:SetBtnSelect(false)
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
function XUiGridFubenSideTab:ResetPosition()
|
|||
|
self.BtnTab.transform.localPosition = self.CenterPosition
|
|||
|
end
|
|||
|
|
|||
|
function XUiGridFubenSideTab:StopMoveTimer()
|
|||
|
if self.MoveTimerId then
|
|||
|
XScheduleManager.UnSchedule(self.MoveTimerId)
|
|||
|
end
|
|||
|
self.MoveTimerId = nil
|
|||
|
end
|
|||
|
|
|||
|
function XUiGridFubenSideTab:OnDestroy()
|
|||
|
self.IsDestroy = true
|
|||
|
self:StopMoveTimer()
|
|||
|
end
|
|||
|
|
|||
|
return XUiGridFubenSideTab
|