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);
     }
 }