From c2df30dcc88ce46a26abda0612e12616808d6456 Mon Sep 17 00:00:00 2001 From: David Schwietering Date: Fri, 17 Jan 2025 14:08:51 +0100 Subject: [PATCH] Changed the lane offset setting logic Test: - change lane offset selection with the hud and gui - simple mp test --- .../FieldWorkJobParameterSetup.xml | 17 +--------- scripts/CpSettingsUtil.lua | 1 + scripts/ai/jobs/CpJobParameters.lua | 32 +++++++++++++++++-- scripts/ai/parameters/AIParameterSetting.lua | 8 +++++ scripts/gui/pages/CpCourseGeneratorFrame.lua | 4 ++- 5 files changed, 43 insertions(+), 19 deletions(-) diff --git a/config/jobParameters/FieldWorkJobParameterSetup.xml b/config/jobParameters/FieldWorkJobParameterSetup.xml index c37675d5e..3e8f5b711 100644 --- a/config/jobParameters/FieldWorkJobParameterSetup.xml +++ b/config/jobParameters/FieldWorkJobParameterSetup.xml @@ -28,21 +28,6 @@ - - -2 - -1 - 0 - 1 - 2 - - - left_2 - left - center - right - right_2 - - + isVisible="isLaneOffsetVisible" onChangeCallback="onLaneOffsetChanged" generateValuesFunction="generateMultiToolLaneOffset"/> diff --git a/scripts/CpSettingsUtil.lua b/scripts/CpSettingsUtil.lua index 60059c918..d14791152 100644 --- a/scripts/CpSettingsUtil.lua +++ b/scripts/CpSettingsUtil.lua @@ -180,6 +180,7 @@ function CpSettingsUtil.loadSettingsFromSetup(class, filePath) local settingParameters = {} settingParameters.classType = xmlFile:getValue(baseKey.."#classType") settingParameters.name = xmlFile:getValue(baseKey.."#name") + settingParameters.setupName = setupKey..settingParameters.name local title = xmlFile:getValue(baseKey.."#title") if title then settingParameters.title = title diff --git a/scripts/ai/jobs/CpJobParameters.lua b/scripts/ai/jobs/CpJobParameters.lua index 2cf0e0d1c..878ea468d 100644 --- a/scripts/ai/jobs/CpJobParameters.lua +++ b/scripts/ai/jobs/CpJobParameters.lua @@ -152,12 +152,14 @@ function CpFieldWorkJobParameters.getSettings(vehicle) return vehicle.spec_cpAIFieldWorker.cpJob:getCpJobParameters() end +---@return number +---@return Course.MultiVehicleData|nil function CpFieldWorkJobParameters:getMultiTools() - local vehicle = self.job:getVehicle() + local vehicle = self.job and self.job:getVehicle() if vehicle then local course = vehicle:getFieldWorkCourse() if course then - return course:getMultiTools() or 1 + return course:getMultiTools(), course.multiVehicleData else return 1 end @@ -166,6 +168,32 @@ function CpFieldWorkJobParameters:getMultiTools() return 5 end +function CpFieldWorkJobParameters:generateMultiToolLaneOffset(setting, oldIx) + local ntools, toolData = self:getMultiTools() + local values, texts = {}, {} + if ntools > 3 then + table.insert(values, -2) + table.insert(texts, setting:getSubText("left_2")) + end + if ntools > 1 then + table.insert(values, -1) + table.insert(texts, setting:getSubText("left")) + end + if ntools % 2 > 0 then + table.insert(values, 0) + table.insert(texts, setting:getSubText("center")) + end + if ntools > 1 then + table.insert(values, 1) + table.insert(texts, setting:getSubText("right")) + end + if ntools > 3 then + table.insert(values, 2) + table.insert(texts, setting:getSubText("right_2")) + end + return values, texts, toolData and toolData.position or oldIx +end + function CpFieldWorkJobParameters:noMultiToolsCourseSelected() return self:getMultiTools() <= 1 end diff --git a/scripts/ai/parameters/AIParameterSetting.lua b/scripts/ai/parameters/AIParameterSetting.lua index df2ddc969..1fa7e5c04 100644 --- a/scripts/ai/parameters/AIParameterSetting.lua +++ b/scripts/ai/parameters/AIParameterSetting.lua @@ -43,6 +43,14 @@ function AIParameterSetting:getTitle() return g_i18n:getText(self.title) end +--- Gets a translation text for texts like these: "CP_fieldWorkJobParameters_startAt_nearest", +--- where "nearest" the sub name is. +---@param subName string +---@return string +function AIParameterSetting:getSubText(subName) + return g_i18n:getText(self.data.setupName .. "_" .. subName) +end + function AIParameterSetting:getType() return self.guiParameterType end diff --git a/scripts/gui/pages/CpCourseGeneratorFrame.lua b/scripts/gui/pages/CpCourseGeneratorFrame.lua index 3976508fe..ac8423a08 100644 --- a/scripts/gui/pages/CpCourseGeneratorFrame.lua +++ b/scripts/gui/pages/CpCourseGeneratorFrame.lua @@ -974,6 +974,8 @@ function CpCourseGeneratorFrame:generateFieldworkCourse() nil, nil, DialogElement.TYPE_ERROR) return end + self:validateParameters() + self:updateParameterValueTexts() end) return true end @@ -1596,8 +1598,8 @@ function CpCourseGeneratorFrame:setActiveJobTypeSelection(jobTypeIndex) end end end - self:updateParameterValueTexts() self:validateParameters() + self:updateParameterValueTexts() self.jobMenuLayout:invalidateLayout() FocusManager:setFocus(self.jobTypeElement) self:updateCourseGenerator(self.currentJob.is_a and self.currentJob:is_a(CpAIJobFieldWork), self.currentJobVehicle)