From 0a2b7675e5bbc5abe9d9b6d142d3008d641e6dbf Mon Sep 17 00:00:00 2001 From: Hugues Hiegel Date: Mon, 25 Nov 2013 09:59:16 +0100 Subject: [gugus] sector times : better managment of first lap --- scripts/gugus/dev.lua | 2 + scripts/gugus/sector.lua | 149 +++++++++++++++++++++++++++++++++------------- scripts/gugus/session.lua | 11 ++-- 3 files changed, 118 insertions(+), 44 deletions(-) diff --git a/scripts/gugus/dev.lua b/scripts/gugus/dev.lua index 3e7360b..c19da64 100644 --- a/scripts/gugus/dev.lua +++ b/scripts/gugus/dev.lua @@ -1,4 +1,6 @@ +require ("scripts/gugus/sector") + function custom_deviceReport(deviceType) -- sim paused? local paused = GetContextInfo("paused") diff --git a/scripts/gugus/sector.lua b/scripts/gugus/sector.lua index a3814f6..4c37469 100644 --- a/scripts/gugus/sector.lua +++ b/scripts/gugus/sector.lua @@ -1,18 +1,34 @@ mOldSector = -1 -mBestSectors = {0.00, 0.00, 0.00} 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 = nil +mSectorSplit = 0 function SectorUpdate() local sector = GetCarInfo("sector") local laps = GetContextInfo("laps") - if mSectorSplit == nil or mOldSector ~= sector then + 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 ------------------------ @@ -31,29 +47,18 @@ function SectorUpdate() local blt = GetTimeInfo("bestlaptime") -------------------------------------- - -- Computed values --------------------------------------------------------------------------- + --------------------------------------------------------------------- local Ls1 = mLastSectors[1] local Ls2 = mLastSectors[2] local Ls3 = mLastSectors[3] - local Llt = Ls1 + Ls2 + Ls3 -- for Debug + local Llt = 0.0 local Bs1 = mBestSectors[1] local Bs2 = mBestSectors[2] local Bs3 = mBestSectors[3] - -- Don’t compute Best sector times if irrelevant last lap time. - if llt >= 0 then - if Bs1 ~= 0 then Bs1 = math.min(Bs1, bs1, ls1) else Bs1 = math.min(bs1, ls1) end - if Bs2 ~= 0 then Bs2 = math.min(Bs2, bs2, ls2) else Bs2 = math.min(bs2, ls2) end - if Bs3 ~= 0 then Bs3 = math.min(Bs3, bs3, ls3) else Bs3 = math.min(bs3, ls3) end - -- store new values - mBestSectors[1] = Bs1 - mBestSectors[2] = Bs2 - mBestSectors[3] = Bs3 - end - local Blt = Bs1 + Bs2 + Bs3 -- Virtual Best Lap time - ---------------------------------------------------------------------------------------------- + local Blt = 0.0 - -- Sectors split ----------------------------------------------------- + -- Sectors splits -------------------------------------------------- mSectorSplit_Vs_LastSector = 0.0 mSectorSplit_Vs_BestSector = 0.0 mSectorSplit_Vs_BestLap = 0.0 @@ -73,41 +78,105 @@ function SectorUpdate() 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 true then - if mOldSector == 1 then - print (" sector " ..mOldSector) - elseif mOldSector == 2 then - print (" sector " ..mOldSector) - else -- mOldSector == 3 - print (" sector " ..mOldSector) - 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) ) + + -- 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 - mLastSectors = { ls1 , ls2 , ls3 } print ("") - print (" last best") - print ("[lapt] " .. llt .. " - " .. blt ) - print ("[sect] " .. (ls1+ls2+ls3) .. " - " .. (bs1+bs2+bs3) ) - print ("[comp] " .. Llt .. " - " .. Blt ) - - print ("--- lap "..(laps - 1).." --------------------------------") + 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) diff --git a/scripts/gugus/session.lua b/scripts/gugus/session.lua index 3e7039a..25f8a71 100644 --- a/scripts/gugus/session.lua +++ b/scripts/gugus/session.lua @@ -1,10 +1,13 @@ ---require("scripts/gugus/sector") +require("scripts/gugus/sector") + function custom_enterSessionEvent(devType) - mCurrentSector = -1 - mLastSectors = {0.0, 0.0, 0.0} - if GetContextInfo("laps") <= 0 then + mOldSector = -1 + local laps = GetContextInfo("laps") + local sector = GetCarInfo("sector") + if laps <= 1 then + mLastSectors = {0.0, 0.0, 0.0} mBestSectors = {0.0, 0.0, 0.0} end -- cgit v1.2.3