private string getConnectorsStatus <T>(CBlockGroup <T> group) where T : class, IMyTerminalBlock { if (!group.isAssignable <IMyShipConnector>()) { return(""); } string result = ""; int statusUnconnected = 0; int statusConnectable = 0; int statusConnected = 0; foreach (IMyShipConnector block in group.blocks()) { switch (block.Status) { case MyShipConnectorStatus.Unconnected: statusUnconnected++; break; case MyShipConnectorStatus.Connectable: statusConnectable++; break; case MyShipConnectorStatus.Connected: statusConnected++; break; } } result += $"UcC: {statusUnconnected}:{statusConnectable}:{statusConnected} "; return(result); }
private string getProjectorsStatus <T>(CBlockGroup <T> group) where T : class, IMyTerminalBlock { if (!group.isAssignable <IMyProjector>()) { return(""); } string result = ""; int projecting = 0; List <string> blocksTotal = new List <string>(); List <string> blocksRemaining = new List <string>(); List <string> blocksBuildable = new List <string>(); foreach (IMyProjector block in group.blocks()) { if (block.IsProjecting) { projecting++; } blocksTotal.Add($"{block.TotalBlocks}"); blocksRemaining.Add($"{block.RemainingBlocks}"); blocksBuildable.Add($"{block.BuildableBlocksCount}"); } result += $"Pr: {projecting} " + $"B: {string.Join(":", blocksBuildable)} " + $"R: {string.Join(":", blocksRemaining)} " + $"T: {string.Join(":", blocksTotal)} " ; return(result); }
private string getPistonsStatus <T>(CBlockGroup <T> group) where T : class, IMyTerminalBlock { if (!group.isAssignable <IMyPistonBase>()) { return(""); } string result = ""; List <string> positions = new List <string>(); int statusStopped = 0; int statusExtending = 0; int statusExtended = 0; int statusRetracting = 0; int statusRetracted = 0; foreach (IMyPistonBase block in group.blocks()) { switch (block.Status) { case PistonStatus.Stopped: statusStopped++; break; case PistonStatus.Extending: statusExtending++; break; case PistonStatus.Extended: statusExtended++; break; case PistonStatus.Retracting: statusRetracting++; break; case PistonStatus.Retracted: statusRetracted++; break; } positions.Add($"{block.CurrentPosition:f2}"); } result += $"SeErR: {statusStopped}:{statusExtending}:{statusExtended}:{statusRetracting}:{statusRetracted} " + $"Pos: {string.Join(":", positions)} "; return(result); }
public void enableAutoHorizont(CBlockGroup <IMyGyro> gyroscopes) { if (autoHorizontIsEnabled()) { return; } m_autoHorizontGyroscopes = gyroscopes; foreach (IMyGyro gyroscope in m_autoHorizontGyroscopes.blocks()) { gyroscope.GyroOverride = true; } }
private string getMergersStatus <T>(CBlockGroup <T> group) where T : class, IMyTerminalBlock { if (!group.isAssignable <IMyShipMergeBlock>()) { return(""); } string result = ""; int connected = 0; foreach (IMyShipMergeBlock block in group.blocks()) { if (block.IsConnected) { connected++; } } result += $"Connected: {connected} "; return(result); }
private string getFunctionaBlocksStatus <T>(CBlockGroup <T> group) where T : class, IMyTerminalBlock { if (!group.isAssignable <IMyFunctionalBlock>()) { return(""); } string result = ""; int pOn = 0; foreach (IMyFunctionalBlock block in group.blocks()) { if (block.Enabled) { pOn++; } } result += $"Power: {pOn} "; return(result); }
private string getGyroStatus <T>(CBlockGroup <T> group) where T : class, IMyTerminalBlock { if (!group.isAssignable <IMyGyro>()) { return(""); } string result = ""; float yaw = 0; float pitch = 0; float roll = 0; foreach (IMyGyro block in group.blocks()) { yaw += block.Yaw; pitch += block.Pitch; roll += block.Roll; } result += $"YPR: {yaw/group.count():f3}:{pitch/group.count():f3}:{roll/group.count():f3} "; return(result); }
private string getRotorsStatus <T>(CBlockGroup <T> group) where T : class, IMyTerminalBlock { if (!group.isAssignable <IMyMotorStator>()) { return(""); } string result = ""; List <string> rpm = new List <string>(); List <string> angle = new List <string>(); foreach (IMyMotorStator block in group.blocks()) { float angleGrad = block.Angle * 180 / (float)Math.PI; rpm.Add($"{block.TargetVelocityRPM:f2}"); angle.Add($"{angleGrad:f2}°"); } result += $"Angle: {string.Join(":", angle)} " + $"RPM: {string.Join(":", rpm)} "; return(result); }
private string getDrillsStatus <T>(CBlockGroup <T> group) where T : class, IMyTerminalBlock { if (!group.isAssignable <IMyShipDrill>()) { return(""); } string result = ""; IMyInventory inventory; int volume = 0; int mass = 0; int items = 0; foreach (IMyShipDrill block in group.blocks()) { inventory = block.GetInventory(); volume += inventory.CurrentVolume.ToIntSafe(); mass += inventory.CurrentMass.ToIntSafe(); items += inventory.ItemCount; } result += $"VMI: {toHumanReadable(volume, "Л")}:{toHumanReadable(mass, "Кг")}:{toHumanReadable(items)} "; return(result); }