1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
|
mOldSector = -1
mBestSectors = {0.00, 0.00, 0.00}
mLastSectors = {0.00, 0.00, 0.00}
mSectorSplit_Vs_LastSector = 0.0
mSectorSplit_Vs_BestSector = 0.0
mSectorSplit_Vs_BestLap = 0.0
mSectorSplit = nil
function SectorUpdate()
local sector = GetCarInfo("sector")
local laps = GetContextInfo("laps")
if mSectorSplit == nil or 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")
--------------------------------------
-- Computed values ---------------------------------------------------------------------------
local Ls1 = mLastSectors[1]
local Ls2 = mLastSectors[2]
local Ls3 = mLastSectors[3]
local Llt = Ls1 + Ls2 + Ls3 -- for Debug
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
----------------------------------------------------------------------------------------------
-- Sectors split -----------------------------------------------------
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
----------------------------------------------------------------------
-- 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) )
end
-----------------------------------------------------------------------------------------------
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).." --------------------------------")
end
mOldSector = sector
end
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
|