Whiplash141

airlock help

Feb 9th, 2021 (edited)
667
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 1.91 KB | None | 0 0
  1. string _prefix = "[DoorControl]";
  2.  
  3. class Airlock
  4. {
  5.     List<IMySensorBlock> _sensors = new List<IMySensorBlock>();
  6.     List<IMyDoor> _inDoors = new List<IMyDoor>();
  7.     List<IMyDoor> _outDoors = new List<IMyDoor>();
  8.     bool _inState = false;
  9.     bool _allowed = false;
  10.     bool _inDoorState = false;
  11.     bool _outDoorState = false;
  12.     string _indoorNameTag = "Inner Airlock";
  13.     string _outdoorNameTag = "Outer Airlock";
  14.     Program _program;
  15.  
  16.     public Airlock(IMyBlockGroup group, Program program)
  17.     {
  18.         _program = program;
  19.  
  20.         // This gets the blocks for your current group using the CollectFunc defined lower down
  21.         group.GetBlocks(null, CollectFunc);
  22.     }
  23.  
  24.     public void DoWork()
  25.     {
  26.         // Do your logic in here now
  27.         // if sensor blablabla
  28.     }
  29.  
  30.     bool CollectFunc(IMyTerminalBlock b)
  31.     {
  32.         if (b is IMySensorBlock)
  33.         {
  34.             _sensors.Add((IMySensorBlock)b);
  35.         }
  36.         else if (b is IMyDoor)
  37.         {
  38.             var door = (IMyDoor)b;
  39.             if (door.CustomName.Contains(_indoorNameTag))
  40.             {
  41.                 _inDoors.Add(door);
  42.             }
  43.             else if (door.CustomName.Contains(_outdoorNameTag))
  44.             {
  45.                 _outDoors.Add(door);
  46.             }
  47.         }
  48.         return false; // So that we dont add to a null list
  49.     }
  50. }
  51.  
  52. List<Airlock> _airlocks = new List<Airlock>();
  53. List<IMyBlockGroup> _groups = new List<IMyBlockGroup>();
  54.  
  55. Program()
  56. {
  57.     Runtime.UpdateFrequency = UpdateFrequency.Update10;
  58.     GridTerminalSystem.GetBlockGroups(_groups, group => group.Name.Contains(_prefix));
  59.     foreach (var group in _groups)
  60.     {
  61.         _airlocks.Add(new Airlock(group, this)); // We pass in the group and the current instance of this Program class
  62.     }
  63. }
  64.  
  65. void Main(string arg, UpdateType updateSource)
  66. {
  67.     foreach (var a in _airlocks)
  68.     {
  69.         a.DoWork();
  70.     }
  71. }
  72.  
Add Comment
Please, Sign In to add comment