public void InitializeSelectionPhase() { searcherString = ""; selectionPhaseParent.SetActive(true); buildPhaseParent.SetActive(false); //initialize window on screen if (initialized) { CloseUI(false); // prevent initializing twice by closing UI if already initialized } initialized = true; Activate(); cursorScript.gameObject.SetActive(false); cursorScript.SetBuilder(this); contentsArray = new Transform[] { smallContents, mediumContents, largeContents }; contentTexts = new GameObject[] { smallText, mediumText, largeText }; foreach (GameObject obj in contentTexts) { obj.SetActive(false); } GetComponentInChildren <ShipBuilderPartDisplay>().Initialize(this); player.SetIsInteracting(true); partDict = new Dictionary <DWInventoryButton, EntityBlueprint.PartInfo>(); // hide the buttons and yard tips if interacting with a trader List <EntityBlueprint.PartInfo> parts = player.GetInventory(); if (parts != null) { for (int i = 0; i < parts.Count; i++) { parts[i] = ShipBuilder.CullSpatialValues(parts[i]); } } foreach (EntityBlueprint.PartInfo part in parts) { if (part.abilityID == 10) { AddDronePart(part); } } foreach (EntityBlueprint.PartInfo part in player.blueprint.parts) { if (part.abilityID == 10) { AddDronePart(part); } } var partsToAdd = new List <ShellPart>(); foreach (Entity ent in player.GetUnitsCommanding()) { if (!((ent as Drone) && ent.GetComponentInChildren <TractorBeam>())) { continue; } var target = ent.GetComponentInChildren <TractorBeam>().GetTractorTarget(); if (target && target.GetComponent <ShellPart>()) { partsToAdd.Add(target.GetComponent <ShellPart>()); } } if (player.GetTractorTarget() && player.GetTractorTarget().GetComponent <ShellPart>()) { partsToAdd.Add(player.GetTractorTarget().GetComponent <ShellPart>()); } foreach (ShellPart part in partsToAdd) { var info = part.info; info = ShipBuilder.CullSpatialValues(info); if (info.abilityID == 10) { int size = ResourceManager.GetAsset <PartBlueprint>(info.partID).size; var button = Instantiate(displayButtonPrefab, contentsArray[size]).GetComponent <DWInventoryButton>(); button.handler = selectionDisplay; button.workshop = this; contentTexts[size].SetActive(true); button.part = info; partDict.Add(button, info); } player.cursave.partInventory.Add(info); Destroy(part.gameObject); } phase = DroneWorkshopPhase.SelectionPhase; // activate windows gameObject.SetActive(true); }