LUADOC - Farming Simulator 22

Script v1_7_1_0

Engine v1_7_1_0

Foundation Reference

SaltSpreader

Description
Specialization for road salt spreaders
Functions

doCheckSpeedLimit

Description
Returns if speed limit should be checked
Definition
doCheckSpeedLimit()
Return Values
booleancheckSpeedlimitcheck speed limit
Code
149function SaltSpreader:doCheckSpeedLimit(superFunc)
150 return superFunc(self) or self:getIsTurnedOn()
151end

getAreControlledActionsAllowed

Description
Returns if controlled actions are allowed
Definition
getAreControlledActionsAllowed()
Return Values
booleanallowallow controlled actions
stringwarningnot allowed warning
Code
177function SaltSpreader:getAreControlledActionsAllowed(superFunc)
178 local spec = self.spec_saltSpreader
179
180 if self:getFillUnitFillLevel(spec.fillUnitIndex) <= 0 then
181 return false, spec.fillToolWarning
182 end
183
184 return superFunc(self)
185end

getCanBeTurnedOn

Description
Definition
getCanBeTurnedOn()
Code
189function SaltSpreader:getCanBeTurnedOn(superFunc)
190 local spec = self.spec_saltSpreader
191 if self:getFillUnitFillLevel(spec.fillUnitIndex) <= 0 then
192 return false
193 end
194
195 return superFunc(self)
196end

getDefaultSpeedLimit

Description
Returns default speed limit
Definition
getDefaultSpeedLimit()
Return Values
floatspeedLimitspeed limit
Code
234function SaltSpreader.getDefaultSpeedLimit()
235 return 20
236end

getDirtMultiplier

Description
Definition
getDirtMultiplier()
Code
155function SaltSpreader:getDirtMultiplier(superFunc)
156 if self:getIsTurnedOn() then
157 return superFunc(self) + self:getWorkDirtMultiplier()
158 end
159
160 return superFunc(self)
161end

getTurnedOnNotAllowedWarning

Description
Definition
getTurnedOnNotAllowedWarning()
Code
200function SaltSpreader:getTurnedOnNotAllowedWarning(superFunc)
201 local spec = self.spec_saltSpreader
202 if self:getFillUnitFillLevel(spec.fillUnitIndex) <= 0 then
203 return spec.fillToolWarning
204 end
205
206 return superFunc(self)
207end

getVariableWorkWidthUsage

Description
Returns the current usage for variable work width (nil if usage should not be displayed)
Definition
getVariableWorkWidthUsage()
Return Values
floatusageusage
Code
212function SaltSpreader:getVariableWorkWidthUsage(superFunc)
213 local usage = superFunc(self)
214 if usage == nil then
215 if self:getIsTurnedOn() then
216 local spec = self.spec_saltSpreader
217 local usageMultiplier = 1
218 if spec.usageWorkArea ~= nil then
219 usageMultiplier = self:getWorkAreaWidth(spec.usageWorkArea)
220 end
221
222 return spec.usage * usageMultiplier * 1000 * 60
223 end
224
225 return 0
226 end
227
228 return usage
229end

getWearMultiplier

Description
Definition
getWearMultiplier()
Code
165function SaltSpreader:getWearMultiplier(superFunc)
166 if self:getIsTurnedOn() then
167 return superFunc(self) + self:getWorkWearMultiplier()
168 end
169
170 return superFunc(self)
171end

initSpecialization

Description
Called on specialization initializing
Definition
initSpecialization()
Code
15function SaltSpreader.initSpecialization()
16 g_workAreaTypeManager:addWorkAreaType("saltSpreader", false)
17
18 local schema = Vehicle.xmlSchema
19 schema:setXMLSpecializationType("SaltSpreader")
20
21 schema:register(XMLValueType.INT, "vehicle.saltSpreader#fillUnitIndex", "Fill unit index", 1)
22 schema:register(XMLValueType.INT, "vehicle.saltSpreader#unloadInfoIndex", "Unload info index", 1)
23 schema:register(XMLValueType.INT, "vehicle.saltSpreader#usageWorkArea", "Width of this work area is used as multiplier for usage")
24 schema:register(XMLValueType.FLOAT, "vehicle.saltSpreader#usage", "Salt usage in liter per second", 1)
25
26 EffectManager.registerEffectXMLPaths(schema, "vehicle.saltSpreader.effects")
27
28 schema:setXMLSpecializationType()
29end

onDelete

Description
Called on deleting
Definition
onDelete()
Code
92function SaltSpreader:onDelete()
93 local spec = self.spec_saltSpreader
94 g_effectManager:deleteEffects(spec.effects)
95end

onLoad

Description
Called on loading
Definition
onLoad(table savegame)
Arguments
tablesavegamesavegame
Code
70function SaltSpreader:onLoad(savegame)
71 local spec = self.spec_saltSpreader
72
73 spec.fillUnitIndex = self.xmlFile:getValue("vehicle.saltSpreader#fillUnitIndex", 1)
74 spec.unloadInfoIndex = self.xmlFile:getValue("vehicle.saltSpreader#unloadInfoIndex", 1)
75 spec.usageWorkArea = self.xmlFile:getValue("vehicle.saltSpreader#usageWorkArea")
76 spec.usage = self.xmlFile:getValue("vehicle.saltSpreader#usage", 1) / 1000
77
78 if self.isClient then
79 spec.effects = g_effectManager:loadEffect(self.xmlFile, "vehicle.saltSpreader.effects", self.components, self, self.i3dMappings)
80 end
81
82 spec.fillToolWarning = g_i18n:getText("info_firstFillTheTool")
83 spec.snowSystem = g_currentMission.snowSystem
84
85 if not self.isServer then
86 SpecializationUtil.removeEventListener(self, "onUpdateTick", SaltSpreader)
87 end
88end

onTurnedOff

Description
Called on turn off
Definition
onTurnedOff(boolean noEventSend)
Arguments
booleannoEventSendno event send
Code
139function SaltSpreader:onTurnedOff()
140 if self.isClient then
141 local spec = self.spec_saltSpreader
142 g_effectManager:stopEffects(spec.effects)
143 end
144end

onTurnedOn

Description
Called on turn on
Definition
onTurnedOn(boolean noEventSend)
Arguments
booleannoEventSendno event send
Code
125function SaltSpreader:onTurnedOn()
126 if self.isClient then
127 local spec = self.spec_saltSpreader
128 local fillTypeIndex = self:getFillUnitFillType(spec.fillUnitIndex)
129 if fillTypeIndex ~= FillType.UNKNOWN then
130 g_effectManager:setFillType(spec.effects, fillTypeIndex)
131 g_effectManager:startEffects(spec.effects)
132 end
133 end
134end

onUpdateTick

Description
Called on update
Definition
onUpdateTick(float dt, boolean isActiveForInput, boolean isSelected)
Arguments
floatdttime since last call in ms
booleanisActiveForInputtrue if vehicle is active for input
booleanisSelectedtrue if vehicle is selected
Code
102function SaltSpreader:onUpdateTick(dt, isActiveForInput, isActiveForInputIgnoreSelection, isSelected)
103 if self:getIsTurnedOn() then
104 local spec = self.spec_saltSpreader
105
106 local fillLevel = self:getFillUnitFillLevel(spec.fillUnitIndex)
107 if fillLevel > 0 then
108 local usageMultiplier = 1
109 if spec.usageWorkArea ~= nil then
110 usageMultiplier = self:getWorkAreaWidth(spec.usageWorkArea)
111 end
112
113 local usage = spec.usage * dt * usageMultiplier
114 local unloadInfo = self:getFillVolumeUnloadInfo(spec.unloadInfoIndex)
115 self:addFillUnitFillLevel(self:getOwnerFarmId(), spec.fillUnitIndex, -usage, self:getFillUnitFillType(spec.fillUnitIndex), ToolType.UNDEFINED, unloadInfo)
116 else
117 self:setIsTurnedOn(false)
118 end
119 end
120end

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
35function SaltSpreader.prerequisitesPresent(specializations)
36 return SpecializationUtil.hasSpecialization(WorkArea, specializations) and SpecializationUtil.hasSpecialization(TurnOnVehicle, specializations)
37end

processSaltSpreaderArea

Description
Definition
processSaltSpreaderArea()
Code
240function SaltSpreader:processSaltSpreaderArea(workArea)
241 if self.isServer then
242 local xs, _, zs = getWorldTranslation(workArea.start)
243 local xw, _, zw = getWorldTranslation(workArea.width)
244 local xh, _, zh = getWorldTranslation(workArea.height)
245
246 return self.spec_saltSpreader.snowSystem:saltArea(xs, zs, xw, zw, xh, zh)
247 end
248 return 0, 0
249end

registerEventListeners

Description
Definition
registerEventListeners()
Code
59function SaltSpreader.registerEventListeners(vehicleType)
60 SpecializationUtil.registerEventListener(vehicleType, "onLoad", SaltSpreader)
61 SpecializationUtil.registerEventListener(vehicleType, "onDelete", SaltSpreader)
62 SpecializationUtil.registerEventListener(vehicleType, "onUpdateTick", SaltSpreader)
63 SpecializationUtil.registerEventListener(vehicleType, "onTurnedOn", SaltSpreader)
64 SpecializationUtil.registerEventListener(vehicleType, "onTurnedOff", SaltSpreader)
65end

registerFunctions

Description
Definition
registerFunctions()
Code
41function SaltSpreader.registerFunctions(vehicleType)
42 SpecializationUtil.registerFunction(vehicleType, "processSaltSpreaderArea", SaltSpreader.processSaltSpreaderArea)
43end

registerOverwrittenFunctions

Description
Definition
registerOverwrittenFunctions()
Code
47function SaltSpreader.registerOverwrittenFunctions(vehicleType)
48 SpecializationUtil.registerOverwrittenFunction(vehicleType, "doCheckSpeedLimit", SaltSpreader.doCheckSpeedLimit)
49 SpecializationUtil.registerOverwrittenFunction(vehicleType, "getDirtMultiplier", SaltSpreader.getDirtMultiplier)
50 SpecializationUtil.registerOverwrittenFunction(vehicleType, "getWearMultiplier", SaltSpreader.getWearMultiplier)
51 SpecializationUtil.registerOverwrittenFunction(vehicleType, "getAreControlledActionsAllowed", SaltSpreader.getAreControlledActionsAllowed)
52 SpecializationUtil.registerOverwrittenFunction(vehicleType, "getCanBeTurnedOn", SaltSpreader.getCanBeTurnedOn)
53 SpecializationUtil.registerOverwrittenFunction(vehicleType, "getTurnedOnNotAllowedWarning", SaltSpreader.getTurnedOnNotAllowedWarning)
54 SpecializationUtil.registerOverwrittenFunction(vehicleType, "getVariableWorkWidthUsage", SaltSpreader.getVariableWorkWidthUsage)
55end