/// <summary> /// Mnozstvi ledu v generatoru /// </summary> /// <returns></returns> public List <string> GetIceStatus() { // definice List <string> status = new List <string>(); // prochazeni bloku foreach (KeyValuePair <string, IMyGasGenerator> block in Instance.GetByType <IMyGasGenerator>()) { // definice List <MyInventoryItem> items = new List <MyInventoryItem>(); float total = 0; // nacteni polozek v inventari block.Value.GetInventory(0).GetItems(items); // vypocet celkoveho mnozstvi if (items.Count > 0) { for (int j = 0; j < items.Count; j++) { if (items[j].Type.SubtypeId == "Ice") { total += (float)items[j].Amount; } } } // status if (block.Value.IsWorking && block.Value.IsFunctional) { status.Add(Formater.BarsWithPercent(Block.GetStatus(block.Value), total, IceReference)); } } // vraceni return(status); }
/// <summary> /// Stav zasobnikuplynu /// </summary> /// <returns>Stav zasobniku</returns> public List <string> GetTankStatus() { // definice List <string> status = new List <string>(); // prochazeni bloku foreach (KeyValuePair <string, IMyGasTank> block in Instance.GetByType <IMyGasTank>()) { status.Add(Formater.BarsWithPercent(Block.GetStatus(block.Value), (block.Value as IMyGasTank).FilledRatio, 1)); } return(status); }
/// <summary> /// Status generatoru /// </summary> /// <returns></returns> public List <string> GetReactorStatus() { // definice List <string> status = new List <string>(); //prochazeni bloku foreach (KeyValuePair <string, IMyReactor> block in Instance.GetByType <IMyReactor>()) { //hodnoty IMyReactor reactor = block.Value as IMyReactor; float actual = reactor.CurrentOutput; float maximum = reactor.MaxOutput; float uranium = 0; //overeni funkcnosti if (reactor.IsFunctional && reactor.IsWorking) { //overeni mnozstvi uranu if (UraniumReference > 0) { // polozky inventare List <MyInventoryItem> items = new List <MyInventoryItem>(); reactor.GetInventory(0).GetItems(items); // vypocet mnozstvi uranu if (items.Count > 0) { for (int j = 0; j < items.Count; j++) { if (items[j].Type.SubtypeId == "Uranium") { uranium += (float)items[j].Amount; } } } // doplneni statusu do vystupu status.Add(Formater.BarsWithPercent(Block.GetStatus(block.Value, uranium <= UraniumReference ? Status.UraniumIsLow : Status.Working), actual, maximum)); } else { status.Add(Formater.BarsWithPercent(Block.GetStatus(block.Value, Status.UraniumIsEmpty), 0, maximum)); } } else { status.Add(Formater.BarsWithPercent(Block.GetStatus(block.Value, Status.NotWorking), 0, maximum)); } } // vraceni return(status); }
/// <summary> /// Status baterek /// </summary> /// <returns></returns> public List <string> GetBatteryStatus() { // definice List <string> status = new List <string>(); //prochazeni bloku foreach (KeyValuePair <string, IMyBatteryBlock> block in Instance.GetByType <IMyBatteryBlock>()) { // hodnoty float input = block.Value.CurrentInput; float output = block.Value.CurrentOutput; float stored = block.Value.CurrentStoredPower; float maximum = block.Value.MaxStoredPower; // overeni funkcnosti if (block.Value.IsFunctional && block.Value.IsWorking) { if (stored == maximum) { status.Add(Formater.BarsWithPercent(Block.GetStatus(block.Value, Status.FullyCharged), stored, maximum)); } else if (input > output) { status.Add(Formater.BarsWithPercent(Block.GetStatus(block.Value, Status.Recharging), stored, maximum)); } else { status.Add(Formater.BarsWithPercent(Block.GetStatus(block.Value, Status.Discharging), stored, maximum)); } } else { status.Add(Formater.BarsWithPercent(Block.GetStatus(block.Value, Status.NotWorking), 0, maximum)); } } // zadne baterky if (status.Count == 0) { status.Add(Status.NoBatteries); } // vraceni return(status); }
/// <summary> /// Status solarnich panelu /// </summary> /// <param name="groupedName">Nazev pro seskupeni</param> /// <returns></returns> public List <string> GetSolarStatus() { // definice List <string> status = new List <string>(); //prochazeni bloku foreach (KeyValuePair <string, IMySolarPanel> block in Instance.GetByType <IMySolarPanel>()) { // hodnoty float actual = block.Value.CurrentOutput; float maximum = block.Value.MaxOutput; // overeni funkcnosti status.Add(Formater.BarsWithPercent(Block.GetStatus(block.Value), actual, maximum)); } // zadne panely if (status.Count == 0) { status.Add(Status.NoSolarPanels); } // vraceni return(status); }