LUADOC - Farming Simulator 17

Printable Version

Script v1.4.4.0

Engine v7.0.0.2

Foundation Reference

FuelTrailer

Description
Class for fuel trailers
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
17function FuelTrailer.prerequisitesPresent(specializations)
18 return not SpecializationUtil.hasSpecialization(Motorized, specializations) and SpecializationUtil.hasSpecialization(Fillable, specializations);
19end;

load

Description
Called on loading
Definition
load(table savegame)
Arguments
tablesavegamesavegame
Code
24function FuelTrailer:load(savegame)
25
26 self.setIsFuelFilling = SpecializationUtil.callSpecializationsFunction("setIsFuelFilling");
27 self.addFuelFillTrigger = FuelTrailer.addFuelFillTrigger;
28 self.removeFuelFillTrigger = FuelTrailer.removeFuelFillTrigger;
29
30 self.fuelTrailerFillActivatable = FuelTrailerFillActivatable:new(self);
31
32 self.fuelFillTriggers = {};
33 self.isFuelFilling = false;
34
35 self.fuelTrailer = {}
36 self.fuelTrailer.fillUnitIndex = 1
37
38 self.fuelFillLitersPerSecond = Utils.getNoNil(getXMLFloat(self.xmlFile, "vehicle.fuelFillLitersPerSecond"), 50);
39
40 local gasStationTriggerNode = Utils.indexToObject(self.components, getXMLString(self.xmlFile, "vehicle.gasStationTrigger#index"));
41
42 if gasStationTriggerNode ~= nil then
43 self.gasStationTrigger = GasStation:new(gasStationTriggerNode, self);
44 end;
45
46 if self.isClient then
47 self.sampleRefuel = SoundUtil.loadSample(self.xmlFile, {}, "vehicle.refuelSound", "$data/maps/sounds/refuel.wav", self.baseDirectory, self.components[1].node);
48 end;
49end;

delete

Description
Called on deleting
Definition
delete()
Code
53function FuelTrailer:delete()
54 for _, trigger in pairs(self.fuelFillTriggers) do
55 trigger:onVehicleDeleted(self);
56 end
57 g_currentMission:removeActivatableObject(self.fuelTrailerFillActivatable);
58 if self.gasStationTrigger ~= nil then
59 self.gasStationTrigger:delete();
60 self.gasStationTrigger = nil;
61 end;
62 if self.isClient then
63 SoundUtil.deleteSample(self.sampleRefuel);
64 end;
65end;

mouseEvent

Description
Called on mouse event
Definition
mouseEvent(float posX, float posY, boolean isDown, boolean isUp, integer button)
Arguments
floatposXx position
floatposYy position
booleanisDownis mouse button down
booleanisUpis mouse button up
integerbuttonmouse button
Code
74function FuelTrailer:mouseEvent(posX, posY, isDown, isUp, button)
75end;

readStream

Description
Called on client side on join
Definition
readStream(integer streamId, integer connection)
Arguments
integerstreamIdstreamId
integerconnectionconnection
Code
84function FuelTrailer:readStream(streamId, connection)
85 local isFuelFilling = streamReadBool(streamId);
86 self:setIsFuelFilling(isFuelFilling, true);
87end;

writeStream

Description
Called on server side on join
Definition
writeStream(integer streamId, integer connection)
Arguments
integerstreamIdstreamId
integerconnectionconnection
Code
93function FuelTrailer:writeStream(streamId, connection)
94 streamWriteBool(streamId, self.isFuelFilling);
95end;

updateTick

Description
Called on update tick
Definition
updateTick(float dt)
Arguments
floatdttime since last call in ms
Code
109function FuelTrailer:updateTick(dt)
110
111 if self.isServer and self.isFuelFilling then
112 local delta = 0;
113 if self.fuelFillTrigger ~= nil then
114 delta = self.fuelFillLitersPerSecond*dt*0.001;
115 delta = self.fuelFillTrigger:fillFuel(self, delta);
116 end
117
118 if delta <= 0 then
119 self:setIsFuelFilling(false);
120 end
121 end
122end;

draw

Description
Called on draw
Definition
draw()
Code
126function FuelTrailer:draw()
127 if self.isClient then
128
129 if self:getUnitFillLevel(self.fuelTrailer.fillUnitIndex) <= 0 and self:getUnitCapacity(self.fuelTrailer.fillUnitIndex) ~= 0 then
130 g_currentMission:addExtraPrintText(g_i18n:getText("info_firstFillTheTool"));
131 end;
132 end
133end;

setIsFuelFilling

Description
Set is fuel filling
Definition
setIsFuelFilling(boolean isFilling, boolean noEventSend)
Arguments
booleanisFillingnew is filling state
booleannoEventSendno event send
Code
139function FuelTrailer:setIsFuelFilling(isFilling, noEventSend)
140 if isFilling ~= self.isFuelFilling then
141 if noEventSend == nil or noEventSend == false then
142 if g_server ~= nil then
143 g_server:broadcastEvent(SteerableToggleRefuelEvent:new(self, isFilling), nil, nil, self);
144 else
145 g_client:getServerConnection():sendEvent(SteerableToggleRefuelEvent:new(self, isFilling));
146 end;
147 end;
148 self.isFuelFilling = isFilling;
149 if isFilling then
150 -- find the first trigger which is activable
151 self.fuelFillTrigger = nil;
152 for i=1, table.getn(self.fuelFillTriggers) do
153 local trigger = self.fuelFillTriggers[i];
154 if trigger:getIsActivatable(self) then
155 self.fuelFillTrigger = trigger;
156 break;
157 end;
158 end;
159 end
160 if self.isClient and self.sampleRefuel ~= nil then
161 if isFilling then
162 SoundUtil.play3DSample(self.sampleRefuel);
163 else
164 SoundUtil.stop3DSample(self.sampleRefuel);
165 end;
166 end;
167 end
168end

addFuelFillTrigger

Description
Adds fuel fill trigger if vehicle enters one
Definition
addFuelFillTrigger(table trigger)
Arguments
tabletriggertrigger
Code
173function FuelTrailer:addFuelFillTrigger(trigger)
174 if table.getn(self.fuelFillTriggers) == 0 then
175 g_currentMission:addActivatableObject(self.fuelTrailerFillActivatable);
176 end;
177 table.insert(self.fuelFillTriggers, trigger);
178end;

removeFuelFillTrigger

Description
Removes fuel fill trigger if vehicle leaves one
Definition
removeFuelFillTrigger(table trigger)
Arguments
tabletriggertrigger
Code
183function FuelTrailer:removeFuelFillTrigger(trigger)
184 for i=1, table.getn(self.fuelFillTriggers) do
185 if self.fuelFillTriggers[i] == trigger then
186 table.remove(self.fuelFillTriggers, i);
187 break;
188 end;
189 end;
190 if table.getn(self.fuelFillTriggers) == 0 or trigger == self.fuelFillTrigger then
191 if self.isServer then
192 self:setIsFuelFilling(false);
193 end;
194 if table.getn(self.fuelFillTriggers) == 0 then
195 g_currentMission:removeActivatableObject(self.fuelTrailerFillActivatable);
196 end
197 end;
198end;