void DisplayCategoryList() { List <string> CategoryList = new List <string>(); TechRecipe.ProcessorInfo TargetProcessorInfo = CallTechRecipe.GetProcessorRecipe(CallInstallableObjectAct.Info.Name); foreach (var ActorName in TargetProcessorInfo.ActorList) { if (!CallTechValue.GetActorPossible(ActorName)) { continue; } bool isDuplicate = false; foreach (var Item in CategoryList) { if (ActorName == Item) { isDuplicate = true; break; } } if (!isDuplicate) { CategoryList.Add(ActorName); } } int RowLimit = CategoryList.Count; if (RowLimit > CategoryCarrier.transform.childCount) { for (int i = CategoryCarrier.transform.childCount; i < RowLimit; i++) { GameObject.Instantiate(CategoryCarrier.transform.GetChild(0).gameObject, CategoryCarrier.transform); } } else if (RowLimit < CategoryCarrier.transform.childCount) { if (RowLimit == 0) { RowLimit = 1; } for (int i = CategoryCarrier.transform.childCount - 1; i >= RowLimit; i--) { Destroy(CategoryCarrier.transform.GetChild(i).gameObject); } } for (int i = 0; i < RowLimit; i++) { CategoryCarrier.transform.GetChild(i).gameObject.SetActive(false); } for (int i = 0; i < CategoryList.Count; i++) { CategoryCarrier.transform.GetChild(i).gameObject.SetActive(true); CategoryCarrier.transform.GetChild(i).GetChild(0).gameObject.GetComponent <Text>().text = " " + CategoryList[i]; } }
void DisplayItemList(string Category) { TechRecipe.ProcessorInfo TargetProcessorInfo = CallTechRecipe.GetProcessorRecipe(CallInstallableObjectAct.Info.Name); List <TechValue.RecipeInfo> ItemList = new List <TechValue.RecipeInfo>(); int RowLimit = 0; foreach (var Item in CallTechValue.AvailableRecipe) { if (Item.Recipe.RequiredProcessor != null) { string ProcessorType = Item.Recipe.RequiredProcessor.Split('?')[0]; string ProcessorName = Item.Recipe.RequiredProcessor.Split('?')[1]; if (ProcessorType == TargetProcessorInfo.Name && ProcessorName == Category) { ItemList.Add(Item); } } } RowLimit = Mathf.CeilToInt(((float)ItemList.Count + 1) / 3f); if (RowLimit > ItemCarrier.transform.childCount) { for (int i = ItemCarrier.transform.childCount; i < RowLimit; i++) { GameObject.Instantiate(ItemCarrier.transform.GetChild(0).gameObject, ItemCarrier.transform); } } else if (RowLimit < ItemCarrier.transform.childCount) { if (RowLimit == 0) { RowLimit = 1; } for (int i = ItemCarrier.transform.childCount - 1; i >= RowLimit; i--) { Destroy(ItemCarrier.transform.GetChild(i).gameObject); } } for (int i = 0; i < RowLimit; i++) { for (int j = 0; j < 3; j++) { ItemCarrier.transform.GetChild(i).GetChild(j).GetChild(0).gameObject.SetActive(false); } } for (int i = 0; i < RowLimit; i++) { for (int j = 0; j < 3; j++) { if (i == 0 && j == 0) { ItemCarrier.transform.GetChild(i).GetChild(j).GetChild(0).gameObject.SetActive(true); ItemCarrier.transform.GetChild(i).GetChild(j).GetChild(0).GetChild(0).gameObject.GetComponent <Image>().sprite = Resources.Load <Sprite>("GameSystem/InGameUI/Sprite/InsideEmptyCircle"); ItemCarrier.transform.GetChild(i).GetChild(j).GetChild(0).GetChild(1).gameObject.GetComponent <Text>().text = "None"; } else { if (i * 3 + j - 1 >= ItemList.Count) { break; } ItemCarrier.transform.GetChild(i).GetChild(j).GetChild(0).gameObject.SetActive(true); ItemCarrier.transform.GetChild(i).GetChild(j).GetChild(0).GetChild(0).gameObject.GetComponent <Image>().sprite = Resources.Load <Sprite>("GameSystem/Goods/Sprite/" + ItemList[i * 3 + j - 1].Recipe.Type); ItemCarrier.transform.GetChild(i).GetChild(j).GetChild(0).GetChild(1).gameObject.GetComponent <Text>().text = ItemList[i * 3 + j - 1].Recipe.OutputName; } } } CurrentCategory = Category; }
void DisplayProcessorList() { List <string> ItemList = new List <string>(); int RowLimit = 0; if (CategoryCarrier.transform.childCount > 1) { for (int i = 2; i < CategoryCarrier.transform.childCount; i++) { Destroy(CategoryCarrier.transform.GetChild(i).gameObject); } } CategoryCarrier.transform.GetChild(0).gameObject.SetActive(false); for (int i = ItemCarrier.transform.childCount - 1; i > 0; i--) { Destroy(ItemCarrier.transform.GetChild(i).gameObject); } foreach (var Facility in CallTechValue.FacilityList) { if (Facility.Type != "Processor" && Facility.Type != "Assembler") { continue; } TechRecipe.ProcessorInfo TargetProcessorRecipe = CallTechRecipe.GetProcessorRecipe(Facility.Name); if (TargetProcessorRecipe == null) { Debug.Log("There is no " + Facility.Name + " in System"); return; } foreach (var ActorName in TargetProcessorRecipe.ActorList) { if (!CallTechValue.GetActorPossible(ActorName)) { continue; } string TargetName = Facility.Name + "-" + ActorName; bool isDuplicate = false; foreach (var Item in ItemList) { if (TargetName == Item) { isDuplicate = true; break; } } if (!isDuplicate) { ItemList.Add(TargetName); } } } RowLimit = Mathf.CeilToInt((float)ItemList.Count / 3f); if (ItemList.Count == 0) { for (int i = 1; i < 3; i++) { ItemCarrier.transform.GetChild(0).GetChild(i).GetChild(0).gameObject.SetActive(false); } ItemCarrier.transform.GetChild(0).GetChild(0).GetChild(0).GetChild(0).gameObject.GetComponent <Image>().sprite = Resources.Load <Sprite>("GameSystem/InGameUI/Sprite/InsideEmptyCircle"); ItemCarrier.transform.GetChild(0).GetChild(0).GetChild(0).GetChild(1).gameObject.GetComponent <Text>().text = "None"; } else { for (int i = 0; i < 3; i++) { ItemCarrier.transform.GetChild(0).GetChild(i).GetChild(0).gameObject.SetActive(true); } for (int i = 0; i < RowLimit; i++) { if (i != 0) { GameObject.Instantiate(ItemCarrier.transform.GetChild(0).gameObject, ItemCarrier.transform); } int LeftItem = ItemList.Count - (i * 3) + 1; if (LeftItem < 3) { for (int j = 2; j >= LeftItem; j--) { ItemCarrier.transform.GetChild(i).GetChild(j).GetChild(0).gameObject.SetActive(false); } } for (int j = 0; j < 3; j++) { if (i == 0 && j == 0) { ItemCarrier.transform.GetChild(i).GetChild(j).GetChild(0).GetChild(0).gameObject.GetComponent <Image>().sprite = Resources.Load <Sprite>("GameSystem/InGameUI/Sprite/InsideEmptyCircle"); ItemCarrier.transform.GetChild(i).GetChild(j).GetChild(0).GetChild(1).gameObject.GetComponent <Text>().text = "None"; } else { if (i * 3 + j - 1 >= ItemList.Count) { break; } ItemCarrier.transform.GetChild(i).GetChild(j).GetChild(0).GetChild(0).gameObject.GetComponent <Image>().sprite = null; ItemCarrier.transform.GetChild(i).GetChild(j).GetChild(0).GetChild(1).gameObject.GetComponent <Text>().text = ItemList[i * 3 + j - 1]; } } } } CurrentCategory = ""; }