2025-06-04 05:02:57 +08:00

173 lines
4.7 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

local BaseCell = autoImport("BaseCell");
autoImport("PetWorkSpaceEmoji")
PetWorkSpaceCell = class("PetWorkSpaceCell", BaseCell)
local path = ResourcePathHelper.UICell("PetWorkSpaceEmoji")
function PetWorkSpaceCell:Init()
self:FindObjs();
self:AddEvt()
self:AddCellClickEvent();
end
function PetWorkSpaceCell:FindObjs()
self.emojiRoot = self:FindGO("emojiRoot")
self.emoji = self:LoadPreferb_ByFullPath(path, self.emojiRoot);
self.emoji.transform.localPosition = Vector3.zero
self.spaceEmoji = PetWorkSpaceEmoji.new(self.emoji);
self.spaceEmoji:AddEventListener(MouseEvent.MouseClick, self.OnReward, self);
self.icon = self:FindComponent("icon", UISprite);
self.lockImg = self:FindGO("locked")
self.unlockImg = self:FindGO("unlocked")
self.name = self:FindComponent("name",UILabel)
self.content = self:FindGO("Content");
self.effectContainer = self:FindGO("EffectContainer");
self.workingEffContainer = self:FindGO("WorkingEffContainer");
self.activeImg = self:FindGO("ActiveImg")
end
function PetWorkSpaceCell:AddEvt()
self:AddClickEvent(self.icon.gameObject, function ()
self:PassEvent(MouseEvent.MouseClick, self);
end)
end
function PetWorkSpaceCell:OnReward(cellCtl)
if(self.data)then
-- helplog("領獎spaceID ",self.data.id)
local data=PetWorkSpaceProxy.Instance:GetWorkSpaceDataById(self.data.id)
if(data and data.activeForbiddenFlag) then
MsgManager.ShowMsgByID(25716)
return
end
ServiceScenePetProxy.Instance:CallGetPetWorkRewardPetCmd(self.data.id)
end
end
function PetWorkSpaceCell:SetData(data)
self.data = data;
if(data)then
self.content:SetActive(true);
self:UpdateUI()
else
self.content:SetActive(false);
end
end
function PetWorkSpaceCell:SetChoose(chooseId)
self.chooseId=chooseId
self:UpdateChoose()
end
function PetWorkSpaceCell:PlayChooseEffect()
self.chooseEff = self:PlayUIEffect(EffectMap.UI.Selected,self.effectContainer,false)
end
function PetWorkSpaceCell:UpdateChoose()
if(self.id and self.id==self.chooseId)then
if(nil==self.chooseEff)then
self:PlayChooseEffect()
end
self:Show(self.effectContainer)
else
self:Hide(self.effectContainer)
end
end
function PetWorkSpaceCell:UpdateUI()
local staticData = self.data.staticData
self.name.text = staticData.Name
if self.activeImg then
self.activeImg:SetActive(nil~=staticData.ActID)
end
self:_setStatus()
self:UpdateChoose()
self.timeTick = TimeTickManager.Me():CreateTick(0,1000,self.Update,self)
end
function PetWorkSpaceCell:Update()
if(Slua.IsNull(self.gameObject))then
self:ClearTick()
return
end
local data = self.data
if(data)then
if(data:MaxRewardLimited() and data.petEggs and #data.petEggs>0)then
self.spaceEmoji:SetData("rest")
return
end
local reward = data:GetUIReward()
if(data.state==PetWorkSpaceProxy.ESpaceStatus.EWORKSTATE_WORKING and not data.activeForbiddenFlag)then
self.spaceEmoji:SetData(reward)
elseif(data.state==PetWorkSpaceProxy.ESpaceStatus.EWORKSTATE_REST)then
if(reward)then
self.spaceEmoji:SetData(reward)
else
self.spaceEmoji:SetData("rest")
end
end
end
end
function PetWorkSpaceCell:_refreshWorkingEff()
local data = self.data
local isWorking = data:IsWorking()
if(data:IsUnlock() and isWorking and not data:IsOverCfgTime() and not data:MaxRewardLimited())then
if(nil==self.workingEff)then
self.workingEff = self:PlayUIEffect(EffectMap.UI.PetWork,self.workingEffContainer,false)
end
self:Show(self.workingEffContainer)
else
self.Hide(self.workingEffContainer)
end
end
local tempColor = LuaColor.white
function PetWorkSpaceCell:_setStatus()
local data = self.data
self.id=data.id
IconManager:SetUIIcon(data.staticData.Gate, self.icon);
ColorUtil.WhiteUIWidget(self.icon)
self:_refreshWorkingEff()
if(not data:IsOpen())then
self:Hide(self.lockImg)
self:Hide(self.unlockImg)
self.name.text = ZhString.PetWorkSpace_unLockSpaceName
-- ColorUtil.GrayUIWidget(self.icon)
tempColor:Set(1.0/255.0,2.0/255.0,3.0/255.0,160/255)
self.icon.color = tempColor
self:Hide(self.emoji)
elseif(not data:IsUnlock())then
self:Show(self.lockImg)
self:Hide(self.unlockImg)
self:Hide(self.emoji)
elseif(data.state==PetWorkSpaceProxy.ESpaceStatus.EWORKSTATE_UNUSED)then
self:Show(self.unlockImg)
self:Hide(self.lockImg)
self:Hide(self.emoji)
elseif(data.state==PetWorkSpaceProxy.ESpaceStatus.EWORKSTATE_WORKING)then
self:Show(self.emoji)
self:Hide(self.lockImg)
self:Hide(self.unlockImg)
elseif(data.state==PetWorkSpaceProxy.ESpaceStatus.EWORKSTATE_REST)then
self:Show(self.emoji)
self:Hide(self.lockImg)
self:Hide(self.unlockImg)
end
end
function PetWorkSpaceCell:ClearTick()
if(self.timeTick)then
TimeTickManager.Me():ClearTick(self)
end
end
function PetWorkSpaceCell:OnDestroy()
self:ClearTick()
end