Block Gruppen
Eine Blockgruppe (IMyBlockGroup) ist eine Teilmenge des Grid Terminal Systems, die die in einem Schiffsterminal erstellten Gruppen repräsentiert. Sie werden entweder durch den Aufruf von GridTerminalSystem.GetBlockGroups
oder GridTerminalSystem.GetBlockGroupWithName
abgerufen.
Dies sind die Eigenschaften und Methoden, die Ihnen bei einer Blockgruppe zur Verfügung stehen:
1) Name
Ruft den Namen der Gruppe ab. Dies ist der Name, der beim Aufruf von GridTerminalSystem.GetBlockGroupWithName
überprüft wird.
// Liste den Namen der Gruppe und all die Namen der Blöcke die in ihr sind IMyBlockGroup group = GridTerminalSystem.GetBlockGroupWithName("Eine Gruppe"); if (group == null) { Echo("Gruppe nicht gefunden"); return; } Echo($"{group.Name}:"); List<IMyTerminalBlock> blocks = new List<IMyTerminalBlock>(); group.GetBlocks(blocks); foreach (var block in blocks) { Echo($"- {block.CustomName}"); }
Diese Beispiel verwendet eine sogenannte Zeichenketteninterpolation, wie sie durch das $-Präfix angezeigt wird.
2) GetBlocksOfType
Ermöglicht es Ihnen, eine Liste von Blöcken eines bestimmten Typs abzurufen, die optional nach einem bestimmten Sammelkriterium gefiltert werden können:
// Gruppe anhand eines Namen einlesen IMyBlockGroup group = GridTerminalSystem.GetBlockGroupWithName("Eine Gruppe"); List<IMyInteriorLight> lights = new List<IMyInteriorLight>(); // Nimm die Blöcke aus der Gruppe deren Blöcke den gleichen Typ haben wir in der Liste definiert (IMyInteriorLight) // Deshlab musst du den Typ nicht nochmal explizit in <> angeben group.GetBlocksOfType(lights); // Gruppe anhand eines Namen einlesen IMyBlockGroup group = GridTerminalSystem.GetBlockGroupWithName("Eine Gruppe"); // Erstelle eine Liste mit allen Beleuchtungen aus der Gruppe, //aber speicher sie in einer generischen Liste des Typ IMyTerminalBlock List<IMyTerminalBlock> lights = new List<IMyTerminalBlock>(); // Nimm alle Blöcke aus dieser Gruppe. Jetzt MÜSSEN wir den Typ spezifizieren (<IMyInteriorLight>), // da alle Blöcke in der List vom übergeordnetne Typ IMyTerminalBlock sind group.GetBlocksOfType<IMyInteriorLight>(lights); // Gruppe anhand eines Namen einlesen IMyBlockGroup group = GridTerminalSystem.GetBlockGroupWithName("Eine Gruppe"); // Erstelle eine Liste aller Beleuchtungen die moentan angeschaltet sind List<IMyInteriorLight> lights = new List<IMyInteriorLight>(); // Nimmt die Blöcke von dieser Gruppe - wenn sie angeschaltet sind block.GetBlocksOfType(lights, light => light.Enabled);