/// <summary> /// Ticks this instance. /// </summary> public override void Tick() { base.Tick(); if (!Refuelable.HasFuel) { return; } if (_innerState != ChamberState.Active) { return; } if (_timer <= 0) { try { EjectPawn(); } catch (Exception e) { Log.Error($"unable to eject pawns from chamber!\ncaught exception {e.GetType().Name}\n{e}"); }//make sure an exception while ejecting a pawn doesn't put the chamber in a bad state _currentUse = ChamberUse.Tf;//this should be the default _innerState = ChamberState.WaitingForPawn; _timer = 0; return; } if (PowerCompTrader?.PowerOn == false) { return; } if (!Flickable.SwitchIsOn) { return; } Refuelable.Notify_UsedThisTick(); _timer -= 1; switch (_currentUse) { case ChamberUse.Mutation: CheckMutationProgress(); break; case ChamberUse.Tf: CheckTfMutationProgress(); break; case ChamberUse.Merge: default: break; } }
void TryRefillFromTank() { var tank = FindMutagenTankComp(); if (tank == null) { return; } var refuelAmount = Mathf.Min(Refuelable.TargetFuelLevel - Refuelable.Fuel, tank.Fuel); Refuelable.Refuel(refuelAmount); tank.ConsumeFuel(refuelAmount); }
/// <summary> /// Ticks this instance. /// </summary> public override void Tick() { base.Tick(); if (_innerState != ChamberState.Active) { return; } if (_timer <= 0) { try { EjectPawn(); } catch (Exception e) { Log.Error($"unable to eject pawns from chamber!\ncaught exception {e.GetType().Name}\n{e}"); }//make sure an exception while ejecting a pawn doesn't put the chamber in a bad state _currentUse = ChamberUse.Tf;//this should be the default _innerState = ChamberState.WaitingForPawn; _timer = 0; return; } if (!Refuelable.HasFuel) { if (_hasFuelLast) { TryRefillFromTank(); } else if (this.IsHashIntervalTick(REFUEL_CHECK_TIMER)) { TryRefillFromTank(); } _hasFuelLast = false; return; } else { _hasFuelLast = true; } if (!Flickable.SwitchIsOn) { return; } Refuelable.Notify_UsedThisTick(); _timer -= 1; }
public RefuelableProperties(ScriptContext context, Actor self) : base(context, self) { refuelable = self.Trait <Refuelable>(); }