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);