Пример #1
0
    protected virtual void LookForAttachedModules()
    {
        VicisMod.log(getPrefix(), "Looking neigbors");

        List <MassCrateModule> list = VicisMod.checkSurrounding <MassCrateModule>(this, out encounteredNullSegment);

        foreach (MassCrateModule m in list)
        {
            if (manager == null)
            {
                m.manager.Add(this);
            }
            else if (manager != m.manager)
            {
                manager.Merge(m.manager);
            }
            m.AddNeighbor(this);
            AddNeighbor(m);
        }

        VicisMod.log(getPrefix(), "I now have " + neighbors.Count + " neighbors");

        // FIRST!
        if (manager == null)
        {
            VicisMod.log(getPrefix(), "Creating a new manager for myself");
            MassCrateModuleManager newManager = new MassCrateModuleManager();
            newManager.Add(this);
        }
    }
Пример #2
0
        protected virtual void LookForAttachedModules()
        {
            VicisMod.log(getPrefix(), "Looking for storage");
            bool ignore;
            List <MassCrateModule> list = VicisMod.checkSurrounding <MassCrateModule>(this, out ignore);

            if (list.Count > 0)
            {
                mcm       = list[0];
                mcm.taker = this;
            }
        }
Пример #3
0
    protected virtual void pickUpFromConveyors()
    {
        bool ignore;
        List <ConveyorEntity> list = VicisMod.checkSurrounding <ConveyorEntity>(this, out ignore);

        VicisMod.log(getPrefix(), "Found " + list.Count + " ConveyorEntities");
        for (int i = 0; i < list.Count && getStoredItemsCount() < maxItems; ++i)
        {
            ConveyorEntity c = list[i];
            if (!isConveyorFacingMe(c))
            {
                continue;
            }
            if (!c.mbReadyToConvey && c.mrCarryTimer <= 0.2f)
            {
                ItemBase item = null;
                if (c.mCarriedItem != null)
                {
                    item = c.mCarriedItem;
                }
                if (c.mCarriedCube != 0)
                {
                    item = ItemManager.SpawnCubeStack(c.mCarriedCube, c.mCarriedValue, 1);
                }
                // Wha... How?
                if (item == null)
                {
                    continue;
                }

                // Check if I can add it to the items list
                if (!addItem(item))
                {
                    return;
                }

                c.mCarriedItem  = null;
                c.mCarriedCube  = 0;
                c.mCarriedValue = 0;
                c.RemoveCube();
                c.FinaliseOffloadingCargo();
            }
        }
    }
Пример #4
0
    protected virtual void dropOffToConveyors()
    {
        bool ignore;
        List <ConveyorEntity> list = VicisMod.checkSurrounding <ConveyorEntity>(this, out ignore);

        VicisMod.log(getPrefix(), "Found " + list.Count + " ConveyorEntities");
        string msg = items.Count + ": ";

        foreach (ItemBase it in items)
        {
            msg += it.GetDisplayString() + ", ";
        }
        VicisMod.log(getPrefix(), "Currently storing " + msg);
        for (int i = 0; i < list.Count && items.Count > 0; ++i)
        {
            ConveyorEntity c = list[i] as ConveyorEntity;
            if (!isConveyorNotFacingMe(c))
            {
                VicisMod.log(getPrefix(), "Conveyor is either not facing somewhere else: " + isConveyorNotFacingMe(c));
                continue;
            }
            if (c.mbReadyToConvey && c.mrLockTimer == 0f)
            {
                VicisMod.log(getPrefix(), "Ready to convey, will be giving " + items[0].GetDisplayString() + ", a " + items[0].mType);
                if (items[0].mType == ItemType.ItemCubeStack)
                {
                    ItemCubeStack a = items[0] as ItemCubeStack;
                    c.AddCube(a.mCubeType, a.mCubeValue, 1);
                    c.mItemForwards = forwards;
                    --a.mnAmount;
                    if (a.mnAmount == 0)
                    {
                        VicisMod.log(getPrefix(), "Removing cube " + a.GetDisplayString() + " from items list");
                        items.RemoveAt(0);
                    }
                }
                else if (items[0].mType == ItemType.ItemStack)
                {
                    ItemStack a = ItemBaseUtil.newInstance(items[0]) as ItemStack;
                    a.mnAmount = 1;
                    ItemBaseUtil.decrementStack(items[0], 1);
                    c.AddItem(a);
                    c.mItemForwards = forwards;
                    if (ItemBaseUtil.getAmount(items[0]) == 0)
                    {
                        VicisMod.log(getPrefix(), "Removing item " + a.GetDisplayString() + " from items list");
                        items.RemoveAt(0);
                    }
                }
                else
                {
                    c.AddItem(items[0]);
                    c.mrCarryTimer       = 1f;
                    c.mrVisualCarryTimer = 1f;
                    c.mItemForwards      = forwards;
                    items.RemoveAt(0);
                }
            }
            else
            {
                VicisMod.log(getPrefix(), "Conveyor is not ready to convey");
            }
        }
    }