public void TimeTick() { if (TimeTickEvent != null) { TimeTickEvent.Invoke(); } }
private void Refuel(TimeTickEvent tickEvent) { if (_currentFuelLevel < MaxFuelLevel) { var refuelAmount = Math.Min(RefuelPerSecond * tickEvent.DeltaTime, MaxFuelLevel - _currentFuelLevel); _currentFuelLevel += refuelAmount; _events.OnNext(new RefueledEvent(refuelAmount, _currentFuelLevel)); } }
private void AddLift(TimeTickEvent tickEvent) { if (_currentFuelLevel > 0) { var fuelConsumed = Math.Min(FuelConsumedPerSecond * tickEvent.DeltaTime, _currentFuelLevel); _currentFuelLevel -= fuelConsumed; var liftForce = ForcePerSecond * tickEvent.DeltaTime; _events.OnNext(new LiftAddedEvent(liftForce)); _events.OnNext(new FuelConsumedEvent(fuelConsumed, _currentFuelLevel)); } else { EndLift(); } }