/// <summary> /// Updates fuel burning state. /// </summary> /// <param name="objectManufacturer">Instance of world object performing manufacturing.</param> /// <param name="state">Instance of fuel burning state.</param> /// <param name="byproductsCraftQueue"></param> /// <param name="config">Manufacturing config.</param> /// <param name="deltaTime">Delta time to progress on.</param> /// <param name="isNeedFuelNow">The new fuel item will be not burned if the fuel is not needed now.</param> public static void Update( IStaticWorldObject objectManufacturer, FuelBurningState state, CraftingQueue byproductsCraftQueue, ManufacturingConfig config, double deltaTime, double byproductsQueueRate, bool isNeedFuelNow, bool forceRefreshFuel = false) { if (isNeedFuelNow && (state.ContainerFuel.StateHash != state.ContainerFuelLastStateHash || forceRefreshFuel)) { RefreshFuel(state, byproductsCraftQueue, config, objectManufacturer, isNeedFuelNow); state.ContainerFuelLastStateHash = state.ContainerFuel.StateHash; } var fuelUseTimeRemainsSeconds = state.FuelUseTimeRemainsSeconds + state.FuelUseTimeAccumulatedRemainder - deltaTime; if (fuelUseTimeRemainsSeconds <= 0) { // fuel is burned state.FuelUseTimeAccumulatedRemainder += state.FuelUseTimeRemainsSeconds; state.FuelUseTimeRemainsSeconds = 0; if (isNeedFuelNow) { // refresh fuel RefreshFuel(state, byproductsCraftQueue, config, objectManufacturer, isNeedFuelNow); return; } return; } // subtract fuel burn time state.FuelUseTimeAccumulatedRemainder = 0; state.FuelUseTimeRemainsSeconds = fuelUseTimeRemainsSeconds; if (config.IsProduceByproducts) { if (byproductsCraftQueue is null) { throw new Exception("No byproductsCraftQueue"); } CraftingMechanics.ServerUpdate(byproductsCraftQueue, deltaTime * byproductsQueueRate); } }
/// <summary> /// Updates only crafting queue recipe - please be sure to call <see cref="UpdateRecipeOnly" /> before that. /// </summary> /// <param name="state">Instance of manufacturing state.</param> /// <param name="deltaTime">Delta time to progress on.</param> public static void UpdateCraftingQueueOnly(ManufacturingState state, double deltaTime) { CraftingMechanics.ServerUpdate(state.CraftingQueue, deltaTime); }