Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- string _prefix = "[DoorControl]";
- class Airlock
- {
- List<IMySensorBlock> _sensors = new List<IMySensorBlock>();
- List<IMyDoor> _inDoors = new List<IMyDoor>();
- List<IMyDoor> _outDoors = new List<IMyDoor>();
- bool _inState = false;
- bool _allowed = false;
- bool _inDoorState = false;
- bool _outDoorState = false;
- string _indoorNameTag = "Inner Airlock";
- string _outdoorNameTag = "Outer Airlock";
- Program _program;
- public Airlock(IMyBlockGroup group, Program program)
- {
- _program = program;
- // This gets the blocks for your current group using the CollectFunc defined lower down
- group.GetBlocks(null, CollectFunc);
- }
- public void DoWork()
- {
- // Do your logic in here now
- // if sensor blablabla
- }
- bool CollectFunc(IMyTerminalBlock b)
- {
- if (b is IMySensorBlock)
- {
- _sensors.Add((IMySensorBlock)b);
- }
- else if (b is IMyDoor)
- {
- var door = (IMyDoor)b;
- if (door.CustomName.Contains(_indoorNameTag))
- {
- _inDoors.Add(door);
- }
- else if (door.CustomName.Contains(_outdoorNameTag))
- {
- _outDoors.Add(door);
- }
- }
- return false; // So that we dont add to a null list
- }
- }
- List<Airlock> _airlocks = new List<Airlock>();
- List<IMyBlockGroup> _groups = new List<IMyBlockGroup>();
- Program()
- {
- Runtime.UpdateFrequency = UpdateFrequency.Update10;
- GridTerminalSystem.GetBlockGroups(_groups, group => group.Name.Contains(_prefix));
- foreach (var group in _groups)
- {
- _airlocks.Add(new Airlock(group, this)); // We pass in the group and the current instance of this Program class
- }
- }
- void Main(string arg, UpdateType updateSource)
- {
- foreach (var a in _airlocks)
- {
- a.DoWork();
- }
- }
Add Comment
Please, Sign In to add comment