Script v1_7_1_0
- AI
- Animals
- Collections
- Contracts
- Debug
- Economy
- Elements
- EnvironmentalScore
- Errors
- Events
- GUI
- Handtools
- Hud
- I3d
- Input
- Jobs
- Maps
- Materials
- Misc
- Objects
- Parameters
- Placeables
- Placement
- Player
- Shop
- Sounds
- Specialization
- Specializations
- StateMachine
- Statistics
- Tasks
- Triggers
- Utils
- Vehicles
Engine v1_7_1_0
- AI
- Animation
- Camera
- Entity
- Fillplanes
- general
- General
- I3D
- Input
- Lighting
- Math
- Network
- Node
- NoteNode
- Overlays
- Particle System
- Physics
- Rendering
- Scenegraph
- Shape
- Sound
- Spline
- String
- Terrain Detail
- Text Rendering
- Tire Track
- VoiceChat
- XML
Foundation Reference
AnimalLoadingTrigger
Descriptionclass to handle the animal load triggersFunctions
- delete
- getAnimals
- load
- new
- onCreate
- onSelectedHusbandry
- openAnimalMenu
- setLoadingTrailer
- showAnimalScreen
- triggerCallback
- updateActivatableObject
delete
DescriptionDeletes instanceDefinition
delete()Code
93 | function AnimalLoadingTrigger:delete() |
94 | g_currentMission.activatableObjectsSystem:removeActivatable(self.activatable) |
95 | |
96 | if self.triggerNode ~= nil then |
97 | removeTrigger(self.triggerNode) |
98 | self.triggerNode = nil |
99 | end |
100 | |
101 | self.husbandry = nil |
102 | end |
getAnimals
DescriptionDefinitiongetAnimals()Code
214 | function AnimalLoadingTrigger:getAnimals() |
215 | return self.animalTypes |
216 | end |
load
DescriptionLoads information from scenegraph node.Definition
load(integer id)Arguments
integer | id | nodeid that the trigger is created from |
59 | function AnimalLoadingTrigger:load(node, husbandry) |
60 | self.husbandry = husbandry |
61 | self.isDealer = Utils.getNoNil(getUserAttribute(node, "isDealer"), false) |
62 | |
63 | if self.isDealer then |
64 | local animalTypesString = getUserAttribute(node, "animalTypes") |
65 | if animalTypesString ~= nil then |
66 | local animalTypes = animalTypesString:split(" ") |
67 | for _, animalTypeStr in pairs(animalTypes) do |
68 | local animalTypeIndex = g_currentMission.animalSystem:getTypeIndexByName(animalTypeStr) |
69 | if animalTypeIndex ~= nil then |
70 | if self.animalTypes == nil then |
71 | self.animalTypes = {} |
72 | end |
73 | |
74 | table.insert(self.animalTypes, animalTypeIndex) |
75 | else |
76 | Logging.warning("Invalid animal type '%s' for animalLoadingTrigger '%s'!", animalTypeStr, getName(node)) |
77 | end |
78 | end |
79 | end |
80 | end |
81 | |
82 | self.triggerNode = node |
83 | addTrigger(self.triggerNode, "triggerCallback", self) |
84 | |
85 | self.title = g_i18n:getText(Utils.getNoNil(getUserAttribute(node, "title"), "ui_farm"), self.customEnvironment) |
86 | self.isEnabled = true |
87 | |
88 | return true |
89 | end |
new
DescriptionCreates an instance of the classDefinition
new(bool isServer, bool isClient)Arguments
bool | isServer | |
bool | isClient |
table | self | instance |
35 | function AnimalLoadingTrigger.new(isServer, isClient) |
36 | local self = Object.new(isServer, isClient, AnimalLoadingTrigger_mt) |
37 | |
38 | self.customEnvironment = g_currentMission.loadingMapModName |
39 | self.isDealer = false |
40 | self.triggerNode = nil |
41 | self.title = g_i18n:getText("ui_farm") |
42 | |
43 | self.animals = nil |
44 | |
45 | self.activatable = AnimalLoadingTriggerActivatable.new(self) |
46 | self.isPlayerInRange = false |
47 | |
48 | self.isEnabled = false |
49 | |
50 | self.loadingVehicle = nil |
51 | self.activatedTarget = nil |
52 | |
53 | return self |
54 | end |
onCreate
DescriptionCallback of scenegraph objectDefinition
onCreate(integer id)Arguments
integer | id | nodeid that the trigger is created from |
19 | function AnimalLoadingTrigger:onCreate(id) |
20 | local trigger = AnimalLoadingTrigger.new(g_server ~= nil, g_client ~= nil) |
21 | if trigger ~= nil then |
22 | if trigger:load(id) then |
23 | g_currentMission:addNonUpdateable(trigger) |
24 | else |
25 | trigger:delete() |
26 | end |
27 | end |
28 | end |
onSelectedHusbandry
DescriptionDefinitiononSelectedHusbandry()Code
204 | function AnimalLoadingTrigger:onSelectedHusbandry(husbandry) |
205 | if husbandry ~= nil then |
206 | self:showAnimalScreen(husbandry) |
207 | else |
208 | self:updateActivatableObject() |
209 | end |
210 | end |
openAnimalMenu
DescriptionDefinitionopenAnimalMenu()Code
220 | function AnimalLoadingTrigger:openAnimalMenu() |
221 | local husbandry = self.husbandry |
222 | if self.isDealer and self.loadingVehicle == nil then |
223 | local husbandries = g_currentMission.husbandrySystem:getPlaceablesByFarm() |
224 | if #husbandries > 1 then |
225 | g_gui:showAnimalDialog({title=g_i18n:getText("category_animalpens"), husbandries=husbandries, callback=self.onSelectedHusbandry, target=self}) |
226 | return |
227 | elseif #husbandries == 1 then |
228 | husbandry = husbandries[1] |
229 | end |
230 | end |
231 | |
232 | self:showAnimalScreen(husbandry) |
233 | self.activatedTarget = self.loadingVehicle |
234 | end |
setLoadingTrailer
DescriptionSets the loading trailerDefinition
setLoadingTrailer(table loadingVehicle)Arguments
table | loadingVehicle |
164 | function AnimalLoadingTrigger:setLoadingTrailer(loadingVehicle) |
165 | if self.loadingVehicle ~= nil and self.loadingVehicle.setLoadingTrigger ~= nil then |
166 | self.loadingVehicle:setLoadingTrigger(nil) |
167 | end |
168 | |
169 | self.loadingVehicle = loadingVehicle |
170 | |
171 | if self.loadingVehicle ~= nil and self.loadingVehicle.setLoadingTrigger ~= nil then |
172 | self.loadingVehicle:setLoadingTrigger(self) |
173 | end |
174 | |
175 | self:updateActivatableObject() |
176 | end |
showAnimalScreen
DescriptionDefinitionshowAnimalScreen()Code
180 | function AnimalLoadingTrigger:showAnimalScreen(husbandry) |
181 | if husbandry == nil and self.loadingVehicle == nil then |
182 | g_gui:showInfoDialog({text=g_i18n:getText("shop_messageNoHusbandries")}) |
183 | return |
184 | end |
185 | |
186 | local controller |
187 | if husbandry ~= nil and self.loadingVehicle == nil then |
188 | controller = AnimalScreenDealerFarm.new(husbandry) |
189 | elseif husbandry == nil and self.loadingVehicle ~= nil then |
190 | controller = AnimalScreenDealerTrailer.new(self.loadingVehicle) |
191 | else |
192 | controller = AnimalScreenTrailerFarm.new(husbandry, self.loadingVehicle) |
193 | end |
194 | |
195 | if controller ~= nil then |
196 | controller:init() |
197 | g_animalScreen:setController(controller) |
198 | g_gui:showGui("AnimalScreen") |
199 | end |
200 | end |
triggerCallback
DescriptionCallback when trigger changes stateDefinition
triggerCallback(integer triggerId, integer otherId, bool onEnter, bool onLeave, bool onStay)Arguments
integer | triggerId | |
integer | otherId | |
bool | onEnter | |
bool | onLeave | |
bool | onStay |
111 | function AnimalLoadingTrigger:triggerCallback(triggerId, otherId, onEnter, onLeave, onStay) |
112 | if self.isEnabled and (onEnter or onLeave) then |
113 | local vehicle = g_currentMission.nodeToObject[otherId] |
114 | if vehicle ~= nil and vehicle.getSupportsAnimalType ~= nil then |
115 | if onEnter then |
116 | self:setLoadingTrailer(vehicle) |
117 | elseif onLeave then |
118 | if vehicle == self.loadingVehicle then |
119 | self:setLoadingTrailer(nil) |
120 | end |
121 | if vehicle == self.activatedTarget then |
122 | -- close dialog! |
123 | g_animalScreen:onVehicleLeftTrigger() |
124 | end |
125 | end |
126 | |
127 | if GS_IS_MOBILE_VERSION then |
128 | if onEnter and self.activatable:getIsActivatable() then |
129 | self:openAnimalMenu() |
130 | local rootVehicle = vehicle.rootVehicle |
131 | if rootVehicle.brakeToStop ~= nil then |
132 | rootVehicle:brakeToStop() |
133 | end |
134 | end |
135 | end |
136 | elseif g_currentMission.player ~= nil and otherId == g_currentMission.player.rootNode then |
137 | if onEnter then |
138 | self.isPlayerInRange = true |
139 | |
140 | if GS_IS_MOBILE_VERSION then |
141 | self:openAnimalMenu() |
142 | end |
143 | else |
144 | self.isPlayerInRange = false |
145 | end |
146 | self:updateActivatableObject() |
147 | end |
148 | end |
149 | end |
updateActivatableObject
DescriptionAdds or removes the trigger as an activable object to the missionDefinition
updateActivatableObject()Code
153 | function AnimalLoadingTrigger:updateActivatableObject() |
154 | if self.loadingVehicle ~= nil or self.isPlayerInRange then |
155 | g_currentMission.activatableObjectsSystem:addActivatable(self.activatable) |
156 | elseif self.loadingVehicle == nil and not self.isPlayerInRange then |
157 | g_currentMission.activatableObjectsSystem:removeActivatable(self.activatable) |
158 | end |
159 | end |