private void ToggleClicked(ReceptacleToggle toggle) { if (!depositObjectMap.ContainsKey(toggle)) { Debug.LogError("Recipe not found on recipe list."); } else { if ((Object)selectedEntityToggle != (Object)null) { bool flag = CanDepositEntity(depositObjectMap[selectedEntityToggle]); requestSelectedEntityBtn.isInteractable = flag; SetImageToggleState(selectedEntityToggle.toggle, flag ? ImageToggleState.State.Inactive : ImageToggleState.State.Disabled); } selectedEntityToggle = toggle; entityPreviousSelectionMap[targetReceptacle] = entityToggles.IndexOf(toggle); selectedDepositObjectTag = depositObjectMap[toggle].tag; UpdateAvailableAmounts(null); UpdateState(null); } }
public void Initialize(SingleEntityReceptacle target) { if ((Object)target == (Object)null) { Debug.LogError("SingleObjectReceptacle provided was null."); } else { targetReceptacle = target; base.gameObject.SetActive(true); depositObjectMap = new Dictionary <ReceptacleToggle, SelectableEntity>(); entityToggles.ForEach(delegate(ReceptacleToggle rbi) { Object.Destroy(rbi.gameObject); }); entityToggles.Clear(); Tag[] possibleDepositObjectTags = target.possibleDepositObjectTags; ReceptacleToggle newToggle; foreach (Tag tag in possibleDepositObjectTags) { List <GameObject> prefabsWithTag = Assets.GetPrefabsWithTag(tag); if ((Object)targetReceptacle.rotatable == (Object)null) { prefabsWithTag.RemoveAll(delegate(GameObject go) { IReceptacleDirection component3 = go.GetComponent <IReceptacleDirection>(); return(component3 != null && component3.Direction != targetReceptacle.Direction); }); } List <IHasSortOrder> list = new List <IHasSortOrder>(); foreach (GameObject item in prefabsWithTag) { IHasSortOrder component = item.GetComponent <IHasSortOrder>(); if (component != null) { list.Add(component); } } Debug.Assert(list.Count == prefabsWithTag.Count, "Not all entities in this receptacle implement IHasSortOrder!"); list.Sort((IHasSortOrder a, IHasSortOrder b) => a.sortOrder - b.sortOrder); foreach (IHasSortOrder item2 in list) { GameObject gameObject = (item2 as MonoBehaviour).gameObject; GameObject gameObject2 = Util.KInstantiateUI(entityToggle, requestObjectList, false); gameObject2.SetActive(true); newToggle = gameObject2.GetComponent <ReceptacleToggle>(); IReceptacleDirection component2 = gameObject.GetComponent <IReceptacleDirection>(); string properName = gameObject.GetProperName(); newToggle.title.text = properName; Sprite entityIcon = GetEntityIcon(gameObject.PrefabID()); if ((Object)entityIcon == (Object)null) { entityIcon = elementPlaceholderSpr; } newToggle.image.sprite = entityIcon; newToggle.toggle.onClick += delegate { ToggleClicked(newToggle); }; newToggle.toggle.onPointerEnter += delegate { CheckAmountsAndUpdate(null); }; depositObjectMap.Add(newToggle, new SelectableEntity { tag = gameObject.PrefabID(), direction = (component2?.Direction ?? SingleEntityReceptacle.ReceptacleDirection.Top), asset = gameObject }); entityToggles.Add(newToggle); } } selectedEntityToggle = null; if (entityToggles.Count > 0) { if (entityPreviousSelectionMap.ContainsKey(targetReceptacle)) { int index = entityPreviousSelectionMap[targetReceptacle]; ToggleClicked(entityToggles[index]); } else { subtitleLabel.SetText(Strings.Get(subtitleStringSelect).ToString()); requestSelectedEntityBtn.isInteractable = false; descriptionLabel.SetText(Strings.Get(subtitleStringSelectDescription).ToString()); HideAllDescriptorPanels(); } } onStorageChangedHandle = targetReceptacle.gameObject.Subscribe(-1697596308, CheckAmountsAndUpdate); onOccupantValidChangedHandle = targetReceptacle.gameObject.Subscribe(-1820564715, OnOccupantValidChanged); UpdateState(null); SimAndRenderScheduler.instance.Add(this, false); } }