private string getPowerProducersStatus <T>(CBlocksBase <T> group) where T : class, IMyTerminalBlock { if (!group.isAssignable <IMyPowerProducer>()) { return(""); } string result = ""; float currentOutput = 0f; float maxOutput = 0f; foreach (IMyPowerProducer block in group.blocks()) { CBlockPowerInfo pInfo = new CBlockPowerInfo(block); currentOutput += pInfo.currentProduce(); maxOutput += pInfo.maxProduce(); } result += $"Ген. энергии (now:max): {toHumanReadable(currentOutput, EHRUnit.Power)}:{toHumanReadable(maxOutput, EHRUnit.Power)} "; return(result); }
private string getFunctionaBlocksStatus <T>(CBlocksBase <T> group) where T : class, IMyTerminalBlock { if (!group.isAssignable <IMyFunctionalBlock>()) { return(""); } string result = ""; int pOn = 0; int fOn = 0; int wOn = 0; float powerConsumed = 0f; float powerMaxConsumed = 0f; foreach (IMyFunctionalBlock block in group.blocks()) { if (block.Enabled) { pOn++; CBlockPowerInfo pInfo = new CBlockPowerInfo(block); powerConsumed += pInfo.currentConsume(); powerMaxConsumed += pInfo.maxConsume(); } if (block.IsFunctional) { fOn++; } if (block.IsWorking) { wOn++; } } result += $"PFW: {pOn}:{fOn}:{wOn} "; if (powerMaxConsumed > 0) { result += $"Consuming (now,max): {toHumanReadable(powerConsumed, EHRUnit.Power)}:{toHumanReadable(powerMaxConsumed, EHRUnit.Power)} "; } return(result); }