diff --git a/game_bindings/beamng/DashExt/lua/vehicle/extensions/auto/extdash.lua b/game_bindings/beamng/DashExt/lua/vehicle/extensions/auto/extdash.lua index b95a1fb..cb5e0fb 100644 --- a/game_bindings/beamng/DashExt/lua/vehicle/extensions/auto/extdash.lua +++ b/game_bindings/beamng/DashExt/lua/vehicle/extensions/auto/extdash.lua @@ -1,29 +1,83 @@ local M = {} +local cbor = require("cbor"); +-- Connection settings local ip = "127.0.0.1" local port = 4444 - local udpSocket = nil -local cbor = require("cbor"); +-- Car settings +local minOilTemp = 50 +local maxOilTemp = 90 +local coldOilRPMCoef = 0.5 local function sendPackage(ip, port, id) - if not electrics.value.watertemp then + if not electrics.values.watertemp then -- vehicle not completly initialized, skip sending package return end local data = { - app = "beamNG" + app = "beamNG", + car = { + brand = "none", --FIXME: value + model = "none" --FIXME: value + }, + gear = electrics.values.gearIndex, + speed = electrics.values.wheelspeed or electrics.values.airspeed, + axis = { + t = electrics.values.throttle, + b = electrics.values.brake, + c = electrics.values.clutch + } } - log("I", "ExtDash", "data: " .. tostring(data) ) + if electrics.values.rpm then + data.rpm = { + cur = electrics.values.rpm + } + + if electrics.values.maxrpm then + data.rpm.max = electrics.values.maxrpm + + local currentTempRedlineCoef = linearScale(electrics.values.oiltemp or 0, minOilTemp, maxOilTemp, coldOilRPMCoef, 1) + data.rpm.rl = electrics.values.maxrpm * currentTempRedlineCoef + end + end + + if electrics.values.oiltemp then + data.oil = { + p = 0, --FIXME: value + t = electrics.values.oiltemp + } + end + + if electrics.values.fuel then + data.fuel = electrics.values.fuel + end + + --TODO: lights + -- lights = { + -- dash = 0, --FIXME: value + -- on = 0 --FIXME: value + -- }, + + --log("I", "ExtDash", "data: " .. tostring(data) ) + local packet = cbor.encode( data ) + udpSocket:sendto(packet, ip, port) end local function updateGFX(dt) if not playerInfo.firstPlayerSeated then return end + sendPackage(ip, port, 0) +end + +local function init(jbeamData) + minOilTemp = jbeamData.minOilTemp or minOilTemp + maxOilTemp = jbeamData.maxOilTemp or maxOilTemp + coldOilRPMCoef = jbeamData.coldOilRPMCoef or coldOilRPMCoef end local function onExtensionLoaded() @@ -48,6 +102,7 @@ end -- public interface M.onExtensionLoaded = onExtensionLoaded M.onExtensionUnloaded = onExtensionUnloaded +M.init = init M.updateGFX = updateGFX -- other functions