Browse Source

save expected fuel amount

thefloff 4 years ago
parent
commit
5a84860e40
1 changed files with 17 additions and 6 deletions
  1. 17 6
      addons - Copy/RD501_Main/functions/magclamp/fnc_startRefuel.sqf

+ 17 - 6
addons - Copy/RD501_Main/functions/magclamp/fnc_startRefuel.sqf

@@ -28,16 +28,18 @@ _vehicle setVariable["RD501_mc_nextRefuelUpdate", 0.1, true];
 
     if (!alive _source || {!alive _sink}) then 
     {
-        _vehicle setVariable["RD501_mc_lastRefuelTick", nil, true];
-        _vehicle setVariable["RD501_mc_nextRefuelUpdate", nil, true];
+        _source setVariable["RD501_mc_lastRefuelTick", nil, true];
+        _source setVariable["RD501_mc_nextRefuelUpdate", nil, true];
+        _source setVariable["RD501_mc_lastTargetFuelAmount", nil, true];
         [_pfID] call CBA_fnc_removePerFrameHandler;
     };
 
     if (_source getVariable["RD501_mc_stop_refuel", false]) then
     {
         hint "Refueling stopped";
-        _vehicle setVariable["RD501_mc_lastRefuelTick", nil, true];
-        _vehicle setVariable["RD501_mc_nextRefuelUpdate", nil, true];
+        _source setVariable["RD501_mc_lastRefuelTick", nil, true];
+        _source setVariable["RD501_mc_nextRefuelUpdate", nil, true];
+        _source setVariable["RD501_mc_lastTargetFuelAmount", nil, true];
         [_pfID] call CBA_fnc_removePerFrameHandler;
     };
 
@@ -53,6 +55,13 @@ _vehicle setVariable["RD501_mc_nextRefuelUpdate", 0.1, true];
     private _target_fuel = (fuel _target) * _maxFuelTarget;
     private _source_fuel = (fuel _source) * _maxFuelSource;
 
+    // if last ticks have not been applied yet, act as if they have
+    private _last_Target_fuel = _target getVariable["RD501_mc_lastTargetFuelAmount", 0];
+    if (_last_target_fuel > _target_fuel) then
+    {
+        _target_fuel = _last_target_fuel;
+    }
+
     private _deltaT = _currentTime - (_source getVariable["RD501_mc_lastRefuelTick", 0]);
     private _transfer = _rate * _deltaT;
 
@@ -65,8 +74,9 @@ _vehicle setVariable["RD501_mc_nextRefuelUpdate", 0.1, true];
     {
         _target_new_fuel = 1.0;
         hint "Refueling complete";
-        _vehicle setVariable["RD501_mc_lastRefuelTick", nil, true];
-        _vehicle setVariable["RD501_mc_nextRefuelUpdate", nil, true];
+        _source setVariable["RD501_mc_lastRefuelTick", nil, true];
+        _source setVariable["RD501_mc_nextRefuelUpdate", nil, true];
+        _source setVariable["RD501_mc_lastTargetFuelAmount", nil, true];
         [_pfID] call CBA_fnc_removePerFrameHandler;
     } else 
     {
@@ -79,6 +89,7 @@ _vehicle setVariable["RD501_mc_nextRefuelUpdate", 0.1, true];
     };
 
     ["RD501_mc_set_fuel", _target_new_fuel, _target] call CBA_fnc_targetEvent;
+    _source setVariable["RD501_mc_lastTargetFuelAmount", _target_fuel, true];
 
     _source setFuel _source_new_fuel;
     _source setVariable["RD501_mc_lastRefuelTick", _currentTime, true];