Script v1.4.4.0
Engine v7.0.0.2
- General
- Entity
- Node
- Scenegraph
- Lighting
- Camera
- Shape
- Particle System
- Physics
- Spline
- Animation
- Overlays
- Sound
- Input
- XML
- Network
- Callbacks
- Text Rendering
- Terrain Detail
- Tire Track
- Editor
- Rendering
- String
- Math
- I3D
- Fillplanes
Foundation Reference
FillTrigger
DescriptionClass for fill triggersFunctions
onCreate
DescriptiononCreate triggerDefinition
onCreate(integer id)Arguments
integer | id | id of trigger node |
15 | function 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 |
22 | end; |
new
DescriptionCreate fill trigger objectDefinition
new(table mt)Arguments
table | mt | custom metatable (optional) |
table | instance | instance |
28 | function 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; |
42 | end; |
load
DescriptionLoad fill triggerDefinition
load(integer nodeId, integer fillType, table parent)Arguments
integer | nodeId | id of node |
integer | fillType | fill type index |
table | parent | parent |
boolean | success | success |
50 | function 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; |
79 | end; |
delete
DescriptionDelete fill triggerDefinition
delete()Code
83 | function 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 |
90 | end; |
triggerCallback
DescriptionTrigger callbackDefinition
triggerCallback(integer triggerId, integer otherActorId, boolean onEnter, boolean onLeave, boolean onStay, integer otherShapeId)Arguments
integer | triggerId | id of trigger |
integer | otherActorId | id of other actor |
boolean | onEnter | on enter |
boolean | onLeave | on leave |
boolean | onStay | on stay |
integer | otherShapeId | id of other shape |
100 | function 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; |
116 | end; |
fill
DescriptionFill tool from fill triggerDefinition
fill(table tool, float delta)Arguments
table | tool | tool to fill |
float | delta | delta |
float | delta | real delta |
123 | function 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; |
156 | end |
getIsActivatable
DescriptionReturns true if is activateableDefinition
getIsActivatable(table fillable)Arguments
table | fillable | fillable |
boolean | isActivateable | is activateable |
162 | function 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; |
167 | end; |