ro-table/Assets/Resources/Script/FrameWork/GUI/cell/QuickUsePopupFuncCell.txt
2025-06-04 05:12:01 +08:00

369 lines
12 KiB
Plaintext
Raw 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");
QuickUsePopupFuncCell = class("QuickUsePopupFuncCell",baseCell);
function QuickUsePopupFuncCell:Init()
-- self.iconFixScale = Vector3(0.83,0.83,1)
self.icon = self:FindGO("Icon_Sprite"):GetComponent(UISprite)
-- self.quality = self:FindGO("Quality"):GetComponent(UISprite)
self.numLabel = self:FindComponent("NumLabel", UILabel);
self.iconLabel = self:FindGO("IconLabel"):GetComponent(UILabel)
self.closeBtn = self:FindGO("CloseBtn"):GetComponent(UIButton)
self.functionTip = self:FindGO("FunctionTip");
self:SetEvent(self.closeBtn.gameObject,function (obj)
self:TryClose()
end)
self.btnLabel = self:FindGO("QuickUseBtnLabel"):GetComponent(UILabel)
self.quickUseBtn = self:FindGO("QuickUseBtn");
self:SetEvent(self.quickUseBtn,function (obj)
self:BtnClick()
end)
self.doubleQuickUse = self:FindGO("DoubleQuickUse");
local button1 = self:FindGO("Button1", self.doubleQuickUse);
self.button1_label = self:FindComponent("Label", UILabel, button1);
self:SetEvent(button1, function (go)
self:DoButton1Event();
end);
local button2 = self:FindGO("Button2", self.doubleQuickUse)
self.button2_label = self:FindComponent("Label", UILabel, button2);
self:SetEvent(button2, function (go)
self:DoButton2Event();
end);
self:InitTypes()
end
function QuickUsePopupFuncCell:InitTypes()
self.typeShow = {}
self.typeClick = {}
self.typeRefreshNum = {}
self.typeShow[QuickUseProxy.Type.Quest] = self.QuestShow
self.typeShow[QuickUseProxy.Type.Equip] = self.EquipShow
self.typeShow[QuickUseProxy.Type.Fashion] = self.FashionShow
self.typeShow[QuickUseProxy.Type.Trigger] = self.TriggerShow
self.typeShow[QuickUseProxy.Type.Common] = self.CommonShow
self.typeShow[QuickUseProxy.Type.Item] = self.ItemShow
self.typeShow[QuickUseProxy.Type.CatchPet] = self.CatchPetShow
self.typeClick[QuickUseProxy.Type.Quest] = self.QuestClick
self.typeClick[QuickUseProxy.Type.Equip] = self.EquipClick
self.typeClick[QuickUseProxy.Type.Fashion] = self.FashionClick
self.typeClick[QuickUseProxy.Type.Trigger] = self.TriggerClick
self.typeClick[QuickUseProxy.Type.Common] = self.CommonClick
self.typeClick[QuickUseProxy.Type.Item] = self.ItemClick
self.typeRefreshNum[QuickUseProxy.Type.CatchPet] = self.CatchPetNumRefrehs
self.doubleQuickUse_typeClick1 = {};
self.doubleQuickUse_typeClick2 = {};
self.doubleQuickUse_typeClick1[QuickUseProxy.Type.CatchPet] = self.CathPetClick1
self.doubleQuickUse_typeClick2[QuickUseProxy.Type.CatchPet] = self.CathPetClick2
end
function QuickUsePopupFuncCell:SetData(data)
self.data = data and data.data or nil
if(data == nil) then
self:Hide()
else
self.type = data.type
self:Show()
self:Refresh()
end
end
function QuickUsePopupFuncCell:Refresh()
self.closeBtn.gameObject:SetActive(self.type~=QuickUseProxy.Type.Quest)
-- self.quality.gameObject:SetActive(self.type~=QuickUseProxy.Type.Quest)
self.doubleQuickUse:SetActive(self.type == QuickUseProxy.Type.CatchPet);
self.quickUseBtn:SetActive(self.type ~= QuickUseProxy.Type.CatchPet);
self.numLabel.gameObject:SetActive(false);
self.typeShow[self.type](self)
end
function QuickUsePopupFuncCell:UpdateEquipInfo(item,btnLabel)
self.btnLabel.text = btnLabel or ZhString.QuickUsePopupFuncCell_EquipBtn
self.iconLabel.text = item.staticData.NameZh
IconManager:SetItemIcon(item.staticData.Icon, self.icon)
self.icon:MakePixelPerfect()
-- 功能類道具Tip
if(self.functionTip)then
self.functionTip:SetActive(item.staticData.Type == 65);
end
-- self.icon.transform.localScale = self.iconFixScale
-- if(self.quality)then
-- local qInt = item.staticData.Quality;
-- if(qInt and qInt~=0)then
-- self.quality.color = CustomColor.ItemFrameColor[qInt];
-- end
-- end
end
function QuickUsePopupFuncCell:ItemShow()
self:UpdateEquipInfo(self.data,ZhString.QuickUsePopupFuncCell_UseBtn)
if(self.data and type(self.data)=="table") then
FunctionItemCompare.Me():SetHint(self.data)
end
end
function QuickUsePopupFuncCell:EquipShow()
self:UpdateEquipInfo(self.data)
FunctionItemCompare.Me():SetHint(self.data)
end
function QuickUsePopupFuncCell:FashionShow()
local item = BagProxy.Instance:GetItemByStaticID(self.data)
if(item) then
self:UpdateEquipInfo(item)
FunctionItemCompare.Me():SetHint(item)
end
end
function QuickUsePopupFuncCell:QuestShow()
self.btnLabel.text =self.data.btn or ZhString.QuickUsePopupFuncCell_CameraBtn
self.iconLabel.text = self.data.content
self:TrySetIcon()
-- self.icon.transform.localScale = self.iconFixScale
end
function QuickUsePopupFuncCell:TriggerShow()
self:Hide(self.closeBtn.gameObject)
if(self.data.data.skill) then
local skill = SkillProxy.Instance:GetLearnedSkillWithSameSort(self.data.data.skill)
-- local skill = self.data.data.skill
local staticData = skill.staticData
if(staticData) then
IconManager:SetSkillIcon(staticData.Icon, self.icon)
if(staticData.SkillType == GameConfig.SkillType.Purify.type) then
self.btnLabel.text = MsgParserProxy.Instance:TryParse(Table_Sysmsg[701].button,self.data.params[1])
self.iconLabel.text = MsgParserProxy.Instance:TryParse(Table_Sysmsg[701].Text,skill and skill.leftTimes or 0,skill and skill.maxTimes or 0)
end
else
end
end
self.icon.width = 76
self.icon.height = 76
end
function QuickUsePopupFuncCell:CommonShow()
if(self.data.canClose) then
self:Show(self.closeBtn.gameObject)
else
self:Hide(self.closeBtn.gameObject)
end
self:TrySetIcon()
self.iconLabel.text = (self.data.iconStr~=nil and self.data.iconStr or "")
self.btnLabel.text = (self.data.btnStr~=nil and self.data.btnStr or "")
-- local qInt = self.data.iconQuality;
-- if(qInt and qInt~=0)then
-- self:Show(self.quality);
-- self.quality.color = CustomColor.ItemFrameColor[qInt];
-- else
-- self:Hide(self.quality);
-- end
end
function QuickUsePopupFuncCell:CatchPetShow()
self:Hide(self.closeBtn.gameObject)
local data = self.data;
local cpatureData = data[2];
if(cpatureData == nil)then
return;
end
self.numLabel.gameObject:SetActive(true);
self.numLabel.text = BagProxy.Instance:GetItemNumByStaticID(cpatureData.GiftItemID) or 0;
local itemSData = Table_Item[cpatureData.GiftItemID];
IconManager:SetItemIcon(itemSData.Icon, self.icon)
self.icon:MakePixelPerfect()
self.iconLabel.text = itemSData.NameZh;
self.doubleQuickUse:SetActive(true);
self.quickUseBtn:SetActive(false);
self.button1_label.text = ZhString.QuickUsePopupFuncCell_Catch;
self.button2_label.text = ZhString.QuickUsePopupFuncCell_Give;
end
function QuickUsePopupFuncCell:TrySetIcon()
if(self.data.iconType=="itemIcon") then
IconManager:SetItemIcon(self.data.iconID, self.icon)
self.icon:MakePixelPerfect()
elseif(self.data.iconType=="npcIcon") then
IconManager:SetNpcMonsterIconByID(self.data.iconID, self.icon)
self.icon.width = 76
self.icon.height = 76
elseif(self.data.iconType=="skillIcon") then
IconManager:SetSkillIcon(self.data.iconID, self.icon)
self.icon.width = 76
self.icon.height = 76
elseif(self.data.iconType=="uiIcon") then
IconManager:SetUIIcon(self.data.iconID, self.icon)
self.icon.width = 76
self.icon.height = 76
end
end
function QuickUsePopupFuncCell:BtnClick()
-- print(self.type)
self.typeClick[self.type](self)
if(self.type ~= QuickUseProxy.Type.Item)then
self:TryClose()
end
end
function QuickUsePopupFuncCell:DoButton1Event()
local func = self.doubleQuickUse_typeClick1[self.type]
local needClose = false;
if(func)then
needClose = func(self);
end
if(needClose)then
self:TryClose();
end
end
function QuickUsePopupFuncCell:DoButton2Event()
local func = self.doubleQuickUse_typeClick2[self.type]
local needClose = false;
if(func)then
needClose = func(self);
end
if(needClose)then
self:TryClose();
end
end
function QuickUsePopupFuncCell:QuestClick()
if(self.data.questData.questDataStepType==QuestDataStepType.QuestDataStepType_USE) then
local questData = self.data.questData
QuestProxy.Instance:notifyQuestState(questData.id,questData.staticData.FinishJump)
elseif(self.data.questData.questDataStepType ==QuestDataStepType.QuestDataStepType_SELFIE) then
GameFacade.Instance:sendNotification(UIEvent.JumpPanel,{view = PanelConfig.PhotographPanel,force=true,viewdata = {questData=self.data.questData}});
end
end
function QuickUsePopupFuncCell:ItemClick()
local data = self.data;
if(data)then
local itemTarget = data.staticData.ItemTarget;
if(itemTarget and itemTarget.type)then
local realTarget = Game.Myself:GetLockTarget();
if(not realTarget)then
MsgManager.ShowMsgByIDTable(710)
return;
end
local creatureType = realTarget:GetCreatureType();
if(Creature_Type.Player == creatureType and not data:CanUseForTarget(ItemTarget_Type.Player))then
MsgManager.ShowMsgByIDTable(711)
return;
elseif(Creature_Type.Npc == creatureType)then
if(realTarget.data:IsNpc() and not data:CanUseForTarget(ItemTarget_Type.Npc))then
MsgManager.ShowMsgByIDTable(711)
return;
elseif(realTarget.data:IsMonster() and not data:CanUseForTarget(ItemTarget_Type.Monster))then
MsgManager.ShowMsgByIDTable(711)
return;
end
end
end
end
FunctionItemFunc.ItemUseEvt(self.data)
self:TryClose();
end
function QuickUsePopupFuncCell:EquipClick()
FunctionItemFunc.CallEquipEvt(self.data,self.data.site)
-- ServiceItemProxy.Instance:CallEquip(SceneItem_pb.EEQUIPOPER_ON,nil, self.data.id);
end
function QuickUsePopupFuncCell:FashionClick()
local item = BagProxy.Instance:GetItemByStaticID(self.data)
-- print(self.data)
if(item) then
-- print(item.id)
-- print(item.staticData.id)
ServiceItemProxy.Instance:CallEquip(SceneItem_pb.EEQUIPOPER_ON,nil, item.id)
else
error("快捷裝備無法在揹包中找到時裝。靜態id為"..self.data)
end
end
function QuickUsePopupFuncCell:TriggerClick()
if(self.data.type == SceneMap_pb.EACTTYPE_PURIFY) then
if(self.data.data.skill) then
local skill = SkillProxy.Instance:GetLearnedSkillWithSameSort(self.data.data.skill)
if(skill) then
if(skill.leftTimes and skill.leftTimes >= self.data.serverData.actvalue) then
GameFacade.Instance:sendNotification(MyselfEvent.AskUseSkill,{skill=skill.id,target = self.data.master})
FunctionPurify.Me():TryPurifyMonster(self.data.master)
else
MsgManager.ShowMsgByIDTable(702)
end
end
end
end
end
function QuickUsePopupFuncCell:CommonClick()
if(self.data.ClickCall) then
self.data.ClickCall()
end
self:TryClose()
end
function QuickUsePopupFuncCell:CathPetClick1()
FunctionPet.Me():DoCatch(self.data[1])
return false;
end
function QuickUsePopupFuncCell:CathPetClick2()
ServiceScenePetProxy.Instance:CallCatchPetGiftPetCmd(self.data[1])
return false;
end
function QuickUsePopupFuncCell:CatchPetNumRefrehs()
local cpatureData = self.data[2];
if(cpatureData == nil)then
return;
end
self.numLabel.gameObject:SetActive(true);
self.numLabel.text = BagProxy.Instance:GetItemNumByStaticID(cpatureData.GiftItemID) or 0;
end
function QuickUsePopupFuncCell:TryClose()
if(self.type == QuickUseProxy.Type.Equip) then
QuickUseProxy.Instance:RemoveBetterEquip(self.data)
elseif(self.type == QuickUseProxy.Type.Fashion) then
QuickUseProxy.Instance:RemoveNeverEquipedFashion(self.data,true)
elseif(self.type == QuickUseProxy.Type.Item) then
QuickUseProxy.Instance:RemoveItemUse(self.data)
elseif(self.type == QuickUseProxy.Type.CatchPet) then
QuickUseProxy.Instance:RemoveCatchPetData(self.data)
else
QuickUseProxy.Instance:RemoveCommon(self.data)
end
self:DispatchEvent(UIEvent.CloseUI)
end
function QuickUsePopupFuncCell:RefreshNum()
if(not self.gameObject.activeSelf)then
return;
end
local func = self.typeRefreshNum[self.type];
if(func)then
func(self);
end
end