LUADOC - Farming Simulator 17

Printable Version

Script v1.4.4.0

Engine v7.0.0.2

Foundation Reference

Cover

Description
Class for vehicles with a cover
Functions

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
19function Cover.prerequisitesPresent(specializations)
20 return SpecializationUtil.hasSpecialization(AnimatedVehicle, specializations);
21end

preLoad

Description
Called before loading
Definition
preLoad(table savegame)
Arguments
tablesavegamesavegame
Code
26function Cover:preLoad(savegame)
27 self.getIsToggleCoverAllowed = Cover.getIsToggleCoverAllowed;
28 self.allowFillType = Utils.overwrittenFunction(self.allowFillType, Cover.allowFillType);
29 self.getAllowFillFromAir = Utils.overwrittenFunction(self.getAllowFillFromAir, Cover.getAllowFillFromAir);
30 self.setCoverState = Cover.setCoverState;
31end

load

Description
Called on loading
Definition
load(table savegame)
Arguments
tablesavegamesavegame
Code
36function Cover:load(savegame)
37 self.addFillTrigger = Utils.overwrittenFunction(self.addFillTrigger, Cover.addFillTrigger);
38 self.removeFillTrigger = Utils.overwrittenFunction(self.removeFillTrigger, Cover.removeFillTrigger);
39
40 self.coverAnimation = getXMLString(self.xmlFile, "vehicle.cover#animationName");
41 if self.coverAnimation ~= nil then
42 local isOpen = Utils.getNoNil(getXMLBool(self.xmlFile, "vehicle.cover#openOnBuy"), false);
43 if savegame ~= nil then
44 isOpen = Utils.getNoNil(getXMLBool(savegame.xmlFile, savegame.key.."#isCoverOpen"), isOpen);
45 end
46 self:setCoverState(isOpen, true);
47
48 self.forceOpenOnTip = Utils.getNoNil(getXMLBool(self.xmlFile, "vehicle.cover#forceOpenOnTip"), true);
49 self.autoReactToTrigger = Utils.getNoNil(getXMLBool(self.xmlFile, "vehicle.cover#autoReactToTrigger"), false);
50 else
51 self.isCoverOpen = true;
52 end
53end

getSaveAttributesAndNodes

Description
Returns attributes and nodes to save
Definition
getSaveAttributesAndNodes(table nodeIdent)
Arguments
tablenodeIdentnode ident
Return Values
stringattributesattributes
stringnodesnodes
Code
60function Cover:getSaveAttributesAndNodes(nodeIdent)
61 if self.coverAnimation ~= nil then
62 local attributes = 'isCoverOpen="'..tostring(self.isCoverOpen)..'"';
63 return attributes, nil;
64 end
65 return nil;
66end

readStream

Description
Called on client side on join
Definition
readStream(integer streamId, integer connection)
Arguments
integerstreamIdstreamId
integerconnectionconnection
Code
81function Cover:readStream(streamId, connection)
82 if connection:getIsServer() then
83 if self.coverAnimation ~= nil then
84 local isOpen = streamReadBool(streamId);
85 self:setCoverState(isOpen, true);
86 end
87 end
88end

writeStream

Description
Called on server side on join
Definition
writeStream(integer streamId, integer connection)
Arguments
integerstreamIdstreamId
integerconnectionconnection
Code
94function Cover:writeStream(streamId, connection)
95 if not connection:getIsServer() then
96 if self.coverAnimation ~= nil then
97 streamWriteBool(streamId, self.isCoverOpen);
98 end
99 end
100end

update

Description
Called on update
Definition
update(float dt)
Arguments
floatdttime since last call in ms
Code
105function Cover:update(dt)
106 if self:getIsActiveForInput() then
107 if self.coverAnimation ~= nil then
108 if InputBinding.hasEvent(InputBinding.TOGGLE_COVER) then
109 if self:getIsToggleCoverAllowed(not self.isCoverOpen) then
110 self:setCoverState(not self.isCoverOpen);
111 end
112 end
113 end
114 end
115end

draw

Description
Called on draw
Definition
draw()
Code
119function Cover:draw()
120 if self.isClient and self:getIsActiveForInput(true) then
121 if self.coverAnimation ~= nil and self:getIsToggleCoverAllowed(not self.isCoverOpen) then
122 if self.isCoverOpen then
123 g_currentMission:addHelpButtonText(g_i18n:getText("action_closeCover"), InputBinding.TOGGLE_COVER, nil, GS_PRIO_NORMAL);
124 else
125 g_currentMission:addHelpButtonText(g_i18n:getText("action_openCover"), InputBinding.TOGGLE_COVER, nil, GS_PRIO_NORMAL);
126 end
127 end
128 end
129-- if self.isServer then
130-- if self.autoReactToTrigger then
131-- if shouldOpen ~= self.isCoverOpen then
132-- self:setCoverState(shouldOpen);
133-- end
134-- end
135-- end
136end

getIsToggleCoverAllowed

Description
Returns if toggle cover is allowed
Definition
getIsToggleCoverAllowed(boolean isCoverOpen)
Arguments
booleanisCoverOpenis cover open
Return Values
booleanallowallows cover toggle
Code
142function Cover:getIsToggleCoverAllowed(isCoverOpen)
143 if self.tipState ~= nil then
144 return self.tipState == Trailer.TIPSTATE_CLOSED;
145 end
146 return true;
147end

allowFillType

Description
Returns if fill type is allowed (overwritten to block if cover is closed)
Definition
allowFillType(integer fillType, boolean allowEmptying)
Arguments
integerfillTypefill type
booleanallowEmptyingallow emptying
Return Values
booleanallowallow fill type
Code
154function Cover:allowFillType(superFunc, fillType, allowEmptying)
155 if not self.isCoverOpen then
156 return false;
157 end
158
159 if superFunc ~= nil then
160 return superFunc(self, fillType, allowEmptying);
161 end
162
163 return true;
164end

setCoverState

Description
Set cover state
Definition
setCoverState(boolean isOpen, boolean noEventSend)
Arguments
booleanisOpennew is open state
booleannoEventSendno event send
Code
170function Cover:setCoverState(isOpen, noEventSend)
171 if self.coverAnimation ~= nil then
172 SetCoverStateEvent.sendEvent(self, isOpen, noEventSend);
173 self.isCoverOpen = isOpen;
174
175 if isOpen then
176 self:playAnimation(self.coverAnimation, -1, self:getAnimationTime(self.coverAnimation), true);
177 else
178 self:playAnimation(self.coverAnimation, 1, self:getAnimationTime(self.coverAnimation), true);
179 end
180 end
181end

getAllowFillFromAir

Description
Returns if fill from air is allowed
Definition
getAllowFillFromAir()
Return Values
booleanisAllowedfill from air is allowed
Code
186function Cover:getAllowFillFromAir(superFunc)
187 if not self.isCoverOpen then
188 return false;
189 end
190
191 if superFunc ~= nil then
192 return superFunc(self);
193 end
194
195 return true
196end

addFillTrigger

Description
Called if vehicle is in fill trigger
Definition
addFillTrigger(table trigger)
Arguments
tabletriggertrigger
Code
201function Cover:addFillTrigger(superFunc, trigger)
202 if superFunc ~= nil then
203 superFunc(self, trigger);
204 end
205 if self.fillTriggers ~= nil and table.getn(self.fillTriggers) > 0 then
206 self:setCoverState(true);
207 end
208end

removeFillTrigger

Description
Called if vehicle leaves fill trigger
Definition
removeFillTrigger(table trigger)
Arguments
tabletriggertrigger
Code
213function Cover:removeFillTrigger(superFunc, trigger)
214 if superFunc ~= nil then
215 superFunc(self, trigger);
216 end
217 if self.fillTriggers ~= nil and table.getn(self.fillTriggers) == 0 and self.autoReactToTrigger then
218 self:setCoverState(false);
219 end
220end

onStartTip

Description
Called on start tipping
Definition
onStartTip(table tipTrigger, integer tipReferencePointIndex, boolean noEventSend)
Arguments
tabletipTriggertip trigger
integertipReferencePointIndexindex of tip reference point
booleannoEventSendno event send
Code
227function Cover:onStartTip(tipTrigger, tipReferencePointIndex, noEventSend)
228 if self.coverAnimation ~= nil then
229 if self.forceOpenOnTip then
230 self:setCoverState(true, true);
231 end
232 end
233end