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:
@@ -38,5 +38,59 @@ for key, value in pairs(record) do
|
||||
check("ST2 rundtur: " .. key, tostring(again[key]), tostring(value))
|
||||
end
|
||||
|
||||
-- ST3-ST6: kursus-registret (genbrug af Courseplay-kurser) gemmes i samme fil, <courses><course .../></courses>
|
||||
dofile("FS25_ADSmartPickup/adCourseCache.lua")
|
||||
local course = ADCourseCache.newRecord({vehicle = "v7", field = 22, width = 30.0, sig = "n=4;a=960000;c=800,300",
|
||||
settings = ADCourseCache.settingsKey({multiTools = 2, lane = -1}), waypoints = 812})
|
||||
for key in pairs(course) do
|
||||
check("ST3 kursus-felt med i lagringen: " .. key, ADFieldStorage.COURSE_TYPES[key] ~= nil, true)
|
||||
end
|
||||
local cxml = fakeXml()
|
||||
ADFieldStorage.writeCourseRecord(cxml, "c", course)
|
||||
local cback = ADFieldStorage.readCourseRecord(cxml, "c")
|
||||
for key, value in pairs(course) do
|
||||
check("ST4 kursus-rundtur: " .. key, tostring(cback[key]), tostring(value))
|
||||
end
|
||||
check("ST4b matcher stadig efter rundtur", ADCourseCache.matches(cback, {field = 22, width = 30, sig = course.sig, settings = course.settings}), true)
|
||||
|
||||
-- hel fil: save -> load med falsk XMLFile (iterate over indekserede nøgler)
|
||||
local function fileXml(store)
|
||||
local xml = fakeXml()
|
||||
for _, kind in ipairs({"Int", "String", "Float"}) do
|
||||
xml["set" .. kind] = function(_, key, value) store[key] = value end
|
||||
xml["get" .. kind] = function(_, key) return store[key] end
|
||||
end
|
||||
function xml.iterate(_, base, fn)
|
||||
local index = 0
|
||||
while true do
|
||||
local prefix = string.format("%s(%d)", base, index)
|
||||
local found = false
|
||||
for key in pairs(store) do
|
||||
if key:sub(1, #prefix + 1) == prefix .. "#" or key:sub(1, #prefix + 1) == prefix .. "." then found = true break end
|
||||
end
|
||||
if not found then return end
|
||||
fn(index + 1, prefix)
|
||||
index = index + 1
|
||||
end
|
||||
end
|
||||
function xml.save() end
|
||||
function xml.delete() end
|
||||
return xml
|
||||
end
|
||||
local disk = {}
|
||||
ADRunsStorage = {FILE_NAME = "runs.xml", getPath = function() return "/save/runs.xml" end}
|
||||
XMLFile = {create = function() return fileXml(disk) end, load = function() return fileXml(disk) end}
|
||||
function fileExists() return true end
|
||||
check("ST5 gem", ADFieldStorage.save({fields = {[77] = field}, fleet = {}, fleetMode = "all",
|
||||
courseRecords = ADCourseCache.withRecord({}, course)}), true)
|
||||
local loaded = ADFieldStorage.load()
|
||||
check("ST6 kursus indlæst", loaded.courseRecords.v7 ~= nil and loaded.courseRecords.v7.waypoints, 812)
|
||||
check("ST6b mark indlæst", loaded.fields[77] ~= nil, true)
|
||||
-- ST7: gammel fil uden <courses> -> tomt register (bagudkompatibelt)
|
||||
disk = {}
|
||||
ADFieldStorage.save({fields = {}, fleet = {}, fleetMode = "all"})
|
||||
local old = ADFieldStorage.load()
|
||||
check("ST7 gammel fil: tomt register", next(old.courseRecords), nil)
|
||||
|
||||
print(failures == 0 and "\nALLE TESTS OK" or ("\n" .. failures .. " FEJL"))
|
||||
os.exit(failures == 0 and 0 or 1)
|
||||
|
||||
Reference in New Issue
Block a user