LUADOC - Farming Simulator 19

AnimalLoadingTrigger

Description
class to handle the animal load triggers
Parent
Object
Functions

delete

Description
Deletes instance
Definition
delete()
Code
121function AnimalLoadingTrigger:delete()
122 if self.mapHotspot ~= nil then
123 g_currentMission:removeMapHotspot(self.mapHotspot)
124 self.mapHotspot:delete()
125 end
126
127 g_currentMission:removeActivatableObject(self)
128
129 if self.triggerNode ~= nil then
130 removeTrigger(self.triggerNode)
131 self.triggerNode = nil
132 end
133end

drawActivate

Description
Draw
Definition
drawActivate()
Code
220function AnimalLoadingTrigger:drawActivate()
221end

getIsActivatable

Description
Checks if can be activated
Definition
getIsActivatable(table vehicle)
Arguments
tablevehicleunused variable
Code
204function AnimalLoadingTrigger:getIsActivatable(vehicle)
205 local canAccess = self.husbandry == nil or self.husbandry:getOwnerFarmId() == g_currentMission:getFarmId()
206
207 if g_gui.currentGui == nil and self.isEnabled and canAccess and g_currentMission:getHasPlayerPermission("tradeAnimals") then
208 local rootAttacherVehicle = nil
209 if self.loadingVehicle ~= nil then
210 rootAttacherVehicle = self.loadingVehicle:getRootVehicle()
211 end
212
213 return self.isPlayerInRange or rootAttacherVehicle == g_currentMission.controlledVehicle
214 end
215 return false
216end

load

Description
Loads information from scenegraph node.
Definition
load(integer id)
Arguments
integeridnodeid that the trigger is created from
Code
60function AnimalLoadingTrigger:load(node, husbandry)
61 self.husbandry = husbandry
62 self.isDealer = Utils.getNoNil(getUserAttribute(node, "isDealer"), false)
63
64 if self.isDealer then
65 local animalTypesString = getUserAttribute(node, "animalTypes")
66 if animalTypesString ~= nil then
67 local animalTypes = StringUtil.splitString(" ", animalTypesString)
68 for _, animalTypeStr in pairs(animalTypes) do
69 local animalType = g_animalManager:getAnimalsByType(animalTypeStr)
70 if animalType ~= nil then
71 if self.animalTypes == nil then
72 self.animalTypes = {}
73 end
74
75 table.insert(self.animalTypes, animalType)
76 else
77 g_logManager:warning("Invalid animal type '%s' for animalLoadingTrigger '%s'!", animalTypeStr, getName(node))
78 end
79 end
80 end
81 end
82
83 self.triggerNode = node
84 addTrigger(self.triggerNode, "triggerCallback", self)
85
86 self.appearsOnPDA = Utils.getNoNil(getUserAttribute(node, "appearsOnPDA"), self.isDealer)
87 self.title = g_i18n:getText(Utils.getNoNil(getUserAttribute(node, "title"), "ui_farm"), self.customEnvironment)
88 self.isEnabled = not g_isPresentationVersion or g_isPresentationVersionShopEnabled
89
90 if self.appearsOnPDA then
91 local mapPosition = node
92 local mapPositionIndex = getUserAttribute(node, "mapPositionIndex")
93
94 if mapPositionIndex ~= nil then
95 mapPosition = I3DUtil.indexToObject(node, mapPositionIndex)
96 if mapPosition == nil then
97 mapPosition = node
98 end
99 end
100
101 local x, _, z = getWorldTranslation(mapPosition)
102
103 local fullViewName = Utils.getNoNil(getUserAttribute(node, "stationName"), "animals_dealer")
104 if g_i18n:hasText(fullViewName) then
105 fullViewName = g_i18n:getText(fullViewName, self.customEnvironment)
106 end
107
108 self.mapHotspot = MapHotspot:new("livestockDealer", MapHotspot.CATEGORY_DEFAULT)
109 self.mapHotspot:setText(fullViewName)
110 self.mapHotspot:setBorderedImage(nil, getNormalizedUVs(MapHotspot.UV.ANIMAL_VENDOR))
111 self.mapHotspot:setWorldPosition(x, z)
112
113 g_currentMission:addMapHotspot(self.mapHotspot)
114 end
115
116 return self
117end

new

Description
Creates an instance of the class
Definition
new(bool isServer, bool isClient)
Arguments
boolisServer
boolisClient
Return Values
tableselfinstance
Code
33function AnimalLoadingTrigger:new(isServer, isClient)
34 local self = Object:new(isServer, isClient, AnimalLoadingTrigger_mt)
35
36 self.customEnvironment = g_currentMission.loadingMapModName
37 self.isDealer = false
38 self.triggerNode = nil
39 self.appearsOnPDA = true
40 self.title = g_i18n:getText("ui_farm")
41
42 self.animals = nil
43
44 self.activateText = g_i18n:getText("animals_openAnimalScreen", self.customEnvironment)
45 self.isActivatableAdded = false
46 self.isPlayerInRange = false
47
48 self.isEnabled = false
49
50 self.loadingVehicle = nil
51 self.activatedTarget = nil
52 self.objectActivated = false
53
54 return self
55end

onActivateObject

Description
Callback on activate
Definition
onActivateObject()
Code
225function AnimalLoadingTrigger:onActivateObject()
226 g_currentMission:removeActivatableObject(self)
227 self.isActivatableAdded = false
228
229 self.objectActivated = true
230 self.activatedTarget = self.loadingVehicle
231
232 local husbandry = self.husbandry
233
234 if self.isDealer and self.loadingVehicle == nil then
235 local husbandries = g_currentMission:getHusbandries()
236 if #husbandries > 1 then
237 g_gui:showAnimalDialog({title=g_i18n:getText("category_animalpens"), husbandries=husbandries, callback=self.onSelectedHusbandry, target=self})
238 return
239 elseif #husbandries == 1 then
240 husbandry = husbandries[1]
241 end
242 end
243
244 self:showAnimalScreen(husbandry)
245end

onCreate

Description
Callback of scenegraph object
Definition
onCreate(integer id)
Arguments
integeridnodeid that the trigger is created from
Code
19function AnimalLoadingTrigger:onCreate(id)
20 local trigger = AnimalLoadingTrigger:new(g_server ~= nil, g_client ~= nil)
21 if trigger ~= nil then
22 g_currentMission:addOnCreateLoadedObject(trigger)
23 trigger:load(id)
24 trigger:register(true)
25 end
26end

setLoadingTrailer

Description
Sets the loading trailer
Definition
setLoadingTrailer(table loadingVehicle)
Arguments
tableloadingVehicle
Code
189function AnimalLoadingTrigger:setLoadingTrailer(loadingVehicle)
190 if self.loadingVehicle ~= nil and self.loadingVehicle.setLoadingTrigger ~= nil then
191 self.loadingVehicle:setLoadingTrigger(nil)
192 end
193 self.loadingVehicle = loadingVehicle
194 if self.loadingVehicle ~= nil and self.loadingVehicle.setLoadingTrigger ~= nil then
195 self.loadingVehicle:setLoadingTrigger(self)
196 end
197
198 self:updateActivatableObject()
199end

triggerCallback

Description
Callback when trigger changes state
Definition
triggerCallback(integer triggerId, integer otherId, bool onEnter, bool onLeave, bool onStay)
Arguments
integertriggerId
integerotherId
boolonEnter
boolonLeave
boolonStay
Code
142function AnimalLoadingTrigger:triggerCallback(triggerId, otherId, onEnter, onLeave, onStay)
143 if self.isEnabled and (onEnter or onLeave) then
144 local vehicle = g_currentMission.nodeToObject[otherId]
145 if vehicle ~= nil and vehicle.getSupportsAnimalType ~= nil then
146 if onEnter then
147 self:setLoadingTrailer(vehicle)
148 elseif onLeave then
149 if vehicle == self.loadingVehicle then
150 self:setLoadingTrailer(nil)
151 end
152 if vehicle == self.activatedTarget then
153 -- close dialog!
154 g_animalScreen:onVehicleLeftTrigger()
155 self.objectActivated = false
156 end
157 end
158 elseif g_currentMission.player ~= nil and otherId == g_currentMission.player.rootNode then
159 if onEnter then
160 self.isPlayerInRange = true
161 else
162 self.isPlayerInRange = false
163 end
164 self:updateActivatableObject()
165 end
166 end
167end

updateActivatableObject

Description
Adds or removes the trigger as an activable object to the mission
Definition
updateActivatableObject()
Code
171function AnimalLoadingTrigger:updateActivatableObject()
172 if self.loadingVehicle ~= nil or self.isPlayerInRange then
173 if not self.isActivatableAdded then
174 self.isActivatableAdded = true
175 g_currentMission:addActivatableObject(self)
176 end
177 else
178 if self.isActivatableAdded and self.loadingVehicle == nil and not self.isPlayerInRange then
179 g_currentMission:removeActivatableObject(self)
180 self.isActivatableAdded = false
181 self.objectActivated = false
182 end
183 end
184end