LUADOC - Farming Simulator 19

Script v1.7.1.0

Engine v1.7.1.0

Foundation Reference

FruitPreparer

Description
Specialization for tools preparing the fruits for harvesting e.g. potato haulm toppers and sugar beet defoliators
Functions

doCheckSpeedLimit

Description
Returns if speed limit should be checked
Definition
doCheckSpeedLimit()
Return Values
booleancheckSpeedlimitcheck speed limit
Code
189function FruitPreparer:doCheckSpeedLimit(superFunc)
190 return superFunc(self) or (self:getIsTurnedOn() and (self.getIsImplementChainLowered == nil or self:getIsImplementChainLowered()))
191end

getAllowCutterAIFruitRequirements

Description
Definition
getAllowCutterAIFruitRequirements()
Code
195function FruitPreparer:getAllowCutterAIFruitRequirements(superFunc)
196 return false
197end

getDefaultSpeedLimit

Description
Returns default speed limit
Definition
getDefaultSpeedLimit()
Return Values
floatspeedLimitspeed limit
Code
226function FruitPreparer.getDefaultSpeedLimit()
227 return 15
228end

getDirtMultiplier

Description
Definition
getDirtMultiplier()
Code
201function FruitPreparer:getDirtMultiplier(superFunc)
202 local spec = self.spec_fruitPreparer
203
204 if spec.isWorking then
205 return superFunc(self) + self:getWorkDirtMultiplier() * self:getLastSpeed() / self.speedLimit
206 end
207
208 return superFunc(self)
209end

getDoGroundManipulation

Description
Returns if tool does ground manipulation
Definition
getDoGroundManipulation()
Return Values
booleandoGroundManipulationdo ground manipulation
Code
181function FruitPreparer:getDoGroundManipulation(superFunc)
182 local spec = self.spec_fruitPreparer
183 return superFunc(self) and spec.isWorking
184end

getWearMultiplier

Description
Definition
getWearMultiplier()
Code
213function FruitPreparer:getWearMultiplier(superFunc)
214 local spec = self.spec_fruitPreparer
215
216 if spec.isWorking then
217 return superFunc(self) + self:getWorkWearMultiplier() * self:getLastSpeed() / self.speedLimit
218 end
219
220 return superFunc(self)
221end

initSpecialization

Description
Called on specialization initializing
Definition
initSpecialization()
Code
15function FruitPreparer.initSpecialization()
16 g_workAreaTypeManager:addWorkAreaType("fruitPreparer", false)
17end

loadWorkAreaFromXML

Description
Loads work areas from xml
Definition
loadWorkAreaFromXML(table workArea, integer xmlFile, string key)
Arguments
tableworkAreaworkArea
integerxmlFileid of xml object
stringkeykey
Return Values
booleansuccesssuccess
Code
164function FruitPreparer:loadWorkAreaFromXML(superFunc, workArea, xmlFile, key)
165 local retValue = superFunc(self, workArea, xmlFile, key)
166
167 if workArea.type == WorkAreaType.FRUITPREPARER then
168 XMLUtil.checkDeprecatedXMLElements(self.xmlFile, self.configFileName, key.."#dropStartIndex", key..".fruitPreparer#dropWorkAreaIndex") -- FS17 to FS19
169 XMLUtil.checkDeprecatedXMLElements(self.xmlFile, self.configFileName, key.."#dropWidthIndex", key..".fruitPreparer#dropWorkAreaIndex") -- FS17 to FS19
170 XMLUtil.checkDeprecatedXMLElements(self.xmlFile, self.configFileName, key.."#dropHeightIndex", key..".fruitPreparer#dropWorkAreaIndex") -- FS17 to FS19
171
172 workArea.dropWorkAreaIndex = getXMLInt(xmlFile, key..".fruitPreparer#dropWorkAreaIndex")
173 end
174
175 return retValue
176end

onDelete

Description
Called on deleting
Definition
onDelete()
Code
104function FruitPreparer:onDelete()
105 if self.isClient then
106 local spec = self.spec_fruitPreparer
107 g_soundManager:deleteSamples(spec.samples)
108 g_animationManager:deleteAnimations(spec.animationNodes)
109 end
110end

onLoad

Description
Called on loading
Definition
onLoad(table savegame)
Arguments
tablesavegamesavegame
Code
59function FruitPreparer:onLoad(savegame)
60 local spec = self.spec_fruitPreparer
61
62 XMLUtil.checkDeprecatedXMLElements(self.xmlFile, self.configFileName, "vehicle.turnOnAnimation#name", "vehicle.turnOnVehicle.turnedAnimation#name") -- FS15 to FS17
63 XMLUtil.checkDeprecatedXMLElements(self.xmlFile, self.configFileName, "vehicle.turnOnAnimation#speed", "vehicle.turnOnVehicle.turnedAnimation#turnOnSpeedScale") -- FS15 to FS17
64
65 XMLUtil.checkDeprecatedXMLElements(self.xmlFile, self.configFileName, "vehicle.fruitPreparer#useReelStateToTurnOn") -- FS17 to FS19
66 XMLUtil.checkDeprecatedXMLElements(self.xmlFile, self.configFileName, "vehicle.fruitPreparer#onlyActiveWhenLowered") -- FS17 to FS19
67 XMLUtil.checkDeprecatedXMLElements(self.xmlFile, self.configFileName, "vehicle.vehicle.fruitPreparerSound", "vehicle.fruitPreparer.sounds.work") -- FS17 to FS19
68 XMLUtil.checkDeprecatedXMLElements(self.xmlFile, self.configFileName, "vehicle.turnedOnRotationNodes.turnedOnRotationNode", "vehicle.fruitPreparer.animationNodes.animationNode", "fruitPreparer") -- FS17 to FS19
69
70 if self.isClient then
71 spec.samples = {}
72 spec.samples.work = g_soundManager:loadSampleFromXML(self.xmlFile, "vehicle.fruitPreparer.sounds", "work", self.baseDirectory, self.components, 0, AudioGroup.VEHICLE, self.i3dMappings, self)
73
74 spec.animationNodes = g_animationManager:loadAnimations(self.xmlFile, "vehicle.fruitPreparer.animationNodes", self.components, self, self.i3dMappings)
75 end
76
77 spec.fruitType = FruitType.UNKNOWN
78 local fruitType = getXMLString(self.xmlFile, "vehicle.fruitPreparer#fruitType")
79 if fruitType ~= nil then
80 local desc = g_fruitTypeManager:getFruitTypeByName(fruitType)
81 if desc ~= nil then
82 spec.fruitType = desc.index
83
84 if self.setAIFruitRequirements ~= nil then
85 self:setAIFruitRequirements(desc.index, desc.minPreparingGrowthState, desc.maxPreparingGrowthState)
86
87 local aiUsePreparedState = Utils.getNoNil(getXMLBool(self.xmlFile, "vehicle.fruitPreparer#aiUsePreparedState"), self.spec_cutter ~= nil)
88 if aiUsePreparedState then
89 self:addAIFruitRequirement(desc.index, desc.preparedGrowthState, desc.preparedGrowthState)
90 end
91 end
92 else
93 g_logManager:xmlWarning(self.configFileName, "Unable to find fruitType '%s' in fruitPreparer", fruitType)
94 end
95 else
96 g_logManager:xmlWarning(self.configFileName, "Missing fruitType in fruitPreparer")
97 end
98
99 spec.isWorking = false
100end

onReadUpdateStream

Description
Called on on update
Definition
onReadUpdateStream(integer streamId, integer timestamp, table connection)
Arguments
integerstreamIdstream ID
integertimestamptimestamp
tableconnectionconnection
Code
117function FruitPreparer:onReadUpdateStream(streamId, timestamp, connection)
118 if connection:getIsServer() then
119 local spec = self.spec_fruitPreparer
120 spec.isWorking = streamReadBool(streamId)
121 end
122end

onStartWorkAreaProcessing

Description
Definition
onStartWorkAreaProcessing()
Code
232function FruitPreparer:onStartWorkAreaProcessing(dt)
233 local spec = self.spec_fruitPreparer
234 spec.isWorking = false
235end

onTurnedOff

Description
Called on turn off
Definition
onTurnedOff(boolean noEventSend)
Arguments
booleannoEventSendno event send
Code
150function FruitPreparer:onTurnedOff()
151 if self.isClient then
152 local spec = self.spec_fruitPreparer
153 g_soundManager:stopSamples(spec.samples)
154 g_animationManager:stopAnimations(spec.animationNodes)
155 end
156end

onTurnedOn

Description
Called on turn on
Definition
onTurnedOn(boolean noEventSend)
Arguments
booleannoEventSendno event send
Code
139function FruitPreparer:onTurnedOn()
140 if self.isClient then
141 local spec = self.spec_fruitPreparer
142 g_soundManager:playSample(spec.samples.work)
143 g_animationManager:startAnimations(spec.animationNodes)
144 end
145end

onWriteUpdateStream

Description
Called on on update
Definition
onWriteUpdateStream(integer streamId, table connection, integer dirtyMask)
Arguments
integerstreamIdstream ID
tableconnectionconnection
integerdirtyMaskdirty mask
Code
129function FruitPreparer:onWriteUpdateStream(streamId, connection, dirtyMask)
130 if not connection:getIsServer() then
131 local spec = self.spec_fruitPreparer
132 streamWriteBool(streamId, spec.isWorking)
133 end
134end

prerequisitesPresent

Description
Checks if all prerequisite specializations are loaded
Definition
prerequisitesPresent(table specializations)
Arguments
tablespecializationsspecializations
Return Values
booleanhasPrerequisitetrue if all prerequisite specializations are loaded
Code
23function FruitPreparer.prerequisitesPresent(specializations)
24 return SpecializationUtil.hasSpecialization(WorkArea, specializations) and SpecializationUtil.hasSpecialization(TurnOnVehicle, specializations)
25end

processFruitPreparerArea

Description
Definition
processFruitPreparerArea()
Code
239function FruitPreparer:processFruitPreparerArea(workArea)
240 local spec = self.spec_fruitPreparer
241 local workAreaSpec = self.spec_workArea
242
243 local xs,_,zs = getWorldTranslation(workArea.start)
244 local xw,_,zw = getWorldTranslation(workArea.width)
245 local xh,_,zh = getWorldTranslation(workArea.height)
246
247 local dxs, dzs = xs, zs
248 local dxw, dzw = xw, zw
249 local dxh, dzh = xh, zh
250
251 if workArea.dropWorkAreaIndex ~= nil then
252 local dropArea = workAreaSpec.workAreas[workArea.dropWorkAreaIndex]
253 if dropArea ~= nil then
254 dxs, _, dzs = getWorldTranslation(dropArea.start)
255 dxw, _, dzw = getWorldTranslation(dropArea.width)
256 dxh, _, dzh = getWorldTranslation(dropArea.height)
257 end
258 end
259
260 local area = FSDensityMapUtil.updateFruitPreparerArea(spec.fruitType, xs,zs, xw,zw, xh,zh, dxs,dzs, dxw,dzw, dxh,dzh)
261 if area > 0 then
262 spec.isWorking = true
263 end
264
265 return 0, area
266end

registerEventListeners

Description
Definition
registerEventListeners()
Code
46function FruitPreparer.registerEventListeners(vehicleType)
47 SpecializationUtil.registerEventListener(vehicleType, "onLoad", FruitPreparer)
48 SpecializationUtil.registerEventListener(vehicleType, "onDelete", FruitPreparer)
49 SpecializationUtil.registerEventListener(vehicleType, "onReadUpdateStream", FruitPreparer)
50 SpecializationUtil.registerEventListener(vehicleType, "onWriteUpdateStream", FruitPreparer)
51 SpecializationUtil.registerEventListener(vehicleType, "onTurnedOn", FruitPreparer)
52 SpecializationUtil.registerEventListener(vehicleType, "onTurnedOff", FruitPreparer)
53 SpecializationUtil.registerEventListener(vehicleType, "onStartWorkAreaProcessing", FruitPreparer)
54end

registerFunctions

Description
Definition
registerFunctions()
Code
29function FruitPreparer.registerFunctions(vehicleType)
30 SpecializationUtil.registerFunction(vehicleType, "processFruitPreparerArea", FruitPreparer.processFruitPreparerArea)
31end

registerOverwrittenFunctions

Description
Definition
registerOverwrittenFunctions()
Code
35function FruitPreparer.registerOverwrittenFunctions(vehicleType)
36 SpecializationUtil.registerOverwrittenFunction(vehicleType, "loadWorkAreaFromXML", FruitPreparer.loadWorkAreaFromXML)
37 SpecializationUtil.registerOverwrittenFunction(vehicleType, "getDoGroundManipulation", FruitPreparer.getDoGroundManipulation)
38 SpecializationUtil.registerOverwrittenFunction(vehicleType, "doCheckSpeedLimit", FruitPreparer.doCheckSpeedLimit)
39 SpecializationUtil.registerOverwrittenFunction(vehicleType, "getAllowCutterAIFruitRequirements", FruitPreparer.getAllowCutterAIFruitRequirements)
40 SpecializationUtil.registerOverwrittenFunction(vehicleType, "getDirtMultiplier", FruitPreparer.getDirtMultiplier)
41 SpecializationUtil.registerOverwrittenFunction(vehicleType, "getWearMultiplier", FruitPreparer.getWearMultiplier)
42end