Whiplash141

Tank's Stone Ejection Code

Jan 17th, 2016
155
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.00 KB | None | 0 0
  1. List<IMyTerminalBlock> ConnectorList = new List<IMyTerminalBlock>();
  2. List<IMyTerminalBlock> DrillList  = new List<IMyTerminalBlock>();
  3. List<IMyTerminalBlock> StorageList   = new List<IMyTerminalBlock>();
  4. List<IMyTerminalBlock> EjectorList   = new List<IMyTerminalBlock>();
  5.  
  6. public string ShipTag = "[uM/B]";
  7.  
  8. void Main()
  9. {
  10.  
  11. GridTerminalSystem.GetBlocksOfType<IMyShipConnector>(ConnectorList,PredicateConnector);
  12. GridTerminalSystem.GetBlocksOfType<IMyShipDrill>(DrillList,PredicateDrill);
  13. GridTerminalSystem.GetBlocksOfType<IMyShipConnector>(EjectorList,PredicateEjector);
  14.  
  15. var EjectorInv = (EjectorList[0] as IMyInventoryOwner).GetInventory(0);
  16.  
  17. StorageList = DrillList;
  18. StorageList.AddRange(ConnectorList);
  19.  
  20.     for (int i = 0; i < StorageList.Count; i++)
  21.     {
  22.         var StorageInv = (StorageList[i] as IMyInventoryOwner).GetInventory(0);
  23.         var StorageItems = (StorageInv as IMyInventory).GetItems();
  24.  
  25.         for (int j = StorageItems.Count -1; j >= 0; j--)
  26.         {
  27.  
  28.             if (StorageItems[j].Content.SubtypeName == "Stone" && StorageItems[j].Content.ToString().Contains("Ore"))
  29.             {
  30.                 float EjectorFreeVol = (float) EjectorInv.MaxVolume - (float) EjectorInv.CurrentVolume;
  31.                 int TransferQty = (int)Math.Floor(EjectorFreeVol*(1/0.37)); //Using density of stone in SE
  32.                 //StorageInv.TransferItemsTo(EjectorInv,j, 1, true,TransferQty);
  33.                 bool isTransferrable = StorageInv.GetInventory(0).TransferItemTo(targetInventory,j,1,true,TransferQty);
  34.             }
  35.         }
  36.     }
  37. }
  38.  
  39. bool PredicateConnector(IMyTerminalBlock Block)
  40. {
  41.     return Block.CustomName.Contains(ShipTag + " Connector"); //returns true if the block contains the string "Tag"
  42. }
  43.  
  44. bool PredicateDrill(IMyTerminalBlock Block)
  45. {
  46.     return Block.CustomName.Contains(ShipTag + " Drill"); //returns true if the block contains the string "Tag"
  47. }
  48.  
  49. bool PredicateEjector(IMyTerminalBlock Block)
  50. {
  51.     return Block.CustomName.Contains(ShipTag + " " + "Ejector"); //returns true if the block contains the string "Tag"
  52. }
Advertisement
Add Comment
Please, Sign In to add comment