summaryrefslogtreecommitdiff
path: root/scripts/gugus/sector.lua
blob: 66eda91382b9941e608dd6387ee86b1d0553effd (plain)
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

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

		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 Ls1 = mLastSectors[1]
		local Ls2 = mLastSectors[2]
		local Ls3 = mLastSectors[3]

		local bs1 = GetTimeInfo("bestsector1")
		local bs2 = GetTimeInfo("bestsector2")
		local bs3 = GetTimeInfo("bestsector3")

		local Bs1 = mBestSectors[1]
		local Bs2 = mBestSectors[2]
		local Bs3 = mBestSectors[3]

		--local  lt = GetTimeInfo("laptime")
		local llt = GetTimeInfo("lastlaptime")
		local blt = GetTimeInfo("bestlaptime")			
		local Blt = Bs1 + Bs2 + Bs3
		local Llt = Ls1 + Ls2 + Ls3

		if laps > 0 then
			if mOldSector == 1 then
				if Bs1 == 0 then mBestSectors[1] = math.min(bs1, ls1)
				else             mBestSectors[1] = math.min(Bs1, bs1, ls1)
				end
			elseif mOldSector == 2 then
				if Bs2 == 0 then mBestSectors[2] = math.min(bs2, ls2)
				else             mBestSectors[2] = math.min(Bs2, bs2, ls2)
				end
			else -- mOldSector == 3
				if Bs3 == 0 then mBestSectors[3] = math.min(bs3, ls3)
				else             mBestSectors[3] = math.min(Bs3, bs3, ls3)
				end
			end
		end

		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

		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) )

		if sector == 1 then
			mLastSectors = { ls1 , ls2 , ls3 }
			-- new lap
			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