Files
rtdd/behavior_pack_v8jz0zSR/Script_NeteaseModousIY5aSF/System/Ui/CookRecipe.py
T
2026-09-28 11:43:54 +08:00

184 lines
10 KiB
Python

# coding=utf-8
from ...BlueFoxTools.ScreenTools import ScreenTools
from ...BlueFoxTools.ScreenTools import ButtonTouchTypeEnum as btte
from ...BlueFoxTools.SystemTools import SystemTools
from ...BlueFoxTools.ToolsConfig import *
allCookRecipe = [
# ---------------------------------- 第1页 基底: 炒锅添油(oilpan) 【简单·单主料】 ----------------------------------
{
'publicResult': 'rtdd:oilpan', # 共有步骤产生的结果 = 炒锅(添油)
'publicStep': [
{'itemName': 'rtdd:spatula', 'count': 1}, # 锅铲(带油)
{'itemName': 'rtdd:oilcan', 'count': 1}, # 油罐(蘸油)
{},
], # 共有步骤: 炒锅(空)+带油锅铲 -> 炒锅(添油)
'splitStep': [
{'result': 'rtdd:plate_14', 'items': [{'itemName': 'rtdd:potato_wedges', 'count': 1}, {}, {}]}, # 炒土豆
{'result': 'rtdd:plate_24', 'items': [{'itemName': 'rtdd:crushedmeat', 'count': 4}, {}, {}]}, # 炒碎肉
{'result': 'rtdd:plate_26d', 'items': [{'itemName': 'rtdd:rawsquidwhiskersr', 'count': 3}, {}, {}]}, # 炒鱿鱼须
{'result': 'rtdd:plate_25', 'items': [{'itemName': 'minecraft:salmon', 'count': 1}, {}, {}]}, # 煎鲑鱼
{'result': 'rtdd:plate_23', 'items': [{'itemName': 'rtdd:vegetable', 'count': 4}, {}, {}]}, # 炒时蔬
{'result': 'rtdd:plate_2', 'items': [{'itemName': 'minecraft:beef', 'count': 1}, {}, {}]}, # 黑椒牛排
{'result': 'rtdd:plate_7', 'items': [{'itemName': 'rtdd:legcow', 'count': 1}, {}, {}]}, # 黑椒牛腿
{'result': 'rtdd:plate_12', 'items': [{'itemName': 'rtdd:porkloins', 'count': 1}, {}, {}]}, # 小炒五花肉
], # 分步骤(最多8个): 添油锅 + 主料 -> 成品
},
# ---------------------------------- 第2页 基底: 辣椒锅底(carrotpotbase) 【中·辣味】 ----------------------------------
{
'publicResult': 'rtdd:carrotpotbase', # 炒锅_15(辣椒锅底)
'publicStep': [
{'itemName': 'rtdd:pepper', 'count': 2}, # 辣椒x2
{},
{},
], # 共有步骤: 炒锅(空)+辣椒x2 -> 辣椒锅底
'splitStep': [
{'result': 'rtdd:plate_47', 'items': [{'itemName': 'minecraft:chicken', 'count': 1}, {}, {}]}, # 辣子鸡丁
{'result': 'rtdd:plate_47a', 'items': [{'itemName': 'minecraft:beef', 'count': 1}, {}, {}]}, # 辣椒炒牛肉
{'result': 'rtdd:plate_41', 'items': [{'itemName': 'minecraft:salmon', 'count': 1}, {}, {}]}, # 辣炒鲑鱼
{'result': 'rtdd:plate_19', 'items': [{'itemName': 'minecraft:rabbit', 'count': 2}, {}, {}]}, # 辣炒兔肉
{'result': 'rtdd:plate_32', 'items': [{'itemName': 'minecraft:beef', 'count': 1}, {'itemName': 'rtdd:beancurd', 'count': 1}, {}]}, # 麻婆豆腐
], # 分步骤: 辣椒锅底 + 主料 -> 成品
},
# ---------------------------------- 第3页 基底: 葱花锅底(vegetablespotbase) 【中·清炒】 ----------------------------------
{
'publicResult': 'rtdd:vegetablespotbase', # 炒锅_94(葱花锅底)
'publicStep': [
{'itemName': 'rtdd:crushed_scallions', 'count': 3}, # 葱花碎x3
{},
{},
], # 共有步骤: 炒锅(空)+葱花碎x3 -> 葱花锅底
'splitStep': [
{'result': 'rtdd:plate_3', 'items': [{'itemName': 'minecraft:mutton', 'count': 1}, {}, {}]}, # 清炒羊肉
{'result': 'rtdd:plate_1', 'items': [{'itemName': 'minecraft:porkchop', 'count': 1}, {}, {}]}, # 清炒猪排
], # 分步骤: 葱花锅底 + 主料 -> 成品
},
# ---------------------------------- 第4页 基底: 炒胡萝卜_熟(cooking_pepper) 【复杂·胡萝卜系】 ----------------------------------
{
'publicResult': 'rtdd:cooking_pepper', # 炒锅_19(炒胡萝卜_熟)
'publicStep': [
{'itemName': 'minecraft:carrot', 'count': 2}, # 胡萝卜x2
{'itemName': 'rtdd:spatula', 'count': 1}, # 锅铲翻炒
{},
], # 共有步骤: 添油锅+胡萝卜x2 -> 炒胡萝卜(熟)
'splitStep': [
{'result': 'rtdd:plate_6', 'items': [{'itemName': 'rtdd:costillavacaes', 'count': 2}, {}, {}]}, # 胡萝卜牛排骨
{'result': 'rtdd:plate_5', 'items': [{'itemName': 'minecraft:salmon', 'count': 1}, {}, {}]}, # 胡萝卜鲑鱼
{'result': 'rtdd:plate_9', 'items': [{'itemName': 'rtdd:legsleep', 'count': 1}, {}, {}]}, # 胡萝卜羊腿
{'result': 'rtdd:plate_8', 'items': [{'itemName': 'rtdd:beef_tenderloin', 'count': 1}, {}, {}]}, # 胡萝卜牛里脊
{'result': 'rtdd:plate_13', 'items': [{'itemName': 'rtdd:porkrib', 'count': 2}, {}, {}]}, # 胡萝卜炒猪排骨
{'result': 'rtdd:plate_10', 'items': [{'itemName': 'rtdd:sheeploins', 'count': 2}, {}, {}]}, # 胡萝卜炒羊里脊
{'result': 'rtdd:plate_11', 'items': [{'itemName': 'rtdd:sheepracks', 'count': 2}, {}, {}]}, # 胡萝卜炒羊排
{'result': 'rtdd:plate_15', 'items': [{'itemName': 'minecraft:cod', 'count': 1}, {}, {}]}, # 胡萝卜炒鳕鱼
], # 分步骤: 炒胡萝卜熟 + 主料 -> 成品
},
# ---------------------------------- 第5页 基底: 意面_熟(pastapot_1) 【复杂·意面系】 ----------------------------------
{
'publicResult': 'rtdd:pastapot_1', # 炒锅_76(意面_熟)
'publicStep': [
{'itemName': 'rtdd:noodles', 'count': 2}, # 生面x2
{'itemName': 'rtdd:spatula', 'count': 1}, # 锅铲翻炒
{},
], # 共有步骤: 添油锅+生面x2 -> 意面(熟)
'splitStep': [
{'result': 'rtdd:plate_43', 'items': [{'itemName': 'minecraft:beef', 'count': 1}, {'itemName': 'rtdd:spatula', 'count': 1}, {}]}, # 牛肉意面
{'result': 'rtdd:plate_44', 'items': [{'itemName': 'minecraft:brown_mushroom', 'count': 5}, {}, {}]}, # 香菇意面
{'result': 'rtdd:plate_45', 'items': [{'itemName': 'rtdd:crushed_carrots', 'count': 3}, {}, {}]}, # 胡萝卜意面
{'result': 'rtdd:plate_46', 'items': [{'itemName': 'minecraft:chicken', 'count': 1}, {}, {}]}, # 鸡肉番茄意面
], # 分步骤: 意面熟 + 主料 -> 成品
},
]
@ScreenTools.AutoRegister('rtdd_caipu.RecipeScreen')
class CookRecipe(baseScreen):
screenTools = ScreenTools.GetTools('CookRecipe')
buttonBinder = screenTools.ButtonCallFuncBackBinder
def __init__(self, *args):
super(CookRecipe, self).__init__(*args)
self.page = 0
self.pageData = allCookRecipe[self.page]
def Create(self):
self.screenTools.Binding(self)
lastButton = self.GetBaseUIControl(RootScreenPathHead + '/image/stack_panel1/last').asButton()
nextButton = self.GetBaseUIControl(RootScreenPathHead + '/image/stack_panel1/next').asButton()
lastButton.AddTouchEventParams()
nextButton.AddTouchEventParams()
lastButton.SetButtonTouchUpCallback(self.LastPage)
nextButton.SetButtonTouchUpCallback(self.NextPage)
self.anyStepControlRoot = self.GetBaseUIControl(RootScreenPathHead + '/image/stack_panel')
self.anyStemControlItemCells = []
for i in range(1, 5):
self.anyStemControlItemCells.append(
self.anyStepControlRoot.GetChildByName('item_cell{}'.format(i)).GetChildByName(
'item_renderer'
).asItemRenderer()
)
self.splitStepControlRoot = self.GetBaseUIControl(RootScreenPathHead + '/image/recipe3')
self.splitStepControl = []
for i in range(1, 5):
self.splitStepControl.append(
self.splitStepControlRoot.GetChildByName('recipe_list{}'.format(i))
)
self.Build()
def RenderItem(self, itemRender, itemInfo):
if not itemInfo:
itemRender.SetVisible(False, False)
return
itemName = itemInfo['itemName']
count = itemInfo['count']
itemRender.SetUiItem(itemName, 0)
if count <= 1:
itemRender.GetChildByName('label').SetVisible(False, False)
else:
itemRender.GetChildByName('label').SetVisible(True, False)
itemRender.GetChildByName('label').asLabel().SetText(str(count), False)
def Build(self):
self.RenderItem(
self.anyStemControlItemCells[0],
{'itemName': self.pageData.get('publicResult', ''), 'count': 1}
)
for _ in range(1, 4):
self.RenderItem(
self.anyStemControlItemCells[_],
self.pageData.get('publicStep', [{}, {}, {}, ])[_ - 1]
)
splitStep = self.pageData.get('splitStep', [])
for index in range(4):
control = self.splitStepControl[index]
control.SetVisible(True, False)
for j in range(1, 3):
infoIndex = index * 2 + j - 1
control_j = control.GetChildByName('recipe{}'.format(j)).GetChildByName('recipe')
if infoIndex >= len(splitStep):
control_j.SetVisible(False, False)
continue
control_j.SetVisible(True, False)
splitStepInfo = splitStep[infoIndex]
for k in range(1, 4):
itemCell = control_j.GetChildByName('item{}'.format(k)).asItemRenderer()
self.RenderItem(itemCell, splitStepInfo.get('items', [{}, {}, {}])[k - 1])
itemCell = control_j.GetChildByName('item4').asItemRenderer()
self.RenderItem(itemCell, {'itemName': splitStepInfo.get('result', ''), 'count': 1})
def LastPage(self, args):
if self.page <= 0: return
self.page -= 1
self.pageData = allCookRecipe[self.page]
self.Build()
def NextPage(self, args):
if self.page >= len(allCookRecipe) - 1: return
self.page += 1
self.pageData = allCookRecipe[self.page]
self.Build()
@buttonBinder(btte.TouchUp, RootScreenPathHead + '/close')
def Close(self, args):
clientApi.PopScreen()