private static void PostfixInvalidate(DepotWindowVehicleListItemStoragesView __instance, Transform ____itemsContainer, int?____version)
        {
            StorageViewHelper instanceData;

            if (_instancesData.TryGetValue(__instance, out instanceData))
            {
                instanceData.Invalidate(____version);
            }
        }
        private static DepotWindowVehicleListItemStoragesView InstantinateStoragesView(Transform transform, Vehicle vehicle)
        {
            if (_storagesViewTemplate == null)
            {
                var listItem = UnityEngine.Object.Instantiate <DepotWindowVehicleListItem>(R.Game.UI.DepotWindow.DepotWindowVehicleListItem);
                _storagesViewTemplate = listItem.StoragesView;
                _storagesViewTemplate.transform.SetParent(null);
                _storagesViewTemplate.gameObject.SetActive(false);
                listItem.DestroyGameObject();
            }

            var result = UnityEngine.Object.Instantiate <DepotWindowVehicleListItemStoragesView>(_storagesViewTemplate, transform);

            result.Initialize(vehicle);
            return(result);
        }
        public static DepotWindowVehicleListItemStoragesView InstantinateStoragesViewForVehicleWindow(Transform transform, Vehicle vehicle)
        {
            DepotWindowVehicleListItemStoragesView result = InstantinateStoragesView(transform, vehicle);
            var render = result.gameObject.GetComponent <CanvasRenderer>();

            if (render)
            {
                render.SetAlpha(0);
                foreach (Text text in result.GetComponentsInChildren <Text>(true))
                {
                    text.color = Color.white;
                }
            }

            return(result);
        }
        private static bool PrefixInvalidate(DepotWindowVehicleListItemStoragesView __instance, Transform ____itemsContainer, Vehicle ____vehicle)
        {
            if (!(____vehicle is Train))
            {
                return(true);
            }
            StorageViewHelper instanceData;

            if (!_instancesData.TryGetValue(__instance, out instanceData))
            {
                Type type            = ____itemsContainer.GetType();
                var  newInstanceData = new StorageViewHelper(__instance, ____vehicle);
                _instancesData.Add(__instance, newInstanceData);
            }
            return(true);
        }
        public StorageViewHelper(DepotWindowVehicleListItemStoragesView storagesView, Vehicle vehicle) : base()
        {
            this._vehicle       = vehicle;
            _origItemsContainer = storagesView.transform.Find("ItemsContainer");
            _origItemsContainer.Clear(true);

            var origCapacityValueContainer = storagesView.transform.Find("CapacityValueContainer");

            _capacityOverflowTextContainer = storagesView.transform.Find("OverflowCountTextContainer");
            _capacityOverflowText          = _capacityOverflowTextContainer.GetComponentInChildren <Text>();

            Transform capacityValueContainer = origCapacityValueContainer;
            Transform itemsContainer;

            for (var i = 0; i < MAX_ITEMS_COUNT; i++)
            {
                FileLog.Log(i.ToString());
                itemsContainer = UnityEngine.Object.Instantiate <RectTransform>((RectTransform)_origItemsContainer, storagesView.transform);
                itemsContainer.SetSiblingIndex(i * 2);
                itemsContainer.name = _origItemsContainer.name + (i + 1);

                if (i > 0)
                {
                    capacityValueContainer      = UnityEngine.Object.Instantiate <RectTransform>((RectTransform)origCapacityValueContainer, storagesView.transform);
                    capacityValueContainer.name = origCapacityValueContainer.name + (i + 1);
                }
                capacityValueContainer.SetSiblingIndex(i * 2 + 1);

                _storageData[i] = new StorageData
                {
                    ItemsContainer         = itemsContainer,
                    CapacityValueContainer = capacityValueContainer,
                    CapacityValueText      = capacityValueContainer.GetComponentInChildren <Text>()
                };
            }

            ClearItems();
        }