2025-06-04 05:12:01 +08:00

203 lines
6.1 KiB
Plaintext

EatFoodPopUp = class("EatFoodPopUp", BaseView);
autoImport("GainWayTip");
autoImport("ItemTipComCell");
EatFoodPopUp.ViewType = UIViewType.PopUpLayer
function EatFoodPopUp:Init()
self:InitView();
self:MapEvent();
end
function EatFoodPopUp:InitView()
self.root = GameObjectUtil.Instance:FindCompInParents(self.gameObject, UIRoot);
self.itemGO = self:FindGO("ItemTipComCell");
self.foodCell = ItemTipComCell.new(self.itemGO);
self.foodCell:AddEventListener(ItemTipEvent.ClickTipFuncEvent, self.HandleClickTip, self);
self.foodCell:AddEventListener(ItemTipEvent.ShowGetPath, self.ShowGetPath, self);
self.eatingTip = self:FindComponent("EatingTip", UILabel);
self.gpContainer = self:FindGO("GetPathContainer");
self.closecomp = self.itemGO:GetComponent(CloseWhenClickOtherPlace);
self.closecomp.callBack = function (go)
self:CloseSelf();
end
self.editPowerBord = self:FindGO("EditorPowerBord");
local public_EditButton = self:FindGO("ItemFuncButtonCell1");
self:AddClickEvent(public_EditButton, function (go)
self:EditEatPower(SceneFood_pb.EEATPOWR_ALL);
end);
local team_EditButton = self:FindGO("ItemFuncButtonCell2");
self:AddClickEvent(team_EditButton, function (go)
self:EditEatPower(SceneFood_pb.EEATPOWR_TEAM);
end);
local self_EditButton = self:FindGO("ItemFuncButtonCell3");
self:AddClickEvent(self_EditButton, function (go)
self:EditEatPower(SceneFood_pb.EEATPOWR_SELF);
end);
self.editPowerButton = self:FindGO("EditPowerButton");
self:AddClickEvent(self.editPowerButton, function (go)
self:CloseGetPath();
self.editPowerBord:SetActive(true);
end);
self.foodCell.itemcell:ShowNum()
self.foodCell.dontUpdateCellCount = true
end
local tempV3 = LuaVector3();
function EatFoodPopUp:ShowGetPath(cell)
if(cell and cell.gameObject)then
self.editPowerBord:SetActive(false);
if(not self.bdt)then
tempV3:Set(1,1,1);
self.gpContainer.transform.localScale = tempV3;
local x = LuaGameObject.InverseTransformPointByTransform(self.root.transform, cell.gameObject.transform, Space.World)
self.gpContainer.transform.position = cell.gameObject.transform.position;
local lx,ly = LuaGameObject.GetLocalPosition(self.gpContainer.transform)
if(x>0)then
tempV3:Set(lx-210, ly+271, 0);
else
tempV3:Set(lx+210, ly+271, 0);
end
self.gpContainer.transform.localPosition = tempV3;
local data = cell.data;
if(data and data.staticData)then
self.bdt = GainWayTip.new(self.gpContainer)
self.bdt:SetAnchorPos(x<=0);
self.bdt:SetData(data.staticData.id);
self.bdt:AddEventListener(ItemEvent.GoTraceItem, function ()
self:CloseSelf();
end, self);
self.bdt:AddIgnoreBounds(self.gameObject);
self:AddIgnoreBounds(self.bdt.gameObject);
self.bdt:AddEventListener(GainWayTip.CloseGainWay, self.GetPathCloseCall, self);
end
else
self.bdt:OnExit();
end
end
end
function EatFoodPopUp:CloseGetPath()
if(self.bdt)then
self.bdt:OnExit();
self.bdt = nil;
end
end
function EatFoodPopUp:GetPathCloseCall()
self.closecomp:ReCalculateBound();
self.bdt = nil;
end
function EatFoodPopUp:EditEatPower(power)
ServiceSceneFoodProxy.Instance:CallEditFoodPower(self.npcguid, power);
end
function EatFoodPopUp:HandleClickTip()
self:CloseSelf();
end
function EatFoodPopUp:MapEvent()
self:AddListenEvt(ServiceEvent.SceneFoodQueryFoodNpcInfo, self.HandleUpdateFoodInfo);
end
function EatFoodPopUp:HandleUpdateFoodInfo(note)
local server_data = note.body;
if(server_data)then
if(server_data.npcguid == self.npcguid)then
if(server_data.itemid and server_data.itemid~=0 and server_data.itemnum > 0)then
local itemData = ItemData.new("Food", server_data.itemid);
itemData:SetItemNum(server_data.itemnum);
self.foodCell:SetData(itemData);
self.foodCell:UpdateNoneItemTipCountChooseBord(server_data.itemnum);
self.foodCell:ActiveGetPath(true);
end
self.foodCell:SetReplaceInfo( string.format(ZhString.EatFoodPopUp_EatTip, server_data.eating_people) );
self.editPowerButton:SetActive(server_data.ownerid == Game.Myself.data.id);
self.itemGO:SetActive(true);
end
end
if(not self.initFunc)then
self.initFunc = true;
self.foodCell:AddTipFunc(ZhString.EatFoodPopUp_EatSelf, EatFoodPopUp.EatSelf, {self.npcguid, self.foodCell, self});
local myPetInfo = PetProxy.Instance:GetMyPetInfoData();
if(myPetInfo ~= nil)then
self.foodCell:AddTipFunc(ZhString.EatFoodPopUp_PetEat, EatFoodPopUp.PetEat, {self.npcguid, self.foodCell});
end
end
end
function EatFoodPopUp.EatSelf(param)
local guid , foodCell , eatPopup = param[1] , param[2], param[3]
local foodList = FoodProxy.Instance:GetEatFoods()
local currentEatFoodCount = #foodList
local overrideNotice = LocalSaveProxy.Instance:GetFoodBuffOverrideNoticeShow()
local level = Game.Myself.data.userdata:Get(UDEnum.TASTER_LV)
local tasteLvInfo = Table_TasterLevel[level]
local foodMaxCount = 3
if tasteLvInfo then
foodMaxCount = tasteLvInfo.AddBuffs
end
local itemId = foodCell.data.staticData.id
if overrideNotice and currentEatFoodCount + foodCell.chooseCount > foodMaxCount and itemId ~= 551019 then
eatPopup:CloseSelf();
GameFacade.Instance:sendNotification(UIEvent.ShowUI,{viewname = "FoodOverridePopView", foodNpcId = guid, foodItemId = itemId, foodCount = foodCell.chooseCount})
else
ServiceSceneFoodProxy.Instance:CallStartEat(guid, false, foodCell.chooseCount);
end
--ServiceSceneFoodProxy.Instance:CallStartEat(guid, false, foodCell.chooseCount);
end
function EatFoodPopUp.PetEat(param)
local guid , foodCell = param[1] , param[2]
if foodCell.chooseCount == 1 then
ServiceSceneFoodProxy.Instance:CallStartEat(guid, true, foodCell.chooseCount);
else
MsgManager.ShowMsgByID(25429)
end
end
function EatFoodPopUp:UpdateFoodInfo()
end
function EatFoodPopUp:AddIgnoreBounds(obj)
if(self.closecomp)then
self.closecomp:AddTarget(obj.transform);
end
end
function EatFoodPopUp:OnEnter()
EatFoodPopUp.super.OnEnter(self);
local viewdata = self.viewdata.viewdata;
if(viewdata)then
self.npcguid = viewdata.npcguid;
if(self.npcguid)then
ServiceSceneFoodProxy.Instance:CallQueryFoodNpcInfo(self.npcguid)
end
end
end
function EatFoodPopUp:OnExit()
EatFoodPopUp.super.OnExit(self);
self.editPowerBord:SetActive(false);
end