LUADOC - Farming Simulator 17

Printable Version

LiquidManureFillTrigger

Description
Class for liquid manure fill triggers
Parent
FillTrigger
Functions

new

Description
Creating liquid manure fill trigger object
Definition
new(table mt)
Arguments
tablemtcustom metatable
Return Values
tableinstanceInstance of object
Code
17function LiquidManureFillTrigger:new(mt)
18 if mt == nil then
19 mt = LiquidManureFillTrigger_mt;
20 end
21 local self = FillTrigger:new(mt);
22
23 self.fillLevel = 0;
24 self.capacity = 800000;
25
26 self.vehiclesInRange = {};
27 self.playerInRange = false;
28
29 self.fillType = FillUtil.FILLTYPE_LIQUIDMANURE
30
31 return self;
32end

load

Description
Load liquid manure fill trigger
Definition
load(integer nodeId, table fillLevelObject, integer fillType)
Arguments
integernodeIdid of node
tablefillLevelObjectfill level object
integerfillTypefill type index
Return Values
booleansuccesssuccess
Code
40function LiquidManureFillTrigger:load(nodeId, fillLevelObject, fillType)
41
42 self.fillType = Utils.getNoNil(fillType, self.fillType)
43
44 if not LiquidManureFillTrigger:superClass().load(self, nodeId, self.fillType) then
45 return false;
46 end
47 self.fillLevelObject = fillLevelObject;
48
49 local capacityStr = getUserAttribute(nodeId, "capacity");
50 if capacityStr ~= nil then
51 self.capacity = Utils.getNoNil(tonumber(capacityStr), self.capacity);
52 end;
53
54 local minY, maxY = Utils.getVectorFromString(getUserAttribute(nodeId, "moveMinMaxY"));
55 if minY ~= nil and maxY ~= nil then
56 self.moveMinY = minY;
57 self.moveMaxY = maxY;
58 self.movingId = Utils.indexToObject(nodeId, getUserAttribute(nodeId, "movingIndex"));
59 end;
60
61 self.fillLevel = -1;
62 self:setFillLevel(0, true);
63
64 return true;
65end;

delete

Description
Deleting liquid manure fill trigger
Definition
delete()
Code
69function LiquidManureFillTrigger:delete()
70 LiquidManureFillTrigger:superClass().delete(self);
71end;

update

Description
Update
Definition
update(float dt)
Arguments
floatdttime since last call in ms
Code
78function LiquidManureFillTrigger:update(dt)
79 if self:getShowInfo() then
80 local fillTypeName = FillUtil.fillTypeIndexToDesc[self.fillType].nameI18N
81 g_currentMission:addExtraPrintText(fillTypeName .. " " ..g_i18n:getText("info_fillLevel").." "..math.floor(self.fillLevel).." ("..math.floor(100*self.fillLevel/self.capacity).."%)");
82 end;
83end;

fill

Description
Fill tool from fill trigger
Definition
fill(table tool, float delta)
Arguments
tabletooltool to fill
floatdeltadelta
Return Values
floatdeltareal delta
Code
90function LiquidManureFillTrigger:fill(tool, delta)
91 if not tool:allowFillType(self.fillType, false) then
92 return 0.0;
93 end
94
95 delta = math.max(math.min(delta, self.fillLevel), 0);
96
97 if delta > 0 then
98 local oldFillLevel = tool:getFillLevel(self.fillType);
99 tool:setFillLevel(oldFillLevel + delta, self.fillType, true);
100 delta = tool:getFillLevel(self.fillType) - oldFillLevel;
101 if delta > 0 then
102 self:setFillLevel(self.fillLevel - delta);
103 end;
104 end;
105 return delta;
106end;

setFillLevel

Description
Set fill level of liquid manure fill trigger
Definition
setFillLevel(float fillLevel, boolean noEventSend)
Arguments
floatfillLevelnew fill level
booleannoEventSendno event send
Code
112function LiquidManureFillTrigger:setFillLevel(fillLevel, noEventSend)
113
114 fillLevel = Utils.clamp(fillLevel, 0, self.capacity);
115 if self.fillLevel ~= fillLevel then
116 self.fillLevel = fillLevel;
117
118 if noEventSend == nil or not noEventSend then
119 self.fillLevelObject:liquidManureFillLevelChanged(fillLevel, self.fillType, self);
120 end
121
122 if self.fillLevelObject.isClient then
123 if self.movingId ~= nil then
124 local x,_,z = getTranslation(self.movingId);
125 local y = self.moveMinY + (self.moveMaxY - self.moveMinY)*self.fillLevel/self.capacity;
126 setTranslation(self.movingId, x,y,z);
127 end;
128 end;
129 end
130end;

getShowInfo

Description
Returns true if information should be shown
Definition
getShowInfo()
Return Values
booleanshowInfoshow information
Code
135function LiquidManureFillTrigger:getShowInfo()
136 if (g_currentMission.controlPlayer and self.playerInRange) then
137 return true;
138 end;
139 if not g_currentMission.controlPlayer then
140 for vehicle in pairs(self.vehiclesInRange) do
141 if vehicle:getIsActiveForInput(false) then
142 return true;
143 end;
144 end;
145 end;
146 return false;
147end;

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
157function LiquidManureFillTrigger:triggerCallback(triggerId, otherActorId, onEnter, onLeave, onStay, otherShapeId)
158 if self.isEnabled and (onEnter or onLeave) then
159
160 if g_currentMission.player ~= nil and otherActorId == g_currentMission.player.rootNode then
161 if onEnter then
162 self.playerInRange = true;
163 else
164 self.playerInRange = false;
165 end;
166 else
167 local vehicle = g_currentMission.nodeToVehicle[otherActorId];
168 if vehicle ~= nil then
169 if onEnter then
170 self.vehiclesInRange[vehicle] = true;
171 else
172 self.vehiclesInRange[vehicle] = nil;
173 end;
174 end;
175 end;
176 end
177
178 LiquidManureFillTrigger:superClass().triggerCallback(self, triggerId, otherActorId, onEnter, onLeave, onStay, otherShapeId);
179end;

getIsActivatable

Description
Returns true if is activateable
Definition
getIsActivatable(table fillable)
Arguments
tablefillablefillable
Return Values
booleanisActivatebaleis activateable
Code
185function LiquidManureFillTrigger:getIsActivatable(fillable)
186 if self.fillLevel <= 0 then
187 return false;
188 end;
189 return LiquidManureFillTrigger:superClass().getIsActivatable(self, fillable);
190end;