feat(markarbejde): genbrug Courseplay-kurser — markform-signatur + kursus-register pr. maskine; genbrug/kopi i stedet for ny beregning, glemmes ved ændret mark (v1.34.0.0)
This commit is contained in:
@@ -16,6 +16,11 @@ ADFieldStorage.FIELD_TYPES = {
|
||||
dedicated = "String",
|
||||
}
|
||||
|
||||
-- Kursus-registret (ADCourseCache): hvilken mark/bredde/form/indstillinger hver maskines CP-kursus er lavet til.
|
||||
ADFieldStorage.COURSE_TYPES = {
|
||||
vehicle = "String", field = "Int", width = "Float", sig = "String", settings = "String", waypoints = "Int",
|
||||
}
|
||||
|
||||
function ADFieldStorage.getPath()
|
||||
local runsPath = ADRunsStorage ~= nil and ADRunsStorage.getPath() or nil
|
||||
if runsPath == nil then return nil end
|
||||
@@ -37,6 +42,21 @@ function ADFieldStorage.readRecord(xmlFile, key)
|
||||
return record
|
||||
end
|
||||
|
||||
function ADFieldStorage.writeCourseRecord(xmlFile, key, record)
|
||||
for name, kind in pairs(ADFieldStorage.COURSE_TYPES) do
|
||||
local value = record[name]
|
||||
if value ~= nil then xmlFile["set" .. kind](xmlFile, key .. "#" .. name, value) end
|
||||
end
|
||||
end
|
||||
|
||||
function ADFieldStorage.readCourseRecord(xmlFile, key)
|
||||
local record = {}
|
||||
for name, kind in pairs(ADFieldStorage.COURSE_TYPES) do
|
||||
record[name] = xmlFile["get" .. kind](xmlFile, key .. "#" .. name)
|
||||
end
|
||||
return record
|
||||
end
|
||||
|
||||
function ADFieldStorage.save(state)
|
||||
local path = ADFieldStorage.getPath()
|
||||
if path == nil then return false end
|
||||
@@ -53,13 +73,18 @@ function ADFieldStorage.save(state)
|
||||
xmlFile:setString(string.format("%s.fleet.vehicle(%d)#id", ADFieldStorage.ROOT, vehicleIndex), vehicleId)
|
||||
vehicleIndex = vehicleIndex + 1
|
||||
end
|
||||
local courseIndex = 0
|
||||
for _, record in pairs(state.courseRecords or {}) do
|
||||
ADFieldStorage.writeCourseRecord(xmlFile, string.format("%s.courses.course(%d)", ADFieldStorage.ROOT, courseIndex), record)
|
||||
courseIndex = courseIndex + 1
|
||||
end
|
||||
xmlFile:save()
|
||||
xmlFile:delete()
|
||||
return true
|
||||
end
|
||||
|
||||
function ADFieldStorage.load()
|
||||
local result = {fields = {}, fleet = {}, fleetMode = "all"}
|
||||
local result = {fields = {}, fleet = {}, fleetMode = "all", courseRecords = {}}
|
||||
local path = ADFieldStorage.getPath()
|
||||
if path == nil or not fileExists(path) then return result end
|
||||
local xmlFile = XMLFile.load("ADSmartPickupFields", path)
|
||||
@@ -73,6 +98,10 @@ function ADFieldStorage.load()
|
||||
local id = xmlFile:getString(key .. "#id")
|
||||
if id ~= nil and id ~= "" then result.fleet[id] = true end
|
||||
end)
|
||||
xmlFile:iterate(ADFieldStorage.ROOT .. ".courses.course", function(_, key)
|
||||
local record = ADCourseCache ~= nil and ADCourseCache.newRecord(ADFieldStorage.readCourseRecord(xmlFile, key)) or nil
|
||||
if record ~= nil then result.courseRecords[record.vehicle] = record end
|
||||
end)
|
||||
xmlFile:delete()
|
||||
return result
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user