mOldSector = -1 mLastSectors = {0.00, 0.00, 0.00} mBestSectors = {0.00, 0.00, 0.00} mSectorSplit_Vs_LastSector = 0.0 mSectorSplit_Vs_BestSector = 0.0 mSectorSplit_Vs_BestLap = 0.0 mSectorSplit = 0 function SectorUpdate() local sector = GetCarInfo("sector") local laps = GetContextInfo("laps") if mOldSector == -1 and sector < 3 then return elseif mOldSector == -1 and sector == 3 then -- first lap print (" Almost clean lap ... ") --print ("lap "..laps.." / sector "..sector.." ["..mOldSector.."]") mOldSector = 0 elseif mOldSector == 0 and sector ~= 1 then return elseif mOldSector == 0 then -- start of first clean lap print (" >>> Clean Lap ! <<< ") --print ("lap "..laps.." / sector "..sector.." ["..mOldSector.."]") mOldSector = 1 end if mOldSector > 0 and mOldSector ~= sector then mSectorSplit = GetTicks() + mSectorSplitDelay -- Std values ------------------------ local s1 = GetTimeInfo("sector1") local s2 = GetTimeInfo("sector2") local s3 = GetTimeInfo("sector3") local ls1 = GetTimeInfo("lastsector1") local ls2 = GetTimeInfo("lastsector2") local ls3 = GetTimeInfo("lastsector3") local llt = GetTimeInfo("lastlaptime") local bs1 = GetTimeInfo("bestsector1") local bs2 = GetTimeInfo("bestsector2") local bs3 = GetTimeInfo("bestsector3") local blt = GetTimeInfo("bestlaptime") -------------------------------------- --------------------------------------------------------------------- local Ls1 = mLastSectors[1] local Ls2 = mLastSectors[2] local Ls3 = mLastSectors[3] local Llt = 0.0 local Bs1 = mBestSectors[1] local Bs2 = mBestSectors[2] local Bs3 = mBestSectors[3] local Blt = 0.0 -- Sectors splits -------------------------------------------------- mSectorSplit_Vs_LastSector = 0.0 mSectorSplit_Vs_BestSector = 0.0 mSectorSplit_Vs_BestLap = 0.0 if mOldSector == 1 or (mOldSector > 1 and mSectorSplitCumulate) then mSectorSplit_Vs_LastSector = mSectorSplit_Vs_LastSector + s1 - Ls1 mSectorSplit_Vs_BestSector = mSectorSplit_Vs_BestSector + s1 - Bs1 mSectorSplit_Vs_BestLap = mSectorSplit_Vs_BestLap + s1 - bs1 end if mOldSector == 2 or (mOldSector > 2 and mSectorSplitCumulate) then mSectorSplit_Vs_LastSector = mSectorSplit_Vs_LastSector + s2 - Ls2 mSectorSplit_Vs_BestSector = mSectorSplit_Vs_BestSector + s2 - Bs2 mSectorSplit_Vs_BestLap = mSectorSplit_Vs_BestLap + s2 - bs2 end if mOldSector == 3 then mSectorSplit_Vs_LastSector = mSectorSplit_Vs_LastSector + s3 - Ls3 mSectorSplit_Vs_BestSector = mSectorSplit_Vs_BestSector + s3 - Bs3 mSectorSplit_Vs_BestLap = mSectorSplit_Vs_BestLap + s3 - bs3 end -- Compute values ---------------------------------------------------- if mOldSector == 1 then if Bs1 ~= 0 then Bs1 = math.min(Bs1, s1) else Bs1 = s1 end Ls1 = s1 elseif mOldSector == 2 then if Bs2 ~= 0 then Bs2 = math.min(Bs2, s2) else Bs2 = s2 end Ls2 = s2 elseif mOldSector == 3 then if Bs3 ~= 0 then Bs3 = math.min(Bs3, s3) else Bs3 = s3 end Ls3 = s3 end mBestSectors[1] = Bs1 mBestSectors[2] = Bs2 mBestSectors[3] = Bs3 mLastSectors[1] = Ls1 mLastSectors[2] = Ls2 mLastSectors[3] = Ls3 if Bs1 ~= 0 and Bs2 ~= 0 and Bs3 ~= 0 then Blt = Bs1 + Bs2 + Bs3 end Llt = Ls1 + Ls2 + Ls3 -- used for Debug only ---------------------------------------------------------------------- -- Sectors times debugging ---------------------------------------------------------------- if mOldSector == 1 then print (" sector " ..mOldSector) elseif mOldSector == 2 then print (" sector " ..mOldSector) elseif mOldSector == 3 then print (" sector " ..mOldSector) else print ("sector "..sector) end print ("[curr] " .. s1 .. " " .. s2 .. " " .. s3 ) print ("[last] " ..ls1 .. " " ..ls2 .. " " ..ls3 ) print ("[Last] " ..Ls1 .. " " ..Ls2 .. " " ..Ls3 .. " | " .. (mSectorSplit_Vs_LastSector) ) print ("[best] " ..bs1 .. " " ..bs2 .. " " ..bs3 .. " | " .. (mSectorSplit_Vs_BestLap ) ) print ("[Best] " ..Bs1 .. " " ..Bs2 .. " " ..Bs3 .. " | " .. (mSectorSplit_Vs_BestSector) ) ------------------------------------------------------------------------------------------- print (" last best") print ("[lapt] " .. llt .. " - " .. blt ) --print ("[sect] " .. (ls1+ls2+ls3) .. " - " .. (bs1+bs2+bs3) ) print ("[comp] " .. Llt .. " - " .. Blt ) if sector == 1 then -- new lap print ("") print ("--- lap "..laps.." --------------------------------") end mOldSector = sector end end function GetCurrentSectorBestTime() local sector = GetCarInfo("sector") if sector == 1 then lpt = mBestSectors[1] elseif sector == 2 then lpt = mBestSectors[2] elseif sector == 3 then lpt = mBestSectors[3] else lpt = 0.0 end end function GetCurrentSectorTime() local sector = GetCarInfo("sector") lt = GetTimeInfo("laptime") if sector == 1 then lpt = GetTimeInfo("lastsector1") lpt = lt elseif sector == 2 then lpt = lt - GetTimeInfo("sector1") else -- sector 3 lpt = lt - GetTimeInfo("sector1") - GetTimeInfo("sector2") end end function GetPreviousSectorBestTime() local sector = GetCarInfo("sector") if sector == 1 then lpt = mBestSectors[3] elseif sector == 2 then lpt = mBestSectors[1] elseif sector == 3 then lpt = mBestSectors[2] else lpt = 0.0 end return lpt end function GetPreviousSectorTime() local sector = GetCarInfo("sector") if sector == 1 then lpt = mLastSectors[3] elseif sector == 2 then lpt = mLastSectors[1] elseif sector == 3 then lpt = mLastSectors[2] else lpt = 0.0 end return lpt end -- return delta time vs last/best time + sector splits function RealTimeDiff_SectorSplits(Best, Lap) local lpt = 0.0 if mSectorSplit ~= nil and mSectorSplit > GetTicks() then if Best and Lap then lpt = mSectorSplit_Vs_BestLap elseif Best then lpt = mSectorSplit_Vs_BestSector else lpt = mSectorSplit_Vs_LastSector end else -- display delta by default if Best then lpt = GetTimeInfo("realdiffbest") else lpt = GetTimeInfo("realdifflast") end end return lpt end