Survivalcraft API 1.8.2.3 v1.8.2.3
Survivalcraft 2.4
载入中...
搜索中...
未找到
RecipaediaRecipesScreen.cs
浏览该文件的文档.
1using System.Xml.Linq;
2using Engine;
3
4namespace Game {
10
11 public int m_recipeIndex;
12 public List<CraftingRecipe> m_craftingRecipes = [];
13 public int RecipesCount;
14 public const string fName = "RecipaediaRecipesScreen";
15
16 public static RecipaediaRecipesScreen Default => new();
17
19 XElement node = ContentManager.Get<XElement>("Screens/RecipaediaRecipesScreen");
20 LoadContents(this, node);
23 m_prevRecipeButton = Children.Find<ButtonWidget>("PreviousRecipe");
24 m_nextRecipeButton = Children.Find<ButtonWidget>("NextRecipe");
25 }
26
27 public override void Enter(object[] parameters) {
28 int value = (int)parameters[0];
29 m_craftingRecipes.Clear();
30 m_craftingRecipes.AddRange(CraftingRecipesManager.Recipes.Where(r => r.ResultValue == value && r.ResultValue != 0));
32 m_recipeIndex = 0;
33 }
34
35 public override void Update() {
37 if (m_recipeIndex < m_craftingRecipes.Count) {
39 if (craftingRecipe.RequiredHeatLevel == 0f) {
40 m_craftingRecipeWidget.Recipe = craftingRecipe;
41 m_craftingRecipeWidget.NameSuffix = string.Format(LanguageControl.GetContentWidgets(fName, 1), m_recipeIndex + 1);
42 m_craftingRecipeWidget.IsVisible = true;
43 m_smeltingRecipeWidget.IsVisible = false;
44 }
45 else {
46 m_smeltingRecipeWidget.Recipe = craftingRecipe;
47 m_smeltingRecipeWidget.NameSuffix = string.Format(LanguageControl.GetContentWidgets(fName, 1), m_recipeIndex + 1);
48 m_smeltingRecipeWidget.IsVisible = true;
49 m_craftingRecipeWidget.IsVisible = false;
50 }
51 }
52 else {
53 m_craftingRecipeWidget.IsVisible = false;
54 m_smeltingRecipeWidget.IsVisible = false;
55 }
57 "EditRecipeScreenWidget",
58 loader => {
59 loader.EditRecipeScreenWidget(this);
60 return false;
61 }
62 );
63 }
64 m_prevRecipeButton.IsEnabled = m_recipeIndex > 0;
65 m_nextRecipeButton.IsEnabled = m_recipeIndex < RecipesCount - 1;
66 if (m_prevRecipeButton.IsClicked) {
68 }
69 if (m_nextRecipeButton.IsClicked) {
71 }
72 if (Input.Back
73 || Input.Cancel
74 || Children.Find<ButtonWidget>("TopBar.Back").IsClicked) {
76 }
77 }
78 }
79}
static int Min(int x1, int x2)
static int Max(int x1, int x2)
readonly WidgetsList Children
static object Get(Type type, string name)
static List< CraftingRecipe > Recipes
static string GetContentWidgets(string name, string prop)
override void Enter(object[] parameters)
static RecipaediaRecipesScreen Default
static Screen PreviousScreen
上一个Screen
static void SwitchScreen(string name, params object[] parameters)
virtual void LoadContents(object eventsTarget, XElement node)
static void HookAction(string HookName, Func< ModLoader, bool > action)
执行Hook