LUADOC - Farming Simulator 17

Printable Version

WaterTrailerFillTrigger

Description
Class for water trailer fill triggers
Functions

onCreate

Description
On create trigger
Definition
onCreate(integer id)
Arguments
integeridid of trigger node
Code
15function WaterTrailerFillTrigger:onCreate(id)
16 g_currentMission:addNonUpdateable(WaterTrailerFillTrigger:new(id));
17end;

new

Description
Create water trailer fill trigger object
Definition
new(integer nodeId, table trailer)
Arguments
integernodeIdid of trigger node
tabletrailertrailer if trigger is mounted to trailer
Return Values
tableinstanceinstance
Code
24function WaterTrailerFillTrigger:new(nodeId, trailer)
25 local self = {};
26 setmetatable(self, WaterTrailerFillTrigger_mt);
27
28 self.triggerId = Utils.getNoNil(Utils.indexToObject(nodeId, getUserAttribute(nodeId, "triggerIndex")), nodeId)
29 addTrigger(self.triggerId, "triggerCallback", self);
30
31 self.priceScale = Utils.getNoNil(getUserAttribute(nodeId, "priceScale"), 1);
32
33 self.trailer = trailer;
34
35 self.triggeredTrailers = {};
36
37 self.isEnabled = true;
38
39 return self;
40end;

delete

Description
Delete water trailer fill trigger
Definition
delete()
Code
44function WaterTrailerFillTrigger:delete()
45 for trailer, _ in pairs(self.triggeredTrailers) do
46 if trailer.removeWaterTrailerFillTrigger ~= nil then
47 trailer:removeWaterTrailerFillTrigger(self);
48 end
49 end
50 removeTrigger(self.triggerId);
51end;

onVehicleDeleted

Description
Called on vehicle deleted and remove vehicle from triggered vehicles
Definition
onVehicleDeleted()
Code
55function WaterTrailerFillTrigger:onVehicleDeleted(vehicle)
56 self.triggeredTrailers[vehicle] = nil;
57end

fillWater

Description
Fill vehicle from water trigger
Definition
fillWater(table vehicle, float delta)
Arguments
tablevehiclevehicle
floatdeltadelta to fill
Return Values
floatdeltareal delta filled
Code
64function WaterTrailerFillTrigger:fillWater(vehicle, delta)
65
66 if not vehicle:allowFillType(FillUtil.FILLTYPE_WATER, false) then
67 return 0;
68 end
69
70 if self.trailer ~= nil then
71 local trailerWaterFillLevel = self.trailer:getFillLevel(FillUtil.FILLTYPE_WATER);
72 if trailerWaterFillLevel > 0 then
73 delta = math.min(delta, trailerWaterFillLevel);
74 if delta <= 0 then
75 return 0;
76 end
77 else
78 return 0;
79 end
80 end
81
82 local oldFillLevel = vehicle:getFillLevel(FillUtil.FILLTYPE_WATER);
83 vehicle:setFillLevel(oldFillLevel + delta, FillUtil.FILLTYPE_WATER);
84 delta = vehicle:getFillLevel(FillUtil.FILLTYPE_WATER) - oldFillLevel;
85
86 if delta > 0 then
87 if self.trailer ~= nil then
88 self.trailer:setFillLevel(self.trailer:getFillLevel(FillUtil.FILLTYPE_WATER) - delta, FillUtil.FILLTYPE_WATER);
89 elseif self.priceScale > 0 then
90 local price = delta * g_currentMission.economyManager:getPricePerLiter(FillUtil.FILLTYPE_WATER) * self.priceScale;
91 g_currentMission.missionStats:updateStats("expenses", price);
92 g_currentMission:addSharedMoney(-price, "purchaseWater");
93 end
94 end
95 return delta;
96end

getIsActivatable

Description
Returns true if it is activateable
Definition
getIsActivatable(table vehicle)
Arguments
tablevehiclevehicle to check
Return Values
booleanisActivateableis activateable
Code
102function WaterTrailerFillTrigger:getIsActivatable(vehicle)
103 if self.trailer ~= nil then
104 if self.trailer:getFillLevel(FillUtil.FILLTYPE_WATER) <= 0 then
105 return false;
106 end
107 end
108 if not vehicle:allowFillType(FillUtil.FILLTYPE_WATER, false) then
109 return false;
110 end
111 return true;
112end

triggerCallback

Description
Trigger callback
Definition
triggerCallback(integer triggerId, integer otherActorId, boolean onEnter, boolean onLeave, boolean onStay, integer otherShapeId)
Arguments
integertriggerIdid of trigger
integerotherActorIdid of other actor
booleanonEnteron enter
booleanonLeaveon leave
booleanonStayon stay
integerotherShapeIdid of other shape
Code
122function WaterTrailerFillTrigger:triggerCallback(triggerId, otherActorId, onEnter, onLeave, onStay, otherShapeId)
123 if self.isEnabled and (onEnter or onLeave) then
124
125 local waterTrailer = g_currentMission.objectToTrailer[otherShapeId];
126
127 if waterTrailer ~= nil and waterTrailer ~= self.trailer and waterTrailer.addWaterTrailerFillTrigger ~= nil and waterTrailer.removeWaterTrailerFillTrigger ~= nil then
128 if onEnter then
129 self.triggeredTrailers[waterTrailer] = waterTrailer;
130 waterTrailer:addWaterTrailerFillTrigger(self);
131 else -- onLeave
132 self.triggeredTrailers[waterTrailer] = nil;
133 waterTrailer:removeWaterTrailerFillTrigger(self);
134 end;
135 end;
136 end;
137end;