feat(navne): markmaskiner der stadig har modelnavnet navngives efter rollen (Læssevogn 5, Roeoptager 2, Mejetærsker 1 …); givne navne og flow-traktorer røres ikke (v1.41.0.0)
This commit is contained in:
@@ -972,6 +972,44 @@ function ADFieldWork.resumeAfterLoad(adEnv)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- Markmaskiner der stadig hedder modelnavnet ("Unrealistic Engine 3") får et navn efter rollen ("Roeoptager 2").
|
||||||
|
-- Navne spilleren/moden har givet røres aldrig; flow-traktorer navngives af deres flow (ikke i markflåden).
|
||||||
|
local BEET_FRUITS = {SUGARBEET = true, POTATO = true, CARROT = true, PARSNIP = true, BEETROOT = true}
|
||||||
|
local function harvesterSubtype(rig)
|
||||||
|
for fruit in pairs(rig.fruits or {}) do
|
||||||
|
local desc = g_fruitTypeManager ~= nil and g_fruitTypeManager:getFruitTypeByIndex(fruit) or nil
|
||||||
|
if desc ~= nil and BEET_FRUITS[desc.name] then return "beet" end
|
||||||
|
end
|
||||||
|
local chaff = g_fillTypeManager ~= nil and g_fillTypeManager:getFillTypeIndexByName("CHAFF") or nil
|
||||||
|
local ok, isForage = pcall(function()
|
||||||
|
local vehicle = rig.vehicle
|
||||||
|
for index in ipairs(vehicle.getFillUnits ~= nil and vehicle:getFillUnits() or {}) do
|
||||||
|
if chaff ~= nil and vehicle:getFillUnitSupportsFillType(index, chaff) then return true end
|
||||||
|
end
|
||||||
|
return false
|
||||||
|
end)
|
||||||
|
return ok and isForage and "forage" or nil
|
||||||
|
end
|
||||||
|
|
||||||
|
function ADFieldWork.autoNameFleet(adEnv)
|
||||||
|
local names = {}
|
||||||
|
for _, vehicle in ipairs(ADRunsController.getFarmVehicles(adEnv)) do table.insert(names, ADRuns.vehicleLabel(vehicle)) end
|
||||||
|
for _, rig in ipairs(ADFieldWork.getRigs(adEnv)) do
|
||||||
|
local vehicle = rig.vehicle
|
||||||
|
local stateModule = vehicle.ad ~= nil and vehicle.ad.stateModule or nil
|
||||||
|
local model = vehicle.getName ~= nil and tostring(vehicle:getName()) or nil
|
||||||
|
if stateModule ~= nil and stateModule.setName ~= nil and model ~= nil and ADRuns.vehicleLabel(vehicle) == model and not rig.controlled then
|
||||||
|
local name = ADNaming.fleetName(rig.role, rig.role == "harvester" and harvesterSubtype(rig) or nil, names)
|
||||||
|
if name ~= nil then
|
||||||
|
stateModule:setName(name)
|
||||||
|
if stateModule.raiseDirtyFlag ~= nil then stateModule:raiseDirtyFlag() end
|
||||||
|
table.insert(names, name)
|
||||||
|
Logging.info(ADFieldJobs.LOG_PREFIX .. "'%s' navngivet '%s' (markflåde, %s)", model, name, tostring(rig.role))
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
function ADFieldWork.follow(adEnv, assignment)
|
function ADFieldWork.follow(adEnv, assignment)
|
||||||
local vehicle = assignment.vehicle
|
local vehicle = assignment.vehicle
|
||||||
-- Kun når spilleren selv KØRER (bevæger sig uden Courseplay/AutoDrive) slippes sættet — at sidde i
|
-- Kun når spilleren selv KØRER (bevæger sig uden Courseplay/AutoDrive) slippes sættet — at sidde i
|
||||||
|
|||||||
@@ -69,3 +69,21 @@ function ADNaming.assign(buildings, existing)
|
|||||||
end
|
end
|
||||||
return result
|
return result
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- Markmaskiner: navn efter rolle (høstere efter type: "beet" = roe-/kartoffeloptager, "forage" = finsnitter).
|
||||||
|
ADNaming.ROLE_PREFIX = {collector = "Læssevogn", mower = "Skårlægger", tedder = "Vender", rake = "River",
|
||||||
|
baler = "Ballepresser", baleCollector = "Ballesamler", seeder = "Såmaskine", roller = "Tromle",
|
||||||
|
weeder = "Ukrudtsmaskine", fertilizer = "Gødningsspreder", limer = "Kalkspreder", herbicide = "Sprøjte",
|
||||||
|
mulcher = "Stubhakker", cultivator = "Kultivator", plow = "Plov", unloader = "Tømmevogn"}
|
||||||
|
ADNaming.HARVESTER_PREFIX = {beet = "Roeoptager", forage = "Finsnitter"}
|
||||||
|
|
||||||
|
function ADNaming.fleetName(role, subtype, names)
|
||||||
|
local prefix
|
||||||
|
if role == "harvester" then
|
||||||
|
prefix = ADNaming.HARVESTER_PREFIX[subtype] or "Mejetærsker"
|
||||||
|
else
|
||||||
|
prefix = ADNaming.ROLE_PREFIX[role]
|
||||||
|
end
|
||||||
|
if prefix == nil then return nil end
|
||||||
|
return string.format("%s %d", prefix, ADNaming.nextNumber(names or {}, prefix))
|
||||||
|
end
|
||||||
|
|||||||
@@ -256,6 +256,11 @@ function ADRunsController.applyVehicleNamesThrottled(adEnv, dt)
|
|||||||
if nameTimerMs < ADRunsController.NAME_INTERVAL_MS then return end
|
if nameTimerMs < ADRunsController.NAME_INTERVAL_MS then return end
|
||||||
nameTimerMs = 0
|
nameTimerMs = 0
|
||||||
ADRunsController.applyVehicleNames(adEnv)
|
ADRunsController.applyVehicleNames(adEnv)
|
||||||
|
-- markmaskiner uden eget navn (stadig modelnavnet) får et rollenavn
|
||||||
|
if ADFieldWork ~= nil and ADFieldWork.autoNameFleet ~= nil and ADFieldJobs ~= nil and ADFieldJobs.loaded then
|
||||||
|
local ok, err = pcall(ADFieldWork.autoNameFleet, adEnv)
|
||||||
|
if not ok then Logging.warning(ADRunsController.LOG_PREFIX .. "navne til markflåden fejlede: %s", tostring(err)) end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
-- ---- varer ----
|
-- ---- varer ----
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="utf-8" standalone="no"?>
|
<?xml version="1.0" encoding="utf-8" standalone="no"?>
|
||||||
<modDesc descVersion="107">
|
<modDesc descVersion="107">
|
||||||
<author>masterdraco</author>
|
<author>masterdraco</author>
|
||||||
<version>1.40.0.0</version>
|
<version>1.41.0.0</version>
|
||||||
<title>
|
<title>
|
||||||
<en>AD Smart Pickup</en>
|
<en>AD Smart Pickup</en>
|
||||||
</title>
|
</title>
|
||||||
|
|||||||
@@ -34,5 +34,16 @@ check("har allerede navn -> urørt", N.assign({{id = "a", kind = "husbandry", an
|
|||||||
local two = N.assign({{id = "a", kind = "husbandry", animal = "COW"}, {id = "b", kind = "husbandry", animal = "COW"}}, {})
|
local two = N.assign({{id = "a", kind = "husbandry", animal = "COW"}, {id = "b", kind = "husbandry", animal = "COW"}}, {})
|
||||||
check("to nye kostalde: 1 og 2", (two.a or "") .. "|" .. (two.b or ""), "Kostald 1|Kostald 2")
|
check("to nye kostalde: 1 og 2", (two.a or "") .. "|" .. (two.b or ""), "Kostald 1|Kostald 2")
|
||||||
|
|
||||||
|
|
||||||
|
-- markmaskiner der stadig har modelnavnet (flow-traktorer navngives af flowet)
|
||||||
|
check("læssevogn nr. 5", N.fleetName("collector", nil, {"Læssevogn 1", "Læssevogn 4"}), "Læssevogn 5")
|
||||||
|
check("skårlægger", N.fleetName("mower", nil, {}), "Skårlægger 1")
|
||||||
|
check("høster: roeoptager", N.fleetName("harvester", "beet", {"Roeoptager 1"}), "Roeoptager 2")
|
||||||
|
check("høster: finsnitter", N.fleetName("harvester", "forage", {}), "Finsnitter 1")
|
||||||
|
check("høster: mejetærsker", N.fleetName("harvester", nil, {"Mejetærsker"}), "Mejetærsker 1")
|
||||||
|
check("tømmevogn", N.fleetName("unloader", nil, {}), "Tømmevogn 1")
|
||||||
|
check("gødningsspreder", N.fleetName("fertilizer", nil, {}), "Gødningsspreder 1")
|
||||||
|
check("ukendt rolle -> nil", N.fleetName("mystery", nil, {}), nil)
|
||||||
|
|
||||||
print(failures == 0 and "\nALLE TESTS OK" or ("\n" .. failures .. " FEJL"))
|
print(failures == 0 and "\nALLE TESTS OK" or ("\n" .. failures .. " FEJL"))
|
||||||
os.exit(failures == 0 and 0 or 1)
|
os.exit(failures == 0 and 0 or 1)
|
||||||
|
|||||||
Reference in New Issue
Block a user