Space Engineers - Методы взятия блоков и простая обёртка для GridTerminalSystem
Связь: https://discord.gg/N5bYTDf Донат: https://www.donationalerts.com/r/drabont7
Код (заменить все символы ≤ и ≥ угловыми скобками):
public Program() {
Runtime.UpdateFrequency = UpdateFrequency.Update100;
}
List≤T≥ gts≤T≥(Func≤T, bool≥b = null) where T:class {
b = b??(x =≥ true); List≤T≥ l = new List≤T≥();
Func≤T, bool≥ f = x =≥ (x as IMyTerminalBlock).IsSameConstructAs(Me);
GridTerminalSystem.GetBlocksOfType(l, k =≥ f(k) && b(k));
return l;
}
public void Main() {
//методы получения блоков
List≤IMyTerminalBlock≥ blocks = new List≤IMyTerminalBlock≥();
List≤IMyGyro≥ lgyros = new List≤IMyGyro≥();
List≤IMyBlockGroup≥ groups = new List≤IMyBlockGroup≥();
//GetBlocks(List) - все блоки
GridTerminalSystem.GetBlocks(blocks);
//GetBlocksOfType(List, Func) - блоки определенного типа, с условием
GridTerminalSystem.GetBlocksOfType(lgyros);
GridTerminalSystem.GetBlocksOfType(lgyros, g =≥ g.IsWorking);
//блоки определенного типа как IMyTerminalBlock
GridTerminalSystem.GetBlocksOfType≤IMyGyro≥(blocks);
//SearchBlocksOfName(string, List, Func) - блоки c фильтром
//по части имени и условием, как IMyTerminalBlock
GridTerminalSystem.SearchBlocksOfName("hover", blocks, b =≥ b is IMyGyro);
//GetBlockWithName(string) - блоки по имени
var gyro1 = GridTerminalSystem.GetBlockWithName("Gyroscope") as IMyGyro;
//GetBlockWithId(long) - блок по EntityId, как IMyTerminalBlock
var gyro2 = GridTerminalSystem.GetBlockWithId(31415);
//GetBlockGroups(List, Func)
GridTerminalSystem.GetBlockGroups(groups);
GridTerminalSystem.GetBlockGroups(groups, group =≥ group.Name.Contains("Test"));
//GetBlockGroupWithName(string)
var test_group = GridTerminalSystem.GetBlockGroupWithName("Test group");
//------------------------------------------------
var blcks = gts≤IMyTerminalBlock≥();
var gyrs1 = gts≤IMyGyro≥();
var gyrs2 = gts≤IMyGyro≥(b =≥ b.IsWorking);
var g_ent = gts≤IMyGyro≥(b =≥ b.IsWorking).ConvertAll(x =≥ (IMyEntity)x);
var gyrs3 = gts≤IMyGyro≥(x =≥ x.IsWorking && x.GyroOverride && x.CustomName.Contains("Gyro"));
var gyrs4 = gts≤IMyGyro≥(b =≥ b.CustomName == "Super Gyro");
var gyrs5 = gts≤IMyGyro≥(b =≥ b.EntityId == 31415);
var s_gyr = gts≤IMyGyro≥().First();
}
#ЭПАЖ
Other Videos By Богдан Гаврилюк
Other Statistics
Space Engineers Statistics For Богдан Гаврилюк
Богдан Гаврилюк currently has 9,035 views spread across 172 videos for Space Engineers. His channel published over 15 days worth of content for the game, roughly 10.65% of Space Engineers content that Богдан Гаврилюк has uploaded to YouTube.