// private string getWeldersStatus<T>(CBlocksBase<T> group) where T : class, IMyTerminalBlock // { // if (!group.isAssignable<IMyShipWelder>()) { return ""; } // string result = ""; // int connected = 0; // foreach (IMyShipWelder block in group.blocks()) // { // if (block.IsConnected) { connected++; } // } // result += $"Connected: {connected} "; // return result; // } public void showStatus <T>(CBlocksBase <T> group, int position) where T : class, IMyTerminalBlock { string result = $"[{group.subtypeName()}] {group.purpose()} "; if (!group.empty()) { result += $"({group.count()}) " + getPistonsStatus <T>(group) + getConnectorsStatus <T>(group) + getMergersStatus <T>(group) + getProjectorsStatus <T>(group) // + getDrillsStatus<T>(group) + getRotorsStatus <T>(group) + getGyroStatus <T>(group) + getBatteryesStatus <T>(group) + getGasTanksStatus <T>(group) + getPowerProducersStatus <T>(group) + getInvertoryesStatus <T>(group) + getFunctionaBlocksStatus <T>(group) ; } else { result += "Таких блоков нет"; } echo_at(result, position); }
private string getGyroStatus <T>(CBlocksBase <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 += Math.Abs(block.Yaw); pitch += Math.Abs(block.Pitch); roll += Math.Abs(block.Roll); } result += $"YPR: {yaw/group.count():f4}:{pitch/group.count():f4}:{roll/group.count():f4} "; return(result); }
private string getGasTanksStatus <T>(CBlocksBase <T> group) where T : class, IMyTerminalBlock { if (!group.isAssignable <IMyGasTank>()) { return(""); } string result = ""; float capacity = 0; double filledRatio = 0; foreach (IMyGasTank block in group.blocks()) { capacity += block.Capacity; filledRatio += block.FilledRatio; } result += $"Capacity: {toHumanReadable(capacity, EHRUnit.Volume)} " + $"Filled: {filledRatio/group.count()*100:f2}% "; return(result); }