Advertisement
GauHelldragon

SE - Metal Display

Jan 6th, 2016 (edited)
175
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.41 KB | None | 0 0
  1. class part
  2. {
  3.     public string partName;
  4.     public int count;
  5.    
  6.     public part(string name)
  7.     {
  8.         this.partName = name;
  9.         this.count = 0;
  10.     }
  11. }  
  12.  
  13. class partList
  14. {
  15.     public List<part> myParts;
  16.  
  17.     public partList() {
  18.         myParts = new List<part>();
  19.     }
  20.    
  21.     public void addNewPart(string name) {
  22.         myParts.Add(new part(name));
  23.     }
  24.    
  25.     public part getPart(string name) {
  26. if (name.Contains("Ore") && !name.Contains("Ice") ) {return null;}
  27.         for ( int i = 0; i < myParts.Count ; i++ ) {
  28.             part myPart = myParts[i];
  29.             if ( name.Contains(myPart.partName) ) { return myPart; }
  30.            
  31.         }
  32.         return null;
  33.        
  34.     }
  35.     public void increaseCount(string name,int count) {
  36.         part myPart = getPart(name);
  37.         if ( myPart != null ) { myPart.count += count; }
  38.     }
  39.     public int getPartCount(string name) {
  40.         part myPart = getPart(name);
  41.         if ( myPart != null ) { return myPart.count; }
  42.         return 0;
  43.     }
  44.    
  45.  
  46.  
  47. }
  48.  
  49. class display
  50. {
  51.     public List<IMyTerminalBlock> panelList;
  52.    
  53.     public display(IMyGridTerminalSystem grid) {
  54.         panelList = new List<IMyTerminalBlock>();
  55.         grid.SearchBlocksOfName("Metal-Panel",panelList);
  56.     }
  57.     public void print(string text,bool append = false)
  58.     {
  59.         for ( int i = 0; i < panelList.Count; i++ ) {
  60.             IMyTextPanel panel = (IMyTextPanel)panelList[i];
  61.             panel.WriteText(text,append);
  62.            
  63.         }
  64.        
  65.     }
  66.     public void refresh()
  67.     {
  68.         for ( int i = 0; i < panelList.Count; i++ ) {
  69.             panelList[i].GetActionWithName("IncreaseFontSize").Apply(panelList[i]);
  70.             panelList[i].GetActionWithName("DecreaseFontSize").Apply(panelList[i]);
  71.         }
  72.     }
  73.    
  74. }
  75.  
  76. public Program()
  77. {
  78.     Runtime.UpdateFrequency = UpdateFrequency.Update100;
  79.     //This makes the program automatically run every 100 ticks.
  80. }
  81.        
  82. void Main(string argument)
  83. {
  84.     //IMyTextPanel tPanel = GridTerminalSystem.GetBlockWithName("Metal-Panel") as IMyTextPanel;
  85.     display tPanel = new display(GridTerminalSystem);
  86.    
  87.     List<IMyTerminalBlock> containers = new List<IMyTerminalBlock>();
  88.     GridTerminalSystem.GetBlocks(containers);
  89.    
  90.    
  91.  
  92.     partList parts = new partList();
  93.    
  94.     List<string> partNames = new List<string> ( new string[] {
  95.         "Iron",
  96.         "Nickel",
  97.         "Silicon",
  98.         "Cobalt",
  99.         "Silver",
  100.         "Gold",
  101.         "Magnesium",
  102.         "Platinum",
  103.         "Stone",
  104. "Ice",
  105. "Uranium"
  106.        
  107.     });
  108.    
  109.     for ( int i = 0; i < partNames.Count; i++ ) {
  110.         parts.addNewPart(partNames[i]);
  111.     }
  112.    
  113.     tPanel.print("---System Metals---\n");
  114.    
  115.     for ( int i = 0; i < containers.Count; i++ ) {
  116.         IMyTerminalBlock block = containers[i];
  117.         //for ( int i2 = 0; i < block.GetInventoryCount(); i2++ ) {
  118.             VRage.Game.ModAPI.Ingame.IMyInventory inventory;
  119.             inventory = block.GetInventory(0);
  120.             if ( block is IMyRefinery ) { inventory = block.GetInventory(1); }
  121.             //inventory = block.GetInventory(i2);
  122.             if ( inventory != null ) {
  123.                 List<VRage.Game.ModAPI.Ingame.MyInventoryItem> items = new List<VRage.Game.ModAPI.Ingame.MyInventoryItem>();
  124.                 inventory.GetItems(items,null);
  125.                 for ( int i3 = 0; i3 < items.Count; i3++ ) {
  126.                     VRage.Game.ModAPI.Ingame.MyInventoryItem item = items[i3];
  127.                     string myName = item.Type.ToString();
  128.                     parts.increaseCount(myName, (int)item.Amount);
  129.                    
  130.                 }
  131.             }
  132.         //}
  133.     }
  134.    
  135.     for ( int i = 0; i < partNames.Count; i++ ) {
  136.         string partName = partNames[i];
  137.         int partCount = parts.getPartCount(partName);
  138. if ( partName.Contains("Stone") ) { partName = "Gravel"; }
  139.         tPanel.print(partName + " : " + partCount + "\n", true);
  140.        
  141.     }
  142.    
  143.     tPanel.refresh();
  144. }
  145.    
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement