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

141 lines
3.4 KiB
Plaintext

FoodRecipePage = class("FoodRecipePage", SubView)
autoImport("RecipeCell");
RecipeType_Map = {
SceneFood_pb.ECOOKTYPE_JIANCHAO,
SceneFood_pb.ECOOKTYPE_BARBECUE,
SceneFood_pb.ECOOKTYPE_SOUP,
SceneFood_pb.ECOOKTYPE_DESSERT,
}
function FoodRecipePage:Init()
self:MapEvents();
self:InitUI();
end
function FoodRecipePage:InitUI()
local recipeWrap = self:FindGO("RecipeWrap");
local activeH = GameObjectUtil.Instance:GetUIActiveHeight(self.gameObject)
local pfbNum = math.ceil((activeH - 95)/104) + 1;
local wrapConfig = {
wrapObj = recipeWrap,
pfbNum = pfbNum,
cellName = "RecipeCell",
control = RecipeCell,
};
self.recipeCtl = WrapCellHelper.new(wrapConfig);
self.recipeCtl:AddEventListener(MouseEvent.MouseClick, self.HandleClickItem, self);
self.recipeCells = self.recipeCtl:GetCellCtls();
self.recipeTog = self:FindGO("RecipeTog");
self:AddClickEvent(self.recipeTog, function (go)
for i=1,#self.recipeCells do
self.recipeCells[i]:Refresh();
end
end);
self.recipeTogs = {}
for i=1,4 do
local tog = self:FindGO("Tog" .. i);
self.recipeTogs[i] = tog;
self:AddClickEvent(tog, function()
self:UpdateRecipes(i);
end);
end
local filter = self:FindComponent("DiffFilter", UIPopupList);
filter:AddItem(ZhString.FoodMakeView_Diff_All, 0);
for i=1,5 do
filter:AddItem(i .. ZhString.FoodMakeView_Diff_Star, i);
end
EventDelegate.Add (filter.onChange, function()
self:UpdateRecipes(nil, filter.data);
end);
self.recipeStick = self:FindComponent("TipStick", UIWidget);
end
function FoodRecipePage:HandleClickItem(cellCtl)
local data = cellCtl.data;
if(data and data.unlock)then
if(self.chooseRecipe ~= data)then
self:SetChooseRecipe(data);
else
self:ShowRecipeTip(data);
end
end
end
function FoodRecipePage:SetChooseRecipe(recipeData)
self.chooseRecipe = recipeData;
local chooseid;
for i=1, #self.recipeCells do
chooseid = recipeData and recipeData.staticData.id or 0;
self.recipeCells[i]:SetChoose(chooseid);
end
end
function FoodRecipePage:ShowRecipeTip(recipeData)
TipManager.Instance:ShowFoodRecipeTip(recipeData, self.recipeStick, NGUIUtil.AnchorSide.TopLeft , {0,0})
end
local fliterRecipes = {};
function FoodRecipePage:UpdateRecipes(recipeIndex, fliterDiff)
if(recipeIndex == nil)then
if(self.recipeIndex ~= nil)then
recipeIndex = self.recipeIndex;
else
recipeIndex = 1;
end
end
if(fliterDiff == nil)then
if(self.fliterDiff ~= nil)then
fliterDiff = self.fliterDiff;
else
fliterDiff = 0;
end
end
self.recipeIndex = recipeIndex;
self.fliterDiff = fliterDiff;
local rtype = RecipeType_Map[recipeIndex];
if(rtype)then
self:SetChooseRecipe(nil);
local recipes = FoodProxy.Instance:GetRecipesByType(rtype) or {};
if(self.fliterDiff == 0)then
self.recipeCtl:ResetPosition();
self.recipeCtl:UpdateInfo(recipes);
else
TableUtility.ArrayClear(fliterRecipes);
for i=1,#recipes do
local rData = recipes[i];
local difflv = rData:GetDiffLevel();
difflv = difflv/2;
if(difflv > fliterDiff-1 and difflv <= fliterDiff)then
table.insert(fliterRecipes, rData);
end
end
self.recipeCtl:ResetPosition();
self.recipeCtl:UpdateInfo(fliterRecipes);
end
end
end
function FoodRecipePage:MapEvents()
self:AddListenEvt(ServiceEvent.SceneFoodUnlockRecipeNtf, self.UpdateRecipes);
end
function FoodRecipePage:OnEnter()
FoodRecipePage.super.OnEnter(self);
self:UpdateRecipes(1, 0);
end