菜单功能
This commit is contained in:
1 parent
a647878ac1
commit
3b63794fe4
42 files changed
+1627
-106
No files matched your search
@@ -0,0 +1,124 @@
|
||||
# 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 = [
|
||||
{
|
||||
'publicResult': 'rtdd:oilpan', # 共有步骤产生的结果
|
||||
'publicStep': [
|
||||
{'itemName': 'rtdd:spatula', 'count': 1},
|
||||
{'itemName': 'rtdd:oilcan', 'count': 1},
|
||||
{},
|
||||
], # 共有步骤
|
||||
'splitStep': [
|
||||
{
|
||||
'result': 'rtdd:plate_24', # 分步骤产生的结果
|
||||
'items': [{}, {}, {}], # 分步骤的物品
|
||||
}
|
||||
], # 分步骤,一页最多8个分步骤
|
||||
}, # 这是一页显示的数据
|
||||
{
|
||||
'publicResult': 'rtdd:oilpan',
|
||||
'publicStep': [
|
||||
{'itemName': 'rtdd:spatula', 'count': 1},
|
||||
{'itemName': 'rtdd:oilcan', 'count': 1},
|
||||
{},
|
||||
],
|
||||
'splitStep': []
|
||||
}
|
||||
]
|
||||
|
||||
|
||||
@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.SetUiItem('minecraft:air', 0)
|
||||
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()
|
||||
Reference in new issue
Block a user