Пример #1
0
        public static bool Prefix(StorageContainer __instance)
        {
            if (!__instance.enabled)
            {
                return(false);
            }
            Constructable component = __instance.gameObject.GetComponent <Constructable>();

            if (!component || component.constructed)
            {
                if (__instance.IsEmpty())
                {
                    HandReticle.main.SetInteractText(__instance.hoverText, "Empty");
                }
                else
                {
                    List <TechType> itemTypes = __instance.container.GetItemTypes();
                    if (itemTypes.Count() == 1)
                    {
                        HandReticle.main.SetInteractText(__instance.hoverText, string.Format("{0} {1}", __instance.container.count, Language.main.Get(itemTypes[0].AsString())));
                    }
                    else
                    {
                        HandReticle.main.SetInteractText(__instance.hoverText, string.Format("{0} items", __instance.container.count));
                    }
                }
                HandReticle.main.SetIcon(HandReticle.IconType.Hand, 1f);
            }
            return(false);
        }
        public static string Getfullstate(StorageContainer _storageContainer)
        {
            Logger.Log(Logger.Level.Debug, "call Getfullstate");

            var items      = _storageContainer.container.GetItemTypes();
            int itemscount = _storageContainer.container.count;

            Logger.Log(Logger.Level.Debug, $"Itemcount all Items = {itemscount.ToString()}");
            int origSize = _storageContainer.container.sizeX * _storageContainer.container.sizeY;

            Logger.Log(Logger.Level.Debug, $"Original Max Size = {origSize.ToString()}");
            int usedSize = 0;

            foreach (var i in items)
            {
                var size = TechData.GetItemSize(i);
                int numberofsingletechtype = (_storageContainer.container.GetItems(i)).Count;
                Logger.Log(Logger.Level.Debug, $"Techtype = {i.ToString()}");
                Logger.Log(Logger.Level.Debug, $"Number of items in this Techtype = {numberofsingletechtype.ToString()}");
                usedSize += size.x * size.y * numberofsingletechtype;
                Logger.Log(Logger.Level.Debug, $"Used Space of this Techtype = {(size.x * size.y * numberofsingletechtype).ToString()}");
            }
            var sizeLeft = origSize - usedSize;

            Logger.Log(Logger.Level.Debug, $"Used Space off all Techtypes = {usedSize.ToString()}");

            StringBuilder stringBuilder = new StringBuilder();

            if (!_storageContainer.container.HasRoomFor(1, 1))
            {
                Logger.Log(Logger.Level.Debug, "Container is Full - way");
                stringBuilder.AppendLine("Full - " + itemscount + " Items stored");
                stringBuilder.AppendLine($"{sizeLeft} of {origSize} free");
            }
            else if (_storageContainer.IsEmpty())
            {
                Logger.Log(Logger.Level.Debug, "Container is empty - way");
                stringBuilder.AppendLine("Empty");
                stringBuilder.AppendLine($"{sizeLeft} of {origSize} free");
            }
            else
            {
                Logger.Log(Logger.Level.Debug, "Container Contains X Item - way");
                stringBuilder.AppendLine(itemscount + " Items - " + usedSize + " used");
                stringBuilder.AppendLine($"{sizeLeft} of {origSize} free");
            }
            return(stringBuilder.ToString());
        }
Пример #3
0
        private IEnumerator Sort()
        {
            isSorting       = false;
            sortableItems   = 0;
            unsortableItems = container.container.count;

            if (!initialized || container.IsEmpty())
            {
                yield break;
            }

            AccumulateTargets();
            if (NoTargets())
            {
                yield break;
            }

            if (SortFilteredTargets(false))
            {
                isSorting = true;
            }
            else if (SortFilteredTargets(true))
            {
                isSorting = true;
            }
            else
            {
                foreach (AutosortTarget target in anyTargets)
                {
                    foreach (var item in container.container.ToList())
                    {
                        if (target.CanAddItem(item.item))
                        {
                            SortItem(item.item, target);
                            sortableItems++;
                            unsortableItems--;
                            isSorting = true;
                            yield break;
                        }
                    }
                    yield return(null);
                }
            }

            yield break;
        }
Пример #4
0
        private IEnumerator Sort()
        {
            sortedItem      = false;
            sortableItems   = 0;
            unsortableItems = container.container.count;

            if (!initialized || container.IsEmpty())
            {
                isSorting = false;
                yield break;
            }

            AccumulateTargets();
            if (NoTargets())
            {
                isSorting = false;
                yield break;
            }

            isSorting = true;
            yield return(SortFilteredTargets(false));

            if (sortedItem)
            {
                yield break;
            }

            yield return(SortFilteredTargets(true));

            if (sortedItem)
            {
                yield break;
            }

            yield return(SortAnyTargets());

            if (sortedItem)
            {
                yield break;
            }

            isSorting = false;
        }