Esempio n. 1
0
 public static void RecreateLinker(Vector3i pos, TransportPipeLinker linker)
 {
     for (int i = -1; i <= 1; i++)
     {
         for (int j = -1; j <= 1; j++)
         {
             for (int k = -1; k <= 1; k++)
             {
                 if (i == 0 && j == 0 && k == 0)
                 {
                     Vector3i          newPos = MakeWorldMod(new Vector3i(pos.x + i, pos.y + j, pos.z + k));
                     TransportPipeInfo info   = null;
                     if (TransportPipeManager.pipesInfo.TryGetValue(newPos, out info))
                     {
                         if (linker.ContainsConveyor(info) == false)
                         {
                             linker.AddConveyor(info);
                         }
                     }
                     continue;
                 }
                 if ((i == 0 && j == 0) || (i == 0 && k == 0) || (j == 0 && k == 0))
                 {
                     Vector3i          newPos = MakeWorldMod(new Vector3i(pos.x + i, pos.y + j, pos.z + k));
                     TransportPipeInfo info   = null;
                     if (TransportPipeManager.pipesInfo.TryGetValue(newPos, out info))
                     {
                         if (info.beltLinker == null)
                         {
                             info.beltLinker = linker;
                             RecreateLinker(newPos, linker);
                         }
                     }
                     else if (World.GetBlock(newPos) is BaseTransportPipeBlock || World.GetBlock(newPos) is PipeSlotBlock)
                     {
                         info            = new TransportPipeInfo();
                         info.pos        = newPos;
                         info.beltLinker = linker;
                         info.type       = World.GetBlock(newPos) is WoodenTransportPipeBlock ? PIPETYPE.Wooden : PIPETYPE.Electric;
                         TransportPipeManager.pipesInfo.TryAdd(newPos, info);
                         RecreateLinker(newPos, linker);
                     }
                 }
             }
         }
     }
 }
Esempio n. 2
0
 public void AbsorbLinker(TransportPipeLinker linker)
 {
     foreach (TransportPipeInfo con in linker.conveyors)
     {
         con.beltLinker = this;
         AddConveyor(con);
     }
     foreach (ConnectorObject con in linker.inputConveyors)
     {
         AddConnector(true, con);
     }
     foreach (ConnectorObject con in linker.outputConveyors)
     {
         AddConnector(false, con);
     }
     linker = null;
 }