void ComponentStack_IsFunctionalChanged() { PowerReceiver.Update(); UpdateEmissivity(); FilledRatio = 0f; if (Sync.IsServer) { SyncObject.ChangeFillRatioAmount(FilledRatio); } }
internal void Fill(float amount) { FilledRatio += amount / Capacity; FilledRatio = Math.Min(1f, FilledRatio); if (Sync.IsServer) { SyncObject.ChangeFillRatioAmount(FilledRatio); } UpdateEmissivity(); UdpateText(); }
internal void Drain(float amount) { Debug.Assert(!IsStockpiling, "Stockpiling tank should not be drained"); FilledRatio -= amount / Capacity; FilledRatio = Math.Max(0f, FilledRatio); if (Sync.IsServer) { SyncObject.ChangeFillRatioAmount(FilledRatio); } UpdateEmissivity(); UdpateText(); }
public void RefillBottles() { var items = m_inventory.GetItems(); bool changed = false; foreach (var item in items) { if (FilledRatio == 0f) { break; } var oxygenContainer = item.Content as MyObjectBuilder_OxygenContainerObject; if (oxygenContainer != null) { if (oxygenContainer.OxygenLevel < 1f) { var physicalItem = MyDefinitionManager.Static.GetPhysicalItemDefinition(oxygenContainer) as MyOxygenContainerDefinition; float bottleOxygenAmount = oxygenContainer.OxygenLevel * physicalItem.Capacity; float tankOxygenAmount = FilledRatio * Capacity; float transferredAmount = Math.Min(physicalItem.Capacity - bottleOxygenAmount, tankOxygenAmount); oxygenContainer.OxygenLevel = (bottleOxygenAmount + transferredAmount) / physicalItem.Capacity; if (oxygenContainer.OxygenLevel > 1f) { oxygenContainer.OxygenLevel = 1f; } FilledRatio -= transferredAmount / Capacity; if (FilledRatio < 0f) { FilledRatio = 0f; } m_inventory.UpdateOxygenAmount(); m_inventory.SyncOxygenContainerLevel(item.ItemId, oxygenContainer.OxygenLevel); changed = true; } } } if (changed) { SyncObject.ChangeFillRatioAmount(FilledRatio); UpdateEmissivity(); UdpateText(); } }
internal void ChangeFilledRatio(float newFilledRatio, bool updateSync = false) { m_nextGasTransfer = 0f; float oldFilledRatio = FilledRatio; if (oldFilledRatio != newFilledRatio) { if (updateSync) { SyncObject.ChangeFillRatioAmount(newFilledRatio); } FilledRatio = newFilledRatio; SourceComp.SetRemainingCapacityByType(BlockDefinition.StoredGasId, FilledRatio * Capacity); ResourceSink.Update(); UpdateEmissivity(); UdpateText(); } }