diff --git a/scripts/global.lua b/scripts/global.lua index 867e73e..ac3c797 100644 --- a/scripts/global.lua +++ b/scripts/global.lua @@ -28,6 +28,9 @@ mDeltaTimeDelay = 200 -- change the delay below to increase or decrease the update of lap time mRefreshLapTimeRate = 50 +-- display sector split times +mSectorSplitDelay = 8000 + -- get feedback on display when you turn encoder or press button assigned to internal functions, see control.lua -- true if you want to display switch pos and value mSwitchFeedbackAllowed = false @@ -161,21 +164,16 @@ mRPMLedTable = { -- SLI device type -- mDeviceType no longer avaialable use GetDeviceType(devID) see 2.3 API +mLastSectorTime = {} +mBestSectorTime = {} +mCurrentSector = 0 +mSectors = 0 --- init globals -if mOld_ls1 == nil then - mOld_bs1 = 0.00000 - mOld_bs2 = 0.00000 - mOld_bt = 0.00000 - mDelta_lpt = 0.00000 - mDelta_lptb = 0.00000 - mOld_ls1 = 0.00000 - mOld_ls2 = 0.00000 - mOld_lt = 0.00000 - mDelta_lpt = 0.00000 - mDelta_lptb = 0.00000 - mDelta_Sect1 = 0.0000 - mDelta_Sect1b = 0.0000 +function initSectorTimes() + --mSectors = GetContextInfo("sectorcount") + mLastSectorTime = {} + mBestSectorTime = {} + mCurrentSector = 1 end @@ -283,7 +281,7 @@ function GetSLIMaxInfo() end -- get cpu ticks - function GetTicks() +function GetTicks() local tcks = GetContextInfo("ticks") if tcks == nil then tcks = 0 end return tcks @@ -576,158 +574,114 @@ function DisplayFormatTime(lptime, delay, dec, deltaflag, numDigits) return Panel end - --- return delta time vs last time + sector diff -function GetDeltaLastTime(isRF) - - local lpt = 0.0 - +function UpdateSectorTimes() local sector = GetCarInfo("sector") - if mDiffSectorDelay == nil or mDiffOldSector == nil or mDiffOldSector ~= sector then - -- 8s delay, increase it if needed - mDiffSectorDelay = GetTicks() + 8000 - mDiffOldSector = sector - - if sector == 1 then - -- diff lap time 3 - local lt = GetTimeInfo("lastlaptime") - - if lt > 0 and mOld_lt > 0 then - -- diff - mDelta_lpt = lt - mOld_lt + if mCurrentSector ~= sector then + local lastSector = sector - 1 + if lastSector == 0 then lastSector = table.getn(mLastSectorTime) end + + local ls = 0.00000 + + if isAppRFactor(GetContextInfo("simulation")) then + ls = GetTimeInfo(string.format("sector%d", lastSector)) + else + ls = GetTimeInfo(string.format("lastsector%d", lastSector)) + end + + print ( "sector "..lastSector.." : " .. ls) + + -- + if mLastSectorTime[lastSector] == nil then + mLastSectorTime[lastSector] = {0.00000, 0.00000} + end + -- save previous best sector for sector split times + mLastSectorTime[lastSector][2] = mLastSectorTime[lastSector][1] + -- stores last sector time + mLastSectorTime[lastSector][1] = ls + + -- + if mBestSectorTime[lastSector] == nil then + mBestSectorTime[lastSector] = {0.00000, 0.00000} + end + -- save previous best sector for sector split times + mBestSectorTime[lastSector][2] = mBestSectorTime[lastSector][1] + if ls ~= 0.0 and mBestSectorTime[lastSector][1] > ls then + -- stores best sector time if better than best :) + mBestSectorTime[lastSector][1] = ls + end + + + -- save current sector value + mCurrentSector = sector + -- set ticks for display + mDiffSectorDelay = GetTicks() + mSectorSplitDelay end - -- backup lt - mOld_lt = lt - -- save bt for delta vs best function - mOld_bt = GetTimeInfo("bestlaptime") - +end - elseif sector == 2 then - -- diff sector 1 - local ls1 = GetTimeInfo("lastsector1") - if isRF then - ls1 = GetTimeInfo("sector1") - end +-- return delta time vs last time + sector diff +function GetDeltaLastTime() - if ls1 > 0 and mOld_ls1 > 0 then - mDelta_lpt = ls1 - mOld_ls1 - mDelta_Sect1 = mDelta_lpt - end + local lpt = 0.0 - -- backup - mOld_ls1 = ls1 - -- save bt for delta vs best function - mOld_bs = GetTimeInfo("bestsector1") + if mDiffSectorDelay ~= nil and GetTicks() < mDiffSectorDelay then - else - -- diff sector 2 - local ls2 = GetTimeInfo("lastsector2") - if isRF then - ls2 = GetTimeInfo("sector2") - end + local lastSector = GetCarInfo("sector") - 1 + if lastSector == 0 then lastSector = table.getn(mLastSectorTime) end + local ls = 0.00000 - if ls2 > 0 and mOld_ls2 > 0 then - if mDelta_total_split_sectors then - mDelta_lpt = mDelta_Sect1 + (ls2 - mOld_ls2) - else - mDelta_lpt = ls2 - mOld_ls2 - end - end - -- backup value - mOld_ls2 = ls2 - -- save bt for delta vs best function below - mOld_bs2 = GetTimeInfo("bestsector2") + if isAppRFactor(GetContextInfo("simulation")) then + ls = GetTimeInfo(string.format("sector%d", lastSector)) + else + ls = GetTimeInfo(string.format("lastsector%d", lastSector)) + end - end - end + local start = lastSector + -- check whether to sum all sector diff values or not + if mDelta_total_split_sectors then start = 1 end + for i = start, lastSector, 1 do + local ls = mLastSectorTime[i][1] + local old_ls = mLastSectorTime[i][2] + if ls > 0 and old_ls > 0 then + lpt = lpt + (ls - old_ls) + end + end - -- display delta by default - lpt = GetTimeInfo("realdifflast") - - if mDiffSectorDelay > GetTicks() then - lpt = mDelta_lpt + else + -- display delta by default + lpt = GetTimeInfo("realdifflast") end return lpt end -- return delta time vs best time + sector diff -function GetDeltaBestTime(isRF) - local lpt = 0.0 - - -- get sector - local sector = GetCarInfo("sector") +function GetDeltaBestTime() - -- set delay - if mDiffSectorDelay == nil or mDiffOldSector == nil or mDiffOldSector ~= sector then - -- 8s delay, increase it if needed - mDiffSectorDelay = GetTicks() + 8000 - mDiffOldSector = sector - - -- display sector diff during delay - if sector == 1 then - - -- diff last lap time vs best - local bt = GetTimeInfo("lastlaptime") - - -- save lt for delta vs last function above - mOld_lt = bt - - -- compare - if bt > 0 and mOld_bt > 0 then - -- delta - mDelta_lptb = bt - mOld_bt - end - -- backup - mOld_bt = GetTimeInfo("bestlaptime") + local lpt = 0.0 + if mDiffSectorDelay ~= nil and GetTicks() < mDiffSectorDelay then - elseif sector == 2 then - -- diff sector 1 - local bs1 = GetTimeInfo("lastsector1") - if isRF then - bs1 = GetTimeInfo("sector1") - end - -- save lt for delta vs last function - mOld_ls1 = bs1 + local lastSector = GetCarInfo("sector") - 1 + if lastSector == 0 then lastSector = mSectors end - -- compare - if bs1 > 0 and mOld_bs1 > 0 then - mDelta_lptb = bs1 - mOld_bs1 - mDelta_Sect1b = mDelta_lptb - end + local ls = 0.00000 - mOld_bs1 = GetTimeInfo("bestsector1") + local start = lastSector + -- check whether to sum all sector diff values or not + if mDelta_total_split_sectors then start = 1 end + for i = start, lastSector, 1 do + local ls = mLastSectorTime[i][1] + local old_bs = mBestSectorTime[i][2] + if ls > 0 and old_bs > 0 then + lpt = lpt + (ls - old_bs) + end + end else - -- diff sector 2 - local bs2 = GetTimeInfo("lastsector2") - if isRF then - bs2 = GetTimeInfo("sector2") - end - -- save lt for delta vs last function - mOld_ls2 = bs2 - - -- compare with old value - if bs2 > 0 and mOld_bs2 > 0 then - if mDelta_total_split_sectors then - mDelta_lptb = mDelta_Sect1b + (bs2 - mOld_bs2) - else - mDelta_lptb = bs2 - mOld_bs2 - end - end - -- backup - mOld_bs2 = GetTimeInfo("bestsector2") - end - end - - -- display delta by default - lpt = GetTimeInfo("realdiffbest") - - if mDiffSectorDelay > GetTicks() then - lpt = mDelta_lptb + -- display delta by default + lpt = GetTimeInfo("realdiffbest") end return lpt