LUADOC - Farming Simulator 17

Printable Version

FillTrigger

Description
Class for fill triggers
Functions

onCreate

Description
onCreate trigger
Definition
onCreate(integer id)
Arguments
integeridid of trigger node
Code
15function FillTrigger:onCreate(id)
16 local trigger = FillTrigger:new();
17 if trigger:load(id) then
18 g_currentMission:addNonUpdateable(trigger);
19 else
20 trigger:delete();
21 end
22end;

new

Description
Create fill trigger object
Definition
new(table mt)
Arguments
tablemtcustom metatable (optional)
Return Values
tableinstanceinstance
Code
28function FillTrigger:new(mt)
29 local self = {};
30 if mt == nil then
31 mt = FillTrigger_mt;
32 end
33 setmetatable(self, mt);
34
35 self.triggerId = 0;
36 self.nodeId = 0;
37 self.financeCategory = "other";
38
39 self.moneyChangeId = getMoneyTypeId();
40
41 return self;
42end;

load

Description
Load fill trigger
Definition
load(integer nodeId, integer fillType, table parent)
Arguments
integernodeIdid of node
integerfillTypefill type index
tableparentparent
Return Values
booleansuccesssuccess
Code
50function FillTrigger:load(nodeId, fillType, parent)
51 self.nodeId = nodeId;
52
53 self.triggerId = Utils.indexToObject(nodeId, getUserAttribute(nodeId, "triggerIndex"));
54 if self.triggerId == nil then
55 self.triggerId = nodeId;
56 end
57 addTrigger(self.triggerId, "triggerCallback", self);
58
59 if fillType ~= nil then
60 self.fillType = fillType;
61 else
62 self.fillType = FillUtil.FILLTYPE_UNKNOWN;
63 local fillTypeStr = getUserAttribute(nodeId, "fillType");
64 if fillTypeStr ~= nil then
65 local desc = FillUtil.fillTypeNameToDesc[fillTypeStr];
66 if desc ~= nil then
67 self.fillType = desc.index;
68 end;
69 end
70 end;
71
72 self.parent = parent;
73
74 self.fillableObjects = {};
75
76 self.isEnabled = true;
77
78 return true;
79end;

delete

Description
Delete fill trigger
Definition
delete()
Code
83function FillTrigger:delete()
84 removeTrigger(self.triggerId);
85 for _,fillable in pairs(self.fillableObjects) do
86 if fillable ~= nil then
87 fillable:removeFillTrigger(self);
88 end
89 end
90end;

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
100function FillTrigger:triggerCallback(triggerId, otherActorId, onEnter, onLeave, onStay, otherShapeId)
101 if self.isEnabled and (onEnter or onLeave) then
102 local fillable = Utils.getNoNil(g_currentMission.objectToTrailer[otherShapeId], g_currentMission.objectToTrailer[otherActorId]);
103 if fillable ~= nil and fillable.addFillTrigger ~= nil and fillable.removeFillTrigger ~= nil and fillable ~= self.parent then
104 if onEnter then
105 if self.fillableObjects[fillable] == nil and fillable:allowFillType(self.fillType, false) then
106 fillable:addFillTrigger(self);
107 self.fillableObjects[fillable] = fillable;
108 end
109 else -- onLeave
110 fillable:removeFillTrigger(self);
111 g_currentMission:showMoneyChange(self.moneyChangeId, g_i18n:getText("finance_"..self.financeCategory));
112 self.fillableObjects[fillable] = nil;
113 end;
114 end;
115 end;
116end;

fill

Description
Fill tool from fill trigger
Definition
fill(table tool, float delta)
Arguments
tabletooltool to fill
floatdeltadelta
Return Values
floatdeltareal delta
Code
123function FillTrigger:fill(tool, delta)
124
125 if not tool:allowFillType(self.fillType, false) then
126 return 0.0;
127 end
128 local oldFillLevel = tool:getFillLevel(self.fillType);
129 if self.parent ~= nil then
130 if self.parent:getFillLevel() > 0 then
131 delta = math.min(delta, self.parent:getFillLevel());
132 if delta > 0 then
133 tool:setFillLevel(oldFillLevel + delta, self.fillType, true);
134 delta = tool:getFillLevel(self.fillType) - oldFillLevel;
135
136 self.parent:setFillLevel(self.parent:getFillLevel() - delta, self.fillType, true);
137 end
138 end;
139 else
140 tool:setFillLevel(oldFillLevel + delta, self.fillType, true);
141 delta = tool:getFillLevel(self.fillType) - oldFillLevel;
142
143 local price = delta * g_currentMission.economyManager:getCostPerLiter(self.fillType);
144 self.financeCategory = "other";
145 if self.fillType == FillUtil.FILLTYPE_SEEDS then
146 self.financeCategory = "purchaseSeeds";
147 elseif self.fillType == FillUtil.FILLTYPE_FERTILIZER then
148 self.financeCategory = "purchaseFertilizer";
149 end
150 g_currentMission.missionStats:updateStats("expenses", price);
151 g_currentMission:addSharedMoney(-price, self.financeCategory);
152 g_currentMission:addMoneyChange(-price, self.moneyChangeId);
153 end
154
155 return delta;
156end

getIsActivatable

Description
Returns true if is activateable
Definition
getIsActivatable(table fillable)
Arguments
tablefillablefillable
Return Values
booleanisActivateableis activateable
Code
162function FillTrigger:getIsActivatable(fillable)
163 if not fillable:allowFillType(self.fillType, false) or (self.parent ~= nil and self.parent:getFillLevel() <= 0) then
164 return false;
165 end;
166 return true;
167end;