From 90556f8566691d1be6d19333e317e94936c4f1bb Mon Sep 17 00:00:00 2001 From: Hugues Hiegel Date: Wed, 20 Nov 2013 03:41:47 +0100 Subject: [gugus] slipro digits : merged new version + added some stuff - virtual best time - remaining laps - and fucking more cool things --- cfg/sli_right_functions.ecfg | 3 +- scripts/gugus/sliproDigits.lua | 311 ++++++++++++++++++----------------------- 2 files changed, 139 insertions(+), 175 deletions(-) diff --git a/cfg/sli_right_functions.ecfg b/cfg/sli_right_functions.ecfg index b88728a..2cd69f0 100644 --- a/cfg/sli_right_functions.ecfg +++ b/cfg/sli_right_functions.ecfg @@ -42,4 +42,5 @@ 42.current sector2 43.current sector3 44.rFactor real time diff vs last + sector -45.rFactor real time diff vs best + sector \ No newline at end of file +45.rFactor real time diff vs best + sector +46.virtual best lap time diff --git a/scripts/gugus/sliproDigits.lua b/scripts/gugus/sliproDigits.lua index f9c6321..48cbe1a 100644 --- a/scripts/gugus/sliproDigits.lua +++ b/scripts/gugus/sliproDigits.lua @@ -75,7 +75,7 @@ function leftDigitsEvent(swFunction) end elseif swValue == 4 then -- laps completed:speed - local inf = GetContextInfo("laps") + inf = GetContextInfo("laps") if inf ~= nil then -- if more than 99 laps if inf >= 100 then @@ -90,31 +90,48 @@ function leftDigitsEvent(swFunction) if inf ~= nil then -- check if sector > 9 if inf >9 then - lPanel = string.format(",%02d:%3.0f", inf, spd) + lPanel = string.format("S.%02d:%3.0f", inf, spd) else - lPanel = string.format(",%01d :%3.0f", inf, spd) + lPanel = string.format(" S.%1d :%3.0f", inf, spd) end end elseif swValue == 6 then -- laps completed:total laps if available - local inf = GetContextInfo("laps") + inf = GetContextInfo("laps") local tl = GetContextInfo("lapscount") - if tl < 1 then tl = 0 end + if tl == nil or tl < 0 or tl > 999 then tl = 0 end if inf == nil then inf = 0 end local laps = "L--" local total = "t--" - -- if more than 99 laps - if inf >= 100 then - laps = string.format("%03d", inf ) + + if tl == 0 then + -- if more than 99 laps + if inf >= 100 then + if inf > 999 then inf = 999 end + laps = string.format("%03d", inf ) + else + laps = string.format("L%02d", inf) + end else - laps = string.format("L%02d", inf) + inf = tl - inf + -- display remaining laps + + if inf >= 100 then + if inf > 999 then inf = 999 end + laps = string.format("%03d", inf ) + else + laps = string.format("r%02d", inf) + end end + if tl >= 100 then + if tl > 999 then tl = 999 end total = string.format("%03d", tl) - else + elseif tl ~= 0 then total = string.format("t%02d", tl) end lPanel = laps .. ":" .. total + elseif swValue == 7 then -- water temp inf = GetCarInfo("watertemp") @@ -262,7 +279,7 @@ function leftDigitsEvent(swFunction) elseif swValue == 26 then -- 26.distance local dist = GetContextInfo("lapdistance") - lPanel = string.format("%5.0f", dist ) + lPanel = string.format(" %5d", dist ) elseif swValue == 27 then --27.laps completed:sector @@ -297,9 +314,9 @@ function leftDigitsEvent(swFunction) local sect = GetCarInfo("sector") -- check if sector > 9 if sect >9 then - lPanel = string.format(" S:%02d ", sect) + lPanel = string.format(" S.%02d ", sect) else - lPanel = string.format(" S:%1d ", sect) + lPanel = string.format(" S.%1d ", sect) end elseif swValue == 30 then @@ -355,6 +372,17 @@ end + + + + + + + +-- ============================================================ +-- Left and Right Panel functions +-- ============================================================ + function rightDigitsEvent(swFunction) swValue = swFunction + 1 @@ -364,8 +392,8 @@ function rightDigitsEvent(swFunction) local ms = 0 local hd = 0 local rPanel = "" - local lpt = 0.0 - local diffFlag = false + local lpt = nil + local diffTimeFlag = false local unit = false -- is OSP Tracking ON @@ -377,12 +405,12 @@ function rightDigitsEvent(swFunction) end -- lap finished, display lap time a few seconds - local dlt = false - dlt = GetContextInfo("displaylaptime") - if dlt == nil then dlt = false end - if dlt and swValue ~= 37 and swValue ~= 38 then - swValue = 3 - end + --local dlt = false + --dlt = GetContextInfo("displaylaptime") + --if dlt == nil then dlt = false end + --if dlt and swValue ~= 37 and swValue ~= 38 then + -- swValue = 3 + --end -- check if quick info button is down local qi = false @@ -417,9 +445,11 @@ function rightDigitsEvent(swFunction) if swValue == 1 then -- current lap time lpt = GetTimeInfo("laptime") + elseif swValue == 2 then -- best lap time (PB) lpt = GetTimeInfo("bestlaptime") + elseif swValue == 3 then -- last lap time lpt = GetTimeInfo("lastlaptime") @@ -432,65 +462,66 @@ function rightDigitsEvent(swFunction) if swValue == 4 then lpt = GetPartialTimeInfo("currentpartial", sector) elseif swValue == 5 then - diffFlag = true + diffTimeFlag = true lpt = GetPartialTimeInfo("vsbestlap", sector) elseif swValue == 6 then - diffFlag = true + diffTimeFlag = true lpt = GetPartialTimeInfo("vsoptimallap", sector) elseif swValue == 7 then - diffFlag = true + diffTimeFlag = true lpt = GetPartialTimeInfo("vsoptimalsector", sector) elseif swValue == 8 then - diffFlag = true + diffTimeFlag = true lpt = GetPartialTimeInfo("vssessionbestlap", sector) elseif swValue == 9 then - diffFlag = true + diffTimeFlag = true lpt = GetPartialTimeInfo("vssessionoptimallap", sector) elseif swValue == 10 then - diffFlag = true + diffTimeFlag = true lpt = GetPartialTimeInfo("vssessionoptimalsector", sector) end else - lpt = 0.0 + lpt = 0.0 end elseif swValue == 11 then -- real time diff vs your best - diffFlag = true + diffTimeFlag = true lpt = GetTimeInfo("realdiffbest") elseif swValue == 12 then -- real time diff vs your last - diffFlag = true + diffTimeFlag = true lpt = GetTimeInfo("realdifflast") elseif swValue == 13 then - -- current sector + -- current sector time local sector = GetCarInfo("sector") - local lt = GetTimeInfo("laptime") + lt = GetTimeInfo("laptime") if sector == 1 then lpt = lt elseif sector == 2 then - local s1 = GetTimeInfo("lastsector1") - lpt = lt - s1 + lpt = lt - GetTimeInfo("sector1") else -- sector 3 - local s1 = GetTimeInfo("lastsector1") - local s2 = GetTimeInfo("lastsector2") - lpt = lt - (s1 + s2) + lpt = lt - GetTimeInfo("sector1") + GetTimeInfo("sector2") end elseif swValue == 14 then -- best sector 1 lpt = GetTimeInfo("bestsector1") + elseif swValue == 15 then -- best sector 2 lpt = GetTimeInfo("bestsector2") + elseif swValue == 16 then -- last sector 1 lpt = GetTimeInfo("lastsector1") + elseif swValue == 17 then -- last sector 2 lpt = GetTimeInfo("lastsector2") + elseif swValue == 18 then -- position local pos = GetContextInfo("position") @@ -501,10 +532,13 @@ function rightDigitsEvent(swFunction) end SetRightDigits( rPanel ) return 1 + elseif swValue == 19 then -- get an average consumption of fuel per lap and gives the remaining laps local remainlapsintank = GetCarInfo("remainlapsintank") rPanel = string.format(" FL%3.0f", math.floor(remainlapsintank) ) + SetRightDigits( rPanel ) + return 1 elseif swValue == 20 then -- speed on right panel @@ -557,7 +591,7 @@ function rightDigitsEvent(swFunction) elseif swValue == 24 then -- time elapsed if available - local lpt = GetTimeInfo("timetotalelapsed") + lpt = GetTimeInfo("timetotalelapsed") -- explod time hr, mn, sc, hd, ms = timeDispatcher(lpt) @@ -667,19 +701,16 @@ function rightDigitsEvent(swFunction) local sector = GetCarInfo("sector") if sector == 1 then -- sector 3 - local ls1 = GetTimeInfo("lastsector1") - local ls2 = GetTimeInfo("lastsector2") - local lt = GetTimeInfo("lastlaptime") - if ls1 > 0 and ls2 > 0 then - lpt = lt - (ls1 + ls2) - end + local ls3 = GetTimeInfo("lastsector3") + lpt = ls3 + elseif sector == 2 then - local ls1 = GetTimeInfo("lastsector1") - lpt = ls1 + local ls1 = GetTimeInfo("lastsector1") + lpt = ls1 else -- sector 3 - local ls2 = GetTimeInfo("lastsector2") - lpt = ls2 + local ls2 = GetTimeInfo("lastsector2") + lpt = ls2 end elseif swValue == 36 then @@ -691,130 +722,68 @@ function rightDigitsEvent(swFunction) elseif swValue == 37 then -- real time delta vs last + last sector diff 1, 2 and 3 - local sector = GetCarInfo("sector") - diffFlag = true - if mDiffSectorDelay == nil or mDiffOldSector == nil or mDiffOldSector ~= sector then - -- 8s delay, increase it if needed - mDiffSectorDelay = GetTicks() + 8000 - mDiffOldSector = sector - end - -- init backup vars - if mOld_lt == nil then - mOld_ls1 = 0.00000 - mOld_ls2 = 0.00000 - mOld_lt = 0.00000 - mDelta_lpt = 0.00000 - mDelta_lptb = 0.00000 - end - - -- display delta by default - lpt = GetTimeInfo("realdifflast") + diffTimeFlag = true - if mDiffSectorDelay > GetTicks() then - -- display sector - if sector == 1 then - -- sector 3 - local lt = GetTimeInfo("lastlaptime") - - -- if ls1 > 0 and ls2 > 0 and lt > 0 and mOld_ls1 > 0 and mOld_ls2 > 0 and mOld_lt > 0 then - -- delta sector 3 - --lpt = (lt - (ls1 + ls2)) - (mOld_lt - (mOld_ls1 + mOld_ls2)) - if lt > 0 and mOld_lt > 0 then - if lt ~= mOld_lt then - mDelta_lpt = lt - mOld_lt - print(mDelta_lpt, lt, mOld_lt) - end - lpt = mDelta_lpt - end - - mOld_lt = lt - - - elseif sector == 2 then - -- sector 1 - local ls1 = GetTimeInfo("lastsector1") - if ls1 > 0 and mOld_ls1 > 0 then - lpt = ls1 - mOld_ls1 - end - mOld_ls2 = GetTimeInfo("lastsector2") - print(lpt, ls1 , mOld_ls1, mOld_ls2) + lpt = GetDeltaLastTime(false) - else - -- sector 2 - local ls2 = GetTimeInfo("lastsector2") - if ls2 > 0 and mOld_ls2 > 0 then - lpt = ls2 - mOld_ls2 - end - mOld_ls1 = GetTimeInfo("lastsector1") - print(lpt, ls2 , mOld_ls1, mOld_ls2) - end - end elseif swValue == 38 then - -- real time delta vs best + best sector diff 1, 2 and 3 + -- real time delta vs best + last sector diff 1, 2 and 3 + diffTimeFlag = true - -- get sector - local sector = GetCarInfo("sector") - -- set flags - diffFlag = true - - -- set delay - if mDiffSectorDelay == nil or mDiffOldSector == nil or mDiffOldSector ~= sector then - -- 8s delay, increase it if needed - mDiffSectorDelay = GetTicks() + 8000 - mDiffOldSector = sector - end + lpt = GetDeltaBestTime(false) - -- init backup vars - if mOld_bt == nil then - mOld_bs1 = 0.00000 - mOld_bs2 = 0.00000 - mOld_bt = 0.00000 - mDelta_lpt = 0.00000 - mDelta_lptb = 0.00000 - end - -- display delta by default - lpt = GetTimeInfo("realdiffbest") + elseif swValue == 39 then + -- last sector 3 + lpt = GetTimeInfo("lastsector3") - if mDiffSectorDelay > GetTicks() then - -- display sector diff during delay - if sector == 1 then - -- sector 3 - local bt = GetTimeInfo("bestlaptime") - - --if bs1 > 0 and bs2 > 0 and bt > 0 and mOld_bs1 > 0 and mOld_bs2 > 0 and mOld_bt > 0 then - -- delta sector 3 - -- lpt = (bt - (bs1 + bs2)) - (mOld_bt - (mOld_bs1 + mOld_bs2)) - if bt > 0 and mOld_bt > 0 then - if bt ~= mOld_bt then - mDelta_lptb = bt - mOld_bt - print(mDelta_lpt, bt, mOld_bt) - end - lpt = mDelta_lptb - end - - mOld_bt = bt - - elseif sector == 2 then - -- sector 1 - local bs1 = GetTimeInfo("bestsector1") - if bs1 > 0 and mOld_bs1 > 0 then - lpt = bs1 - mOld_bs1 - end - print(lpt, bs1 ) - mOld_bs2 = GetTimeInfo("bestsector2") + elseif swValue == 40 then + -- last sector 3 + lpt = GetTimeInfo("bestsector3") - else - -- sector 2 - local bs2 = GetTimeInfo("bestsector2") - if bs2 > 0 and mOld_bs2 > 0 then - lpt = bs2 - mOld_bs2 - end - print(lpt, bs2 ) - mOld_bs1 = GetTimeInfo("bestsector1") - end - end + elseif swValue == 41 then + -- current sector 1 (rFactor) + lpt = GetTimeInfo("sector1") + + elseif swValue == 42 then + -- current sector 2 (rFactor) + lpt = GetTimeInfo("sector2") + + elseif swValue == 43 then + -- current sector 3 (rFactor) + lpt = GetTimeInfo("sector3") + + elseif swValue == 44 then + -- rfactor real time delta vs last + last sector diff 1, 2 and 3 + diffTimeFlag = true + + lpt = GetDeltaLastTime(true) + + + elseif swValue == 45 then + -- rFactor real time delta vs best + last sector diff 1, 2 and 3 + diffTimeFlag = true + + lpt = GetDeltaBestTime(true) + + elseif swValue == 46 then + -- virtual best lap time + bs1 = GetTimeInfo("bestsector1") + ls1 = GetTimeInfo("lastsector1") + if ls1 < bs1 then s1 = ls1 else s1 = bs1 end + + bs2 = GetTimeInfo("bestsector2") + ls2 = GetTimeInfo("lastsector2") + if ls2 < bs2 then s2 = ls2 else s2 = bs2 end + + bs3 = GetTimeInfo("bestsector3") + ls3 = GetTimeInfo("lastsector3") + if ls3 < bs3 then s3 = ls3 else s3 = bs3 end + + --print ( ls1 , " + " , ls2, " + ", ls3 ) + --print ( bs1 , " + " , bs2, " + ", bs3 ) + lpt = s1 + s2 + s3 else -- none @@ -827,22 +796,15 @@ function rightDigitsEvent(swFunction) if lpt == nil then return 0 end local refreshRate = mRefreshLapTimeRate - if diffFlag then + if diffTimeFlag then refreshRate = mDeltaTimeDelay end -- check if diff time is ready local diffOK = GetTimeInfo("realdifftimeready") - if diffFlag and diffOK == false then - diffFlag = false + if diffTimeFlag and diffOK == false and dlt == false then + diffTimeFlag = false rPanel = " -.---" - - mOld_ls1 = 0.00000 - mOld_ls2 = 0.00000 - mOld_lt = 0.00000 - mDelta_lpt = 0.00000 - mDelta_lptb = 0.00000 - SetRightDigits( rPanel ) return 1 end @@ -858,7 +820,7 @@ function rightDigitsEvent(swFunction) if GetTicks() > ( refreshRate + mDeltaTimeOldTicks ) then mDeltaTimeOldTicks = GetTicks() - if diffFlag then + if diffTimeFlag then -- if lpt == -1 or (mn + sc + ms) == 0.0000 then mDeltaTimeBackup = " --.---" @@ -882,6 +844,7 @@ function rightDigitsEvent(swFunction) mDeltaTimeBackup = string.format( " %02d.%02d.%01d", mn, sc, ms) end + end end rPanel = mDeltaTimeBackup -- cgit v1.2.3