141 lines
3.4 KiB
Plaintext
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
|