LUADOC - Farming Simulator 17

Printable Version

Script v1.4.4.0

Engine v7.0.0.2

Foundation Reference

TurnOnVehicle

Description
Class for all vehicles that can be turned on
Functions

preLoad

Description
Called before loading
Definition
preLoad(table savegame)
Arguments
tablesavegamesavegame
Code
22function TurnOnVehicle:preLoad(savegame)
23 self.setIsTurnedOn = TurnOnVehicle.setIsTurnedOn
24 self.getIsTurnedOnAllowed = TurnOnVehicle.getIsTurnedOnAllowed
25 self.getIsTurnedOn = TurnOnVehicle.getIsTurnedOn
26 self.getTurnedOnNotAllowedWarning = TurnOnVehicle.getTurnedOnNotAllowedWarning
27 self.getCanBeTurnedOn = TurnOnVehicle.getCanBeTurnedOn
28 self.loadInputAttacherJoint = Utils.overwrittenFunction(self.loadInputAttacherJoint, TurnOnVehicle.loadInputAttacherJoint)
29 self.loadWorkAreaFromXML = Utils.overwrittenFunction(self.loadWorkAreaFromXML, TurnOnVehicle.loadWorkAreaFromXML)
30 self.onTurnedOn = SpecializationUtil.callSpecializationsFunction("onTurnedOn")
31 self.onTurnedOff = SpecializationUtil.callSpecializationsFunction("onTurnedOff")
32 self.getIsWorkAreaActive = Utils.overwrittenFunction(self.getIsWorkAreaActive, TurnOnVehicle.getIsWorkAreaActive)
33 self.getCanAddHelpButtonText = Utils.overwrittenFunction(self.getCanAddHelpButtonText, TurnOnVehicle.getCanAddHelpButtonText)
34 self.getIsOperating = Utils.overwrittenFunction(self.getIsOperating, TurnOnVehicle.getIsOperating);
35end

load

Description
Called on loading
Definition
load(table savegame)
Arguments
tablesavegamesavegame
Code
40function TurnOnVehicle:load(savegame)
41
42 Utils.checkDeprecatedXMLElements(self.xmlFile, self.configFileName, "vehicle.turnOnSettings#turnOffText", "vehicle.turnOnVehicle#turnOffText")
43 Utils.checkDeprecatedXMLElements(self.xmlFile, self.configFileName, "vehicle.turnOnSettings#turnOnText", "vehicle.turnOnVehicle#turnOnText")
44 Utils.checkDeprecatedXMLElements(self.xmlFile, self.configFileName, "vehicle.turnOnSettings#needsSelection", "vehicle.turnOnVehicle#needsSelection")
45 Utils.checkDeprecatedXMLElements(self.xmlFile, self.configFileName, "vehicle.turnOnSettings#isAlwaysTurnedOn", "vehicle.turnOnVehicle#isAlwaysTurnedOn")
46 Utils.checkDeprecatedXMLElements(self.xmlFile, self.configFileName, "vehicle.turnOnSettings#toggleButton", "vehicle.turnOnVehicle#toggleButton")
47 Utils.checkDeprecatedXMLElements(self.xmlFile, self.configFileName, "vehicle.turnOnSettings#animationName", "vehicle.turnOnVehicle.turnedAnimation#name")
48 Utils.checkDeprecatedXMLElements(self.xmlFile, self.configFileName, "vehicle.turnOnSettings#turnOnSpeedScale", "vehicle.turnOnVehicle.turnedAnimation#turnOnSpeedScale")
49 Utils.checkDeprecatedXMLElements(self.xmlFile, self.configFileName, "vehicle.turnOnSettings#turnOffSpeedScale", "vehicle.turnOnVehicle.turnedAnimation#turnOffSpeedScale")
50
51 self.isSelectable = true
52
53 self.turnOnVehicle = {}
54
55 local turnOnButtonStr = getXMLString(self.xmlFile, "vehicle.turnOnVehicle#toggleButton")
56 if turnOnButtonStr ~= nil then
57 self.turnOnVehicle.toggleTurnOnInputBinding = InputBinding[turnOnButtonStr]
58 end
59
60 self.turnOnVehicle.toggleTurnOnInputBinding = Utils.getNoNil(self.turnOnVehicle.toggleTurnOnInputBinding, InputBinding.IMPLEMENT_EXTRA)
61 self.turnOnVehicle.turnOffText = Utils.getNoNil(getXMLString(self.xmlFile, "vehicle.turnOnVehicle#turnOffText"), "action_turnOffOBJECT")
62 self.turnOnVehicle.turnOnText = Utils.getNoNil(getXMLString(self.xmlFile, "vehicle.turnOnVehicle#turnOnText"), "action_turnOnOBJECT")
63 self.turnOnVehicle.needsSelection = Utils.getNoNil(getXMLBool(self.xmlFile, "vehicle.turnOnVehicle#needsSelection"), true)
64 self.turnOnVehicle.isTurnedOn = false
65 self.turnOnVehicle.isAlwaysTurnedOn = Utils.getNoNil(getXMLBool(self.xmlFile, "vehicle.turnOnVehicle#isAlwaysTurnedOn"), false)
66 self.turnOnVehicle.motorNotStartedWarning = string.format(g_i18n:getText(Utils.getNoNil(getXMLString(self.xmlFile, "vehicle.turnOnVehicle#motorNotStartedWarning"), "warning_motorNotStarted")), self.typeDesc);
67
68 if self.isClient then
69 self.turnOnVehicle.rotationNodes = Utils.loadRotationNodes(self.xmlFile, {}, "vehicle.turnedOnRotationNodes.turnedOnRotationNode", "turnOn", self.components)
70
71 local turnOnAnimation = getXMLString(self.xmlFile, "vehicle.turnOnVehicle.turnedAnimation#name")
72 if turnOnAnimation ~= nil then
73 self.turnOnVehicle.turnOnAnimation = {}
74 self.turnOnVehicle.turnOnAnimation.name = turnOnAnimation
75 self.turnOnVehicle.turnOnAnimation.turnOnSpeedScale = Utils.getNoNil(getXMLFloat(self.xmlFile, "vehicle.turnOnVehicle.turnedAnimation#turnOnSpeedScale"), 1)
76 self.turnOnVehicle.turnOnAnimation.turnOffSpeedScale = Utils.getNoNil(getXMLFloat(self.xmlFile, "vehicle.turnOnVehicle.turnedAnimation#turnOffSpeedScale"), -self.turnOnVehicle.turnOnAnimation.turnOnSpeedScale)
77 end
78
79 local turnedOnAnimation = getXMLString(self.xmlFile, "vehicle.turnOnVehicle.turnedOnAnimation#name")
80 if turnedOnAnimation ~= nil then
81 self.turnOnVehicle.turnedOnAnimation = {}
82 self.turnOnVehicle.turnedOnAnimation.name = turnedOnAnimation
83 self.turnOnVehicle.turnedOnAnimation.turnOnFadeTime = Utils.getNoNil(getXMLFloat(self.xmlFile, "vehicle.turnOnVehicle.turnedOnAnimation#turnOnFadeTime"), 1) * 1000
84 self.turnOnVehicle.turnedOnAnimation.turnOffFadeTime = Utils.getNoNil(getXMLFloat(self.xmlFile, "vehicle.turnOnVehicle.turnedOnAnimation#turnOffFadeTime"), 1) * 1000
85 self.turnOnVehicle.turnedOnAnimation.speedScale = Utils.getNoNil(getXMLFloat(self.xmlFile, "vehicle.turnOnVehicle.turnedOnAnimation#speedScale"), 1)
86 self.turnOnVehicle.turnedOnAnimation.speedDirection = 0
87 self.turnOnVehicle.turnedOnAnimation.currentSpeed = 0
88 end
89
90 self.turnOnVehicle.sampleTurnedOnStart = SoundUtil.loadSample(self.xmlFile, {}, "vehicle.turnOnVehicle.turnedOnStartSound", nil, self.baseDirectory)
91 self.turnOnVehicle.sampleTurnedOn = SoundUtil.loadSample(self.xmlFile, {}, "vehicle.turnOnVehicle.turnedOnSound", nil, self.baseDirectory, self.components[1].node)
92 self.turnOnVehicle.sampleTurnedOnStop = SoundUtil.loadSample(self.xmlFile, {}, "vehicle.turnOnVehicle.turnedOnStopSound", nil, self.baseDirectory)
93 end
94
95 self:addConflictCheckedInput(self.turnOnVehicle.toggleTurnOnInputBinding)
96end

loadInputAttacherJoint

Description
Called on loading
Definition
loadInputAttacherJoint(table savegame)
Arguments
tablesavegamesavegame
Code
101function TurnOnVehicle:loadInputAttacherJoint(superFunc, xmlFile, key, inputAttacherJoint, i)
102 if superFunc ~= nil then
103 if not superFunc(self, xmlFile, key, inputAttacherJoint, i) then
104 return false
105 end
106 end
107
108 inputAttacherJoint.canBeTurnedOn = Utils.getNoNil(getXMLBool(xmlFile, key.. "#canBeTurnedOn"), true)
109
110 return true
111end

loadWorkAreaFromXML

Description
Loads work areas from xml
Definition
loadWorkAreaFromXML(table workArea, integer xmlFile, string key)
Arguments
tableworkAreaworkArea
integerxmlFileid of xml object
stringkeykey
Code
118function TurnOnVehicle:loadWorkAreaFromXML(superFunc, workArea, xmlFile, key)
119 local retValue = true
120 if superFunc ~= nil then
121 retValue = superFunc(self, workArea, xmlFile, key)
122 end
123
124 workArea.needsSetIsTurnedOn = Utils.getNoNil( getXMLBool(xmlFile, key.."#needsSetIsTurnedOn"), true )
125
126 return retValue
127end

delete

Description
Called on deleting
Definition
delete()
Code
131function TurnOnVehicle:delete()
132 if self.isClient then
133 SoundUtil.deleteSample(self.turnOnVehicle.sampleTurnedOnStart)
134 SoundUtil.deleteSample(self.turnOnVehicle.sampleTurnedOn)
135 SoundUtil.deleteSample(self.turnOnVehicle.sampleTurnedOnStop)
136 end
137end

readStream

Description
Called on client side on join
Definition
readStream(integer streamId, integer connection)
Arguments
integerstreamIdstreamId
integerconnectionconnection
Code
143function TurnOnVehicle:readStream(streamId, connection)
144 local turnedOn = streamReadBool(streamId)
145 self:setIsTurnedOn(turnedOn, true)
146end

writeStream

Description
Called on server side on join
Definition
writeStream(integer streamId, integer connection)
Arguments
integerstreamIdstreamId
integerconnectionconnection
Code
152function TurnOnVehicle:writeStream(streamId, connection)
153 streamWriteBool(streamId, self.turnOnVehicle.isTurnedOn)
154end

update

Description
Called on update
Definition
update(float dt)
Arguments
floatdttime since last call in ms
Code
165function TurnOnVehicle:update(dt)
166 if self:getIsActive() then
167 if self:getCanBeTurnedOn() then
168 if InputBinding.hasEvent(self.turnOnVehicle.toggleTurnOnInputBinding) then
169 if self:getIsActiveForInput(self.turnOnVehicle.needsSelection) and not self:hasInputConflictWithSelection() then
170 if self:getIsTurnedOnAllowed(not self.turnOnVehicle.isTurnedOn) then
171 self:setIsTurnedOn(not self.turnOnVehicle.isTurnedOn)
172 else
173 if not self.turnOnVehicle.isTurnedOn then
174 local warning = self:getTurnedOnNotAllowedWarning()
175 if warning ~= nil then
176 g_currentMission:showBlinkingWarning(warning, 2000)
177 end
178 end
179 end
180 end
181 end
182 end
183 end
184 if self.isClient then
185 Utils.updateRotationNodes(self, self.turnOnVehicle.rotationNodes, dt, self:getIsActive() and self:getIsTurnedOn())
186
187 if self:getIsTurnedOn() then
188 if self:getIsActiveForSound() then
189 if not SoundUtil.isSamplePlaying(self.turnOnVehicle.sampleTurnedOnStart, 1.8*dt) then
190 SoundUtil.playSample(self.turnOnVehicle.sampleTurnedOn, 0, 0, nil)
191 end
192 SoundUtil.stop3DSample(self.turnOnVehicle.sampleTurnedOn)
193 else
194 SoundUtil.stopSample(self.turnOnVehicle.sampleTurnedOn, true)
195 SoundUtil.play3DSample(self.turnOnVehicle.sampleTurnedOn)
196 end
197 end
198
199 if self.playAnimation ~= nil and self.turnOnVehicle.turnedOnAnimation ~= nil and self.turnOnVehicle.turnedOnAnimation.speedDirection ~= 0 then
200 local duration = self.turnOnVehicle.turnedOnAnimation.turnOnFadeTime
201 if self.turnOnVehicle.turnedOnAnimation.speedDirection == -1 then
202 duration = self.turnOnVehicle.turnedOnAnimation.turnOffFadeTime
203 end
204 self.turnOnVehicle.turnedOnAnimation.currentSpeed = Utils.clamp(self.turnOnVehicle.turnedOnAnimation.currentSpeed + self.turnOnVehicle.turnedOnAnimation.speedDirection * dt/duration, 0, 1)
205 self:setAnimationSpeed(self.turnOnVehicle.turnedOnAnimation.name, self.turnOnVehicle.turnedOnAnimation.currentSpeed*self.turnOnVehicle.turnedOnAnimation.speedScale)
206 if self.turnOnVehicle.turnedOnAnimation.speedDirection == -1 and self.turnOnVehicle.turnedOnAnimation.currentSpeed == 0 then
207 self:stopAnimation(self.turnOnVehicle.turnedOnAnimation.name, true)
208 end
209
210 if self.turnOnVehicle.turnedOnAnimation.currentSpeed == 1 or self.turnOnVehicle.turnedOnAnimation.currentSpeed == 0 then
211 self.turnOnVehicle.turnedOnAnimation.speedDirection = 0
212 end
213 end
214 end
215end

draw

Description
Called on draw
Definition
draw()
Code
222function TurnOnVehicle:draw()
223 if self:getCanAddHelpButtonText() then
224 if self.isClient then
225 if self:getCanBeTurnedOn() then
226 if self:getIsActiveForInput(self.turnOnVehicle.needsSelection) and not self:hasInputConflictWithSelection() then
227 if self:getIsTurnedOnAllowed(not self.turnOnVehicle.isTurnedOn) then
228 if self.turnOnVehicle.isTurnedOn then
229 g_currentMission:addHelpButtonText(string.format(g_i18n:getText(self.turnOnVehicle.turnOffText), self.typeDesc), self.turnOnVehicle.toggleTurnOnInputBinding, nil, GS_PRIO_HIGH)
230 else
231 g_currentMission:addHelpButtonText(string.format(g_i18n:getText(self.turnOnVehicle.turnOnText), self.typeDesc), self.turnOnVehicle.toggleTurnOnInputBinding, nil, GS_PRIO_HIGH)
232 end
233 end
234 end
235 end
236 end
237 end
238end

onLeave

Description
Called on leaving the vehicle
Definition
onLeave()
Code
242function TurnOnVehicle:onLeave()
243 if self:getDeactivateOnLeave() then
244 self:setIsTurnedOn(false, true)
245 end
246end

onDeactivate

Description
Called on deactivate
Definition
onDeactivate()
Code
250function TurnOnVehicle:onDeactivate()
251 self:setIsTurnedOn(false, true)
252end

onDetach

Description
Called if vehicle gets detached
Definition
onDetach()
Code
256function TurnOnVehicle:onDetach()
257 self:setIsTurnedOn(false, true)
258end

setIsTurnedOn

Description
Set is turned on state
Definition
setIsTurnedOn(boolean isTurnedOn, boolean noEventSend)
Arguments
booleanisTurnedOnnew is is turned on state
booleannoEventSendno event send
Code
264function TurnOnVehicle:setIsTurnedOn(isTurnedOn, noEventSend)
265 if isTurnedOn ~= self.turnOnVehicle.isTurnedOn then
266 SetTurnedOnEvent.sendEvent(self, isTurnedOn, noEventSend)
267 self.turnOnVehicle.isTurnedOn = isTurnedOn
268 if self.turnOnVehicle.isTurnedOn then
269 self:onTurnedOn(noEventSend)
270 else
271 self:onTurnedOff(noEventSend)
272 end
273 end
274end

onTurnedOff

Description
Called on turn off
Definition
onTurnedOff(boolean noEventSend)
Arguments
booleannoEventSendno event send
Code
279function TurnOnVehicle:onTurnedOff(noEventSend)
280 if self.isClient then
281 if self.playAnimation ~= nil then
282 if self.turnOnVehicle.turnOnAnimation ~= nil then
283 self:playAnimation(self.turnOnVehicle.turnOnAnimation.name, self.turnOnVehicle.turnOnAnimation.turnOffSpeedScale, self:getAnimationTime(self.turnOnVehicle.turnOnAnimation.name), true)
284 end
285 if self.turnOnVehicle.turnedOnAnimation ~= nil then
286 self.turnOnVehicle.turnedOnAnimation.speedDirection = -1
287 end
288 end
289 SoundUtil.stopSample(self.turnOnVehicle.sampleTurnedOnStart, true)
290 SoundUtil.stopSample(self.turnOnVehicle.sampleTurnedOn, true)
291 SoundUtil.stop3DSample(self.turnOnVehicle.sampleTurnedOn)
292 if self:getIsActiveForSound() then
293 SoundUtil.playSample(self.turnOnVehicle.sampleTurnedOnStop, 1, 0, nil)
294 end
295 end
296end

onTurnedOn

Description
Called on turn on
Definition
onTurnedOn(boolean noEventSend)
Arguments
booleannoEventSendno event send
Code
301function TurnOnVehicle:onTurnedOn(noEventSend)
302
303 if self.isClient then
304 if self.playAnimation ~= nil then
305 if self.turnOnVehicle.turnOnAnimation ~= nil then
306 self:playAnimation(self.turnOnVehicle.turnOnAnimation.name, self.turnOnVehicle.turnOnAnimation.turnOnSpeedScale, self:getAnimationTime(self.turnOnVehicle.turnOnAnimation.name), true)
307 end
308 if self.turnOnVehicle.turnedOnAnimation ~= nil then
309 self.turnOnVehicle.turnedOnAnimation.speedDirection = 1
310 self:playAnimation(self.turnOnVehicle.turnedOnAnimation.name, self.turnOnVehicle.turnedOnAnimation.currentSpeed*self.turnOnVehicle.turnedOnAnimation.speedScale, self:getAnimationTime(self.turnOnVehicle.turnedOnAnimation.name), true)
311 end
312 end
313 SoundUtil.stopSample(self.turnOnVehicle.sampleTurnedOnStop, true)
314 SoundUtil.stopSample(self.turnOnVehicle.sampleTurnedOn, true)
315 SoundUtil.stop3DSample(self.turnOnVehicle.sampleTurnedOn)
316 if self:getIsActiveForSound() then
317 SoundUtil.playSample(self.turnOnVehicle.sampleTurnedOnStart, 1, 0, nil)
318 end
319 end
320end

getIsTurnedOn

Description
Returns if vehicle is turned on
Definition
getIsTurnedOn()
Return Values
booleanisTurnedOnvehicle is turned on
Code
325function TurnOnVehicle:getIsTurnedOn()
326 return self.turnOnVehicle.isAlwaysTurnedOn or self.turnOnVehicle.isTurnedOn
327end

getCanBeTurnedOn

Description
Returns if can be turned on
Definition
getCanBeTurnedOn()
Return Values
booleancanBeTurnedOnvehicle can be turned on
Code
332function TurnOnVehicle:getCanBeTurnedOn()
333 if self.turnOnVehicle.isAlwaysTurnedOn then
334 return false
335 end
336 if self.attacherJoint ~= nil and self.attacherJoint.canBeTurnedOn ~= nil and not self.attacherJoint.canBeTurnedOn then
337 return false
338 end
339
340 return true
341end

getCanAddHelpButtonText

Description
Returns if vehicle can add 'turn on' help button text
Definition
getCanAddHelpButtonText()
Return Values
booleancanAddcan add help button text
Code
346function TurnOnVehicle:getCanAddHelpButtonText(superFunc)
347 if superFunc ~= nil then
348 return superFunc(self)
349 end
350 return true
351end

getIsTurnedOnAllowed

Description
Returns if turn on is allowed
Definition
getIsTurnedOnAllowed(boolean isTurnedOn)
Arguments
booleanisTurnedOnis turned on
Return Values
booleanallowallow turn on
Code
357function TurnOnVehicle:getIsTurnedOnAllowed(isTurnedOn)
358 if self.turnOnVehicle.isAlwaysTurnedOn then
359 return false
360 end
361 --return true
362 if self.getIsMotorStarted ~= nil then
363 return self:getIsMotorStarted()
364 else
365 local rootAttacherVehicle = self:getRootAttacherVehicle()
366 if rootAttacherVehicle ~= self then
367 if rootAttacherVehicle.getIsMotorStarted ~= nil then
368 return rootAttacherVehicle:getIsMotorStarted()
369 end
370 end
371 end
372 return true
373end

getTurnedOnNotAllowedWarning

Description
Returns turn on not allowed warning text
Definition
getTurnedOnNotAllowedWarning()
Return Values
stringwarningTextturn on not allowed warning text
Code
378function TurnOnVehicle:getTurnedOnNotAllowedWarning()
379 if self.getIsMotorStarted ~= nil then
380 if not self:getIsMotorStarted() then
381 return self.turnOnVehicle.motorNotStartedWarning;
382 end;
383 end;
384
385 return nil;
386end

getIsWorkAreaActive

Description
Returns true if work area is active
Definition
getIsWorkAreaActive(table workArea)
Arguments
tableworkAreaworkArea
Return Values
booleanisActivework area is active
Code
392function TurnOnVehicle:getIsWorkAreaActive(superFunc, workArea)
393 if not self:getIsTurnedOn() and workArea.needsSetIsTurnedOn then
394 return false
395 end
396
397 if superFunc ~= nil then
398 return superFunc(self, workArea)
399 end
400 return true
401end

onAiTurnOff

Description
Called on ai turn off
Definition
onAiTurnOff()
Code
405function TurnOnVehicle:onAiTurnOff()
406 self:setIsTurnedOn(false)
407end

getIsAIReadyForWork

Description
Returns true if vehicle is ready for ai work
Definition
getIsAIReadyForWork()
Return Values
booleanisReadyis ready for ai work
Code
412function TurnOnVehicle:getIsAIReadyForWork()
413 if self:getCanBeTurnedOn() then
414 if self:getIsTurnedOn() then
415 return true
416 else
417 if self:getIsTurnedOnAllowed(true) then
418 self:setIsTurnedOn(true)
419 end
420 return false
421 end
422 else
423 return true
424 end
425end

getIsOperating

Description
Returns if vehicle is operating
Definition
getIsOperating()
Return Values
booleanisOperatingis operating
Code
430function TurnOnVehicle:getIsOperating(superFunc)
431 if self:getIsTurnedOn() then
432 return true
433 end
434
435 local isOperating = false
436 if superFunc ~= nil then
437 isOperating = superFunc(self)
438 end
439
440 return isOperating
441end