diff options
Diffstat (limited to 'scripts/global.lua')
-rw-r--r-- | scripts/global.lua | 1038 |
1 files changed, 519 insertions, 519 deletions
diff --git a/scripts/global.lua b/scripts/global.lua index 13c3c1d..fad73df 100644 --- a/scripts/global.lua +++ b/scripts/global.lua @@ -1,519 +1,519 @@ --- SLIMax Mgr Lua Script v3.8.1
--- PART OF SLIMAX Manager pkg
--- Copyright (c)2012-2013 by Zappadoc - All Rights Reserved.
--- last change by Zappadoc - 2013-10
-
-mSMX_VERSION = 3.8
-
--- see slimax_script_readme.txt for implementation
-
--- load left and right functions tools
-require "scripts/functions_tools"
-
--- ============================================================
--- GLOBAL VAR
--- ============================================================
--- SMXMessageBox Styles
-MB_OK = 0x00000000
-MB_OKCANCEL = 0x00000001
-MB_ABORTRETRYIGNORE = 0x00000002
-MB_YESNOCANCEL = 0x00000003
-MB_YESNO = 0x00000004
-MB_RETRYCANCEL = 0x00000005
-MB_CANCELTRYCONTINUE = 0x00000006
-
-MB_ICONHAND = 0x00000010
-MB_ICONQUESTION = 0x00000020
-MB_ICONEXCLAMATION = 0x00000030
-MB_ICONASTERISK = 0x00000040
-
-MB_USERICON = 0x00000080
-MB_ICONWARNING = MB_ICONEXCLAMATION
-MB_ICONERROR = MB_ICONHAND
-
-MB_ICONINFORMATION = MB_ICONASTERISK
-MB_ICONSTOP = MB_ICONHAND
-
--- MB result
-mIDOK = 1
-mIDCANCEL = 2
-mIDABORT = 3
-mIDRETRY = 4
-mIDIGNORE = 5
-mIDYES = 6
-mIDNO = 7
-
--- scripts settings
-mCustomScriptsFileName = ""
-
--- new in: 2.2
--- init left and right digits panel text
-mLeftSpdLmtText = " "
-mRightSpdLmtText = " "
--- 4 digits F1 panel
-mF1LeftSpdLmtText = " "
-mF1RightSpdLmtText = " "
-
--- new: 2.1
--- RPM threshold values in percentage used with Shiftlights method 2
--- and configured with SLIMax Manager II Advanced Options Panel
--- default values:
-RPM_PERCENT_VALUES = {50, 55, 60, 65, 70, 75, 80, 85, 90, 95, 97, 98, 98, 99, 99 }
-RPM_ABSOLUTE_VALUES = {15452, 15545, 15823, 16354, 16410, 16675, 17252, 17545, 17823, 18354, 18510, 18655, 18670, 18675, 18677 }
-
--- Fanatec text using for slowdown update
-mFanatecText = ""
--- SIMRACE DLX text using for slowdown update
-mSRDlxLeftText = ""
-mSRDlxRightText = ""
--- SIMRACE DLX text using for slowdown update
-mSRF1LeftText = ""
-mSRF1RightText = ""
-
--- 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 = true
-
--- mapping to keystroke demo script
--- see the support forum for more info on key mapping
-mDemoMapToKeyAllowed = false
-mDemoMapToKeySwitch = 5
-
--- Fanatec Digits Status
-mFanatecDigitsFeedbackAllowed = true
--- Fanatec speedlimiter method seleted
-mFanatecSpeedLimiterFeedbackAllowed = true
--- Fanatec osp method seleted
-mFanatecOSPFeedbackAllowed = true
--- Fanatec shiftlights method seleted
-mFanatecShiftlightsFeedbackAllowed = true
-
--- Low Fuel status
-mLowFuelFeedbackAllowed = true
-
--- Left and Right Digits status
-mLeftDigitsFeedbackAllowed = true
-mRightDigitsFeedbackAllowed = true
-
--- display KPH or KMH
-mUnitFeedbackAllowed = true
-
--- show the current OSP Factor
-mOSPFeedbackAllowed = true
-
--- cool global brightness feedback
-mBrightnessFeedbackAllowed = true
-
--- show the current value of maxgear option
-mMaxGearFeedbackAllowed = true
-
--- activate or deactivate lap dump telemetry
--- using button 9 by default
-mDumpLapAllowed = false
-mDumpLapButton = 9
-
--- delta time delay
-mDeltaTimeBackup = 0
-mDeltaTimeOldTicks = 0
-mDeltaTimeDelay = 100
-mRefreshLapTimeRate = 50
-
--- dump telemetry
-TelemetryTools("dumplastlap", false);
--- ============================================================
-
--- init globals flag
-isGlobalInitialized = 0
-
--- 15 RPM leds
-mRPMLedTable = {
- RPM0=0,
- RPM1=0,
- RPM2=0,
- RPM3=0,
- RPM4=0,
- RPM5=0,
- RPM6=0,
- RPM7=0,
- RPM8=0,
- RPM9=0,
- RPM10=0,
- RPM11=0,
- RPM12=0,
- RPM13=0,
- RPM14=0
-}
-
-
--- SLI device type
--- mDeviceType no longer avaialable use GetDeviceType(devID) see 2.3 API
-
-
--- --------------------------------------------
--- KERS functions
--- --------------------------------------------
-
-function GetKersPercent()
- -- get kers value
- local kers_level = GetCarInfo("kers")
- local k_percent = 0
- if kers_level ~= nil and kers_level > 0 then
- k_percent = round((kers_level/1000) / 4 )
- end
- return k_percent
-end
-
-
--- Init all globals
-function InitGlobals()
- -- default blink time delay
- mBlinkTime = 32
- mOSPBlinkTime = 8
-
- -- ticks stuff
- mOSPBlink = 0
- mSpdLmtBlink = 0
- mOldTickCount = 0
- mOldOSPTickCount = 0
-
- gRedZone = 0
- gOSPLimit = 0
- mBU0710Leds = 0
- mG27Leds = 0
- mOSPMethod = 0
- mFanatecLeds = 0
-end
-
--- set RPM threshold value in percentage ( SLIMax Manager 2.1 )
-function SetRPMPercentValue(index, value)
- if index <1 or index>15 then
- return
- end
- if value <0 or value >100 then
- return
- end
-
- RPM_PERCENT_VALUES[index] = value
-end
-
--- set RPM threshold value ( SLIMax Manager 2.1 )
-function SetRPMAbsoluteValue(index, value)
- if index <1 or index>15 then
- return
- end
- if value <0 or value >20000 then
- return
- end
-
- RPM_ABSOLUTE_VALUES[index] = value
-end
-
--- get all global preferences set in general_default.sli
-function GetSLIMaxInfo()
- -- get RPM Only flag
- mSpdLmtRPMLedOnly = GetContextInfo("spdlmtrpmledonlyflag")
- if mSpdLmtRPMLedOnly == nil then mSpdLmtRPMLedOnly = false end
-
- -- get blink delay value*
- mBlinkTime = GetContextInfo("blinktime")
- if mBlinkTime == nil then mBlinkTime = 32 end
- if mBlinkTime < 1 or mBlinkTime > 48 then mBlinkTime = 32 end
-
- -- get osp blink delay value
- mOSPBlinkTime = GetContextInfo("ospblinktime")
- if mOSPBlinkTime == nil then mOSPBlinkTime = 32 end
- if mOSPBlinkTime < 1 or mOSPBlinkTime > 48 then mOSPBlinkTime = 32 end
-
- -- get current speed Limiter LED index
- mSpeedLimiterLED = GetContextInfo("ledspeedlimiterindex")
- if mSpeedLimiterLED == nil then mSpeedLimiterLED = 5 end
- if mSpeedLimiterLED < 1 or mSpeedLimiterLED > 6 then mSpeedLimiterLED = 5 end
-
- -- get current osp LEDs index
- mOSPLED1 = GetContextInfo("ospled1")
- if mOSPLED1 == nil then mOSPLED1 = 1 end
- if mOSPLED1 < 1 or mOSPLED1 > 11 then mOSPLED1 = 1 end
-
- mOSPLED2 = GetContextInfo("ospled2")
- if mOSPLED2 == nil then mOSPLED2 = 1 end
- if mOSPLED2 < 1 or mOSPLED2 > 11 then mOSPLED2 = 1 end
-
- -- blinking allowed?
- mNoBlink = GetContextInfo("noblinkflag")
- if mNoBlink == nil then mNoBlink = false end
-
- -- get limiter char flag
- mLimiterChar = GetContextInfo("limitercharflag")
- if mLimiterChar == nil then mLimiterChar = false end
-
- -- is OSP with first gear allowed?
- mOSPWithFirstGear = GetContextInfo("ospwithfirstgear")
- if mOSPWithFirstGear == nil then mOSPWithFirstGear = false end
-
-end
-
--- get cpu ticks
- function GetTicks()
- local tcks = GetContextInfo("ticks")
- if tcks == nil then tcks = 0 end
- return tcks
-end
-
--- reset table function
-function initLedTable(ibl, value)
- if ibl ~= nil then
- for k, v in pairs(ibl) do
- ibl[k] = value
- end
- end
-end
-
--- toggle all led state
-function toggleAllLed(val)
- initLedTable(mRPMLedTable, val)
- for i = 1, 6 do SetWarnLed(i, val) end
- -- 7 external leds is the max value used in SIM RACE F1 and Emulator
- for i = 1, 7 do SetExtLed(i, val) end
- SetRPMLed("mRPMLedTable")
-end
-
--- The following function rounds a number
--- lua doesn't return the same rounded value as C/C++
-function round(num)
- if num == nil then num = 0 end
- local i = 0
- if num >= 0 then
- i = math.floor(num+.5)
- else
- i = math.ceil(num-.5)
- end
- return i
-end
-
--- The following function calculate hr, mn, sec, hd, ms
--- param: time in meter/sec
-function timeDispatcher( tt)
- if tms == nil then tms = 0 end
- local tms = math.abs(tt)
- local t_hr = 0
- local t_mn = 0
- local t_sc = 0
- local t_ms = 0
- local t_hd = 0
-
- if tms > 0 then
- t_hr, n = math.modf(tms/3600)
- t_mn, c = math.modf(n*60)
- t_sc, s = math.modf(c*60)
- t_hd, h = math.modf(s*100)
- t_ms, m = math.modf(s*1000)
- end
--- print( tt, t_hr, t_mn, t_sc, t_hd, t_ms)
- return t_hr, t_mn, t_sc, t_hd, t_ms
-end
-
--- return speed in KPH or MPH
-function speed(spd, selector)
- if spd == nil then spd = 0 end
- if selector then
- -- MPH
- return ( spd * 2.237)
- else
- return (spd * 3.6)
- end
-end
-
--- Fahrenheit to Celsius
-function FtoC(f)
- return ((f - 32) * (5/9))
-end
-
--- Celsius to Fahrenheit
-function CtoF(c)
- return (c * (9/5) + 32)
-end
-
--- Kelvin to Celsius
-function KtoC(k)
- return ( k - 273.313)
-end
-
--- liters to gallons
-function LtoG(liters)
- return (liters * 0.264172052 )
-end
-
--- gallons to liters
-function GtoL(gallons)
- return (gallons * 3.78541178 )
-end
-
--- return fuel in liters or gallons
-function GetFuel(fl, selector)
- if fl == nil then fl = 0 end
- if selector then
- -- gallons
- return LtoG( fl)
- else
- return fl
- end
-end
-
--- return celcius or fahrenheit
-function GetTemp(tmp, selector)
- if tmp == nil then tmp = 0 end
- if selector then
- -- gallons
- return CtoF( tmp)
- else
- return tmp
- end
-end
-
--- set refresh lap time rate in ms
-function SetRefreshLapTimeRate(delay)
- if delay == nil or delay < 0 or delay > 5000 then delay = 50 end
- mRefreshLapTimeRate = delay
-end
-
--- set delta time delay in ms
-function SetDeltaTimeDelay(delay)
- if delay == nil or delay < 0 or delay > 5000 then delay = 200 end
- mDeltatimeDelay = delay
-end
-
--- get current gear
-function GetCurrentGear()
- local g = GetCarInfo("gear")
- -- get neutral
- local n = GetContextInfo("neutral")
- -- get reverse char and convert to string
- local r = string.char(GetContextInfo("reverse"))
- -- get state of custom Optimal Shift Point (OSP) records
- local ospcustom_on = GetContextInfo("ospcustom")
-
- -- set neutral, reverse or current gear
- local result = g
-
- if g == 0 then
- -- if neutral and using custom OSP record then add a dot to gear digit
- if ospcustom_on then n = n + 128 end
- result = string.char(n)
- elseif g < 0 then
- -- reverse
- result = r
- end
-
- return result
-end
-
-function isAppIRacing(sim)
- if sim == "iRacingSim.exe" or sim == "iRacingSim64.exe" then
- return true
- end
- return false
-end
-function isAppRFactor(sim)
- if sim == "rFactor.exe" or sim == "rFactor2.exe" then
- return true
- end
- return false
-end
-
-function DisplayFormatTime(lptime, delay, dec, deltaflag, numDigits)
- local ticks = GetTicks()
-
- if dft_old_time == nil or (ticks - dft_old_time) > delay then
- -- global to backup ticks (ms)
- dft_old_time = ticks
-
- local hr = 0
- local mn = 0
- local sc = 0
- local ms = 0
- local hd = 0
- local panel = ""
- local prefix = " "
-
- if lptime < 0 then
- prefix = "-"
- end
- -- explod time
- hr, mn, sc, hd, ms = timeDispatcher(lptime)
-
- if deltaflag == 1 then
- --display delta time
- if lptime == -1 or (mn + sc + ms) == 0.0 then
- if numDigits == 3 then
- Panel = "-.--"
- else
- Panel = " -.-- "
- end
- elseif mn > 0 then
- if numDigits == 3 then
- if mn < 100 then
- Panel = string.format( "%s%02d.", prefix, mn)
- else
- Panel = " ."
- end
-
- else
- Panel = string.format( " %s%1d.%02d ", prefix, mn, sc)
- end
- else
-
- if numDigits == 3 then
- if sc < 10 then
- if prefix == "-" then
- Panel = string.format( "%s%1d.%01d ", prefix, sc, hd)
- else
- Panel = string.format( "%1d.%02d ", sc, hd)
- end
- else
- Panel = " . "
- end
- else
- if Ndig == 2 then
- Panel = string.format( " %s%1d.%02d ", prefix, sc, hd)
- else
- Panel = string.format( " %s%1d.%03d", prefix, sc, ms)
- end
- end
-
- end
-
- elseif deltaflag == 0 then
- --display laptime
- if lptime == -1 or (mn + sc + ms) == 0.0 then
- if numDigits == 3 then
- Panel = "-.--"
- else
- Panel = "-:--.---"
- end
-
- elseif mn < 10 then
- if numDigits == 3 then
- Panel = string.format( "%1d.%02d", mn, sc)
- else
- Panel = string.format( "%1d:%02d.%03d", mn, sc, ms)
- end
- elseif hr > 0 then
- if numDigits == 3 then
- Panel = " . "
- else
- Panel = string.format( " %02d.%02d ", hr, mn)
- end
- else
- if numDigits == 3 then
- Panel = string.format( " %02d.", mn)
- else
- Panel = string.format( " %02d.%02d.%01d", mn, sc, ms)
- end
- end
- end
- end
-
- return Panel
-end
---==============================================
-require "scripts/slidevice"
+-- SLIMax Mgr Lua Script v3.8.1 +-- PART OF SLIMAX Manager pkg +-- Copyright (c)2012-2013 by Zappadoc - All Rights Reserved. +-- last change by Zappadoc - 2013-10 + +mSMX_VERSION = 3.8 + +-- see slimax_script_readme.txt for implementation + +-- load left and right functions tools +require "scripts/functions_tools" + +-- ============================================================ +-- GLOBAL VAR +-- ============================================================ +-- SMXMessageBox Styles +MB_OK = 0x00000000 +MB_OKCANCEL = 0x00000001 +MB_ABORTRETRYIGNORE = 0x00000002 +MB_YESNOCANCEL = 0x00000003 +MB_YESNO = 0x00000004 +MB_RETRYCANCEL = 0x00000005 +MB_CANCELTRYCONTINUE = 0x00000006 + +MB_ICONHAND = 0x00000010 +MB_ICONQUESTION = 0x00000020 +MB_ICONEXCLAMATION = 0x00000030 +MB_ICONASTERISK = 0x00000040 + +MB_USERICON = 0x00000080 +MB_ICONWARNING = MB_ICONEXCLAMATION +MB_ICONERROR = MB_ICONHAND + +MB_ICONINFORMATION = MB_ICONASTERISK +MB_ICONSTOP = MB_ICONHAND + +-- MB result +mIDOK = 1 +mIDCANCEL = 2 +mIDABORT = 3 +mIDRETRY = 4 +mIDIGNORE = 5 +mIDYES = 6 +mIDNO = 7 + +-- scripts settings +mCustomScriptsFileName = "" + +-- new in: 2.2 +-- init left and right digits panel text +mLeftSpdLmtText = " " +mRightSpdLmtText = " " +-- 4 digits F1 panel +mF1LeftSpdLmtText = " " +mF1RightSpdLmtText = " " + +-- new: 2.1 +-- RPM threshold values in percentage used with Shiftlights method 2 +-- and configured with SLIMax Manager II Advanced Options Panel +-- default values: +RPM_PERCENT_VALUES = {50, 55, 60, 65, 70, 75, 80, 85, 90, 95, 97, 98, 98, 99, 99 } +RPM_ABSOLUTE_VALUES = {15452, 15545, 15823, 16354, 16410, 16675, 17252, 17545, 17823, 18354, 18510, 18655, 18670, 18675, 18677 } + +-- Fanatec text using for slowdown update +mFanatecText = "" +-- SIMRACE DLX text using for slowdown update +mSRDlxLeftText = "" +mSRDlxRightText = "" +-- SIMRACE DLX text using for slowdown update +mSRF1LeftText = "" +mSRF1RightText = "" + +-- 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 = true + +-- mapping to keystroke demo script +-- see the support forum for more info on key mapping +mDemoMapToKeyAllowed = false +mDemoMapToKeySwitch = 5 + +-- Fanatec Digits Status +mFanatecDigitsFeedbackAllowed = true +-- Fanatec speedlimiter method seleted +mFanatecSpeedLimiterFeedbackAllowed = true +-- Fanatec osp method seleted +mFanatecOSPFeedbackAllowed = true +-- Fanatec shiftlights method seleted +mFanatecShiftlightsFeedbackAllowed = true + +-- Low Fuel status +mLowFuelFeedbackAllowed = true + +-- Left and Right Digits status +mLeftDigitsFeedbackAllowed = true +mRightDigitsFeedbackAllowed = true + +-- display KPH or KMH +mUnitFeedbackAllowed = true + +-- show the current OSP Factor +mOSPFeedbackAllowed = true + +-- cool global brightness feedback +mBrightnessFeedbackAllowed = true + +-- show the current value of maxgear option +mMaxGearFeedbackAllowed = true + +-- activate or deactivate lap dump telemetry +-- using button 9 by default +mDumpLapAllowed = false +mDumpLapButton = 9 + +-- delta time delay +mDeltaTimeBackup = 0 +mDeltaTimeOldTicks = 0 +mDeltaTimeDelay = 100 +mRefreshLapTimeRate = 50 + +-- dump telemetry +TelemetryTools("dumplastlap", false); +-- ============================================================ + +-- init globals flag +isGlobalInitialized = 0 + +-- 15 RPM leds +mRPMLedTable = { + RPM0=0, + RPM1=0, + RPM2=0, + RPM3=0, + RPM4=0, + RPM5=0, + RPM6=0, + RPM7=0, + RPM8=0, + RPM9=0, + RPM10=0, + RPM11=0, + RPM12=0, + RPM13=0, + RPM14=0 +} + + +-- SLI device type +-- mDeviceType no longer avaialable use GetDeviceType(devID) see 2.3 API + + +-- -------------------------------------------- +-- KERS functions +-- -------------------------------------------- + +function GetKersPercent() + -- get kers value + local kers_level = GetCarInfo("kers") + local k_percent = 0 + if kers_level ~= nil and kers_level > 0 then + k_percent = round((kers_level/1000) / 4 ) + end + return k_percent +end + + +-- Init all globals +function InitGlobals() + -- default blink time delay + mBlinkTime = 32 + mOSPBlinkTime = 8 + + -- ticks stuff + mOSPBlink = 0 + mSpdLmtBlink = 0 + mOldTickCount = 0 + mOldOSPTickCount = 0 + + gRedZone = 0 + gOSPLimit = 0 + mBU0710Leds = 0 + mG27Leds = 0 + mOSPMethod = 0 + mFanatecLeds = 0 +end + +-- set RPM threshold value in percentage ( SLIMax Manager 2.1 ) +function SetRPMPercentValue(index, value) + if index <1 or index>15 then + return + end + if value <0 or value >100 then + return + end + + RPM_PERCENT_VALUES[index] = value +end + +-- set RPM threshold value ( SLIMax Manager 2.1 ) +function SetRPMAbsoluteValue(index, value) + if index <1 or index>15 then + return + end + if value <0 or value >20000 then + return + end + + RPM_ABSOLUTE_VALUES[index] = value +end + +-- get all global preferences set in general_default.sli +function GetSLIMaxInfo() + -- get RPM Only flag + mSpdLmtRPMLedOnly = GetContextInfo("spdlmtrpmledonlyflag") + if mSpdLmtRPMLedOnly == nil then mSpdLmtRPMLedOnly = false end + + -- get blink delay value* + mBlinkTime = GetContextInfo("blinktime") + if mBlinkTime == nil then mBlinkTime = 32 end + if mBlinkTime < 1 or mBlinkTime > 48 then mBlinkTime = 32 end + + -- get osp blink delay value + mOSPBlinkTime = GetContextInfo("ospblinktime") + if mOSPBlinkTime == nil then mOSPBlinkTime = 32 end + if mOSPBlinkTime < 1 or mOSPBlinkTime > 48 then mOSPBlinkTime = 32 end + + -- get current speed Limiter LED index + mSpeedLimiterLED = GetContextInfo("ledspeedlimiterindex") + if mSpeedLimiterLED == nil then mSpeedLimiterLED = 5 end + if mSpeedLimiterLED < 1 or mSpeedLimiterLED > 6 then mSpeedLimiterLED = 5 end + + -- get current osp LEDs index + mOSPLED1 = GetContextInfo("ospled1") + if mOSPLED1 == nil then mOSPLED1 = 1 end + if mOSPLED1 < 1 or mOSPLED1 > 11 then mOSPLED1 = 1 end + + mOSPLED2 = GetContextInfo("ospled2") + if mOSPLED2 == nil then mOSPLED2 = 1 end + if mOSPLED2 < 1 or mOSPLED2 > 11 then mOSPLED2 = 1 end + + -- blinking allowed? + mNoBlink = GetContextInfo("noblinkflag") + if mNoBlink == nil then mNoBlink = false end + + -- get limiter char flag + mLimiterChar = GetContextInfo("limitercharflag") + if mLimiterChar == nil then mLimiterChar = false end + + -- is OSP with first gear allowed? + mOSPWithFirstGear = GetContextInfo("ospwithfirstgear") + if mOSPWithFirstGear == nil then mOSPWithFirstGear = false end + +end + +-- get cpu ticks + function GetTicks() + local tcks = GetContextInfo("ticks") + if tcks == nil then tcks = 0 end + return tcks +end + +-- reset table function +function initLedTable(ibl, value) + if ibl ~= nil then + for k, v in pairs(ibl) do + ibl[k] = value + end + end +end + +-- toggle all led state +function toggleAllLed(val) + initLedTable(mRPMLedTable, val) + for i = 1, 6 do SetWarnLed(i, val) end + -- 7 external leds is the max value used in SIM RACE F1 and Emulator + for i = 1, 7 do SetExtLed(i, val) end + SetRPMLed("mRPMLedTable") +end + +-- The following function rounds a number +-- lua doesn't return the same rounded value as C/C++ +function round(num) + if num == nil then num = 0 end + local i = 0 + if num >= 0 then + i = math.floor(num+.5) + else + i = math.ceil(num-.5) + end + return i +end + +-- The following function calculate hr, mn, sec, hd, ms +-- param: time in meter/sec +function timeDispatcher( tt) + if tms == nil then tms = 0 end + local tms = math.abs(tt) + local t_hr = 0 + local t_mn = 0 + local t_sc = 0 + local t_ms = 0 + local t_hd = 0 + + if tms > 0 then + t_hr, n = math.modf(tms/3600) + t_mn, c = math.modf(n*60) + t_sc, s = math.modf(c*60) + t_hd, h = math.modf(s*100) + t_ms, m = math.modf(s*1000) + end +-- print( tt, t_hr, t_mn, t_sc, t_hd, t_ms) + return t_hr, t_mn, t_sc, t_hd, t_ms +end + +-- return speed in KPH or MPH +function speed(spd, selector) + if spd == nil then spd = 0 end + if selector then + -- MPH + return ( spd * 2.237) + else + return (spd * 3.6) + end +end + +-- Fahrenheit to Celsius +function FtoC(f) + return ((f - 32) * (5/9)) +end + +-- Celsius to Fahrenheit +function CtoF(c) + return (c * (9/5) + 32) +end + +-- Kelvin to Celsius +function KtoC(k) + return ( k - 273.313) +end + +-- liters to gallons +function LtoG(liters) + return (liters * 0.264172052 ) +end + +-- gallons to liters +function GtoL(gallons) + return (gallons * 3.78541178 ) +end + +-- return fuel in liters or gallons +function GetFuel(fl, selector) + if fl == nil then fl = 0 end + if selector then + -- gallons + return LtoG( fl) + else + return fl + end +end + +-- return celcius or fahrenheit +function GetTemp(tmp, selector) + if tmp == nil then tmp = 0 end + if selector then + -- gallons + return CtoF( tmp) + else + return tmp + end +end + +-- set refresh lap time rate in ms +function SetRefreshLapTimeRate(delay) + if delay == nil or delay < 0 or delay > 5000 then delay = 50 end + mRefreshLapTimeRate = delay +end + +-- set delta time delay in ms +function SetDeltaTimeDelay(delay) + if delay == nil or delay < 0 or delay > 5000 then delay = 200 end + mDeltatimeDelay = delay +end + +-- get current gear +function GetCurrentGear() + local g = GetCarInfo("gear") + -- get neutral + local n = GetContextInfo("neutral") + -- get reverse char and convert to string + local r = string.char(GetContextInfo("reverse")) + -- get state of custom Optimal Shift Point (OSP) records + local ospcustom_on = GetContextInfo("ospcustom") + + -- set neutral, reverse or current gear + local result = g + + if g == 0 then + -- if neutral and using custom OSP record then add a dot to gear digit + if ospcustom_on then n = n + 128 end + result = string.char(n) + elseif g < 0 then + -- reverse + result = r + end + + return result +end + +function isAppIRacing(sim) + if sim == "iRacingSim.exe" or sim == "iRacingSim64.exe" then + return true + end + return false +end +function isAppRFactor(sim) + if sim == "rFactor.exe" or sim == "rFactor2.exe" then + return true + end + return false +end + +function DisplayFormatTime(lptime, delay, dec, deltaflag, numDigits) + local ticks = GetTicks() + + if dft_old_time == nil or (ticks - dft_old_time) > delay then + -- global to backup ticks (ms) + dft_old_time = ticks + + local hr = 0 + local mn = 0 + local sc = 0 + local ms = 0 + local hd = 0 + local panel = "" + local prefix = " " + + if lptime < 0 then + prefix = "-" + end + -- explod time + hr, mn, sc, hd, ms = timeDispatcher(lptime) + + if deltaflag == 1 then + --display delta time + if lptime == -1 or (mn + sc + ms) == 0.0 then + if numDigits == 3 then + Panel = "-.--" + else + Panel = " -.-- " + end + elseif mn > 0 then + if numDigits == 3 then + if mn < 100 then + Panel = string.format( "%s%02d.", prefix, mn) + else + Panel = " ." + end + + else + Panel = string.format( " %s%1d.%02d ", prefix, mn, sc) + end + else + + if numDigits == 3 then + if sc < 10 then + if prefix == "-" then + Panel = string.format( "%s%1d.%01d ", prefix, sc, hd) + else + Panel = string.format( "%1d.%02d ", sc, hd) + end + else + Panel = " . " + end + else + if Ndig == 2 then + Panel = string.format( " %s%1d.%02d ", prefix, sc, hd) + else + Panel = string.format( " %s%1d.%03d", prefix, sc, ms) + end + end + + end + + elseif deltaflag == 0 then + --display laptime + if lptime == -1 or (mn + sc + ms) == 0.0 then + if numDigits == 3 then + Panel = "-.--" + else + Panel = "-:--.---" + end + + elseif mn < 10 then + if numDigits == 3 then + Panel = string.format( "%1d.%02d", mn, sc) + else + Panel = string.format( "%1d:%02d.%03d", mn, sc, ms) + end + elseif hr > 0 then + if numDigits == 3 then + Panel = " . " + else + Panel = string.format( " %02d.%02d ", hr, mn) + end + else + if numDigits == 3 then + Panel = string.format( " %02d.", mn) + else + Panel = string.format( " %02d.%02d.%01d", mn, sc, ms) + end + end + end + end + + return Panel +end +--============================================== +require "scripts/slidevice" |