LUADOC - Farming Simulator 22

Script v1_7_1_0

Engine v1_7_1_0

Foundation Reference

PlaceableCartridgePlayer

Description
Specialization for placeables
Functions

activatePlayer

Description
Definition
activatePlayer()
Code
115function PlaceableCartridgePlayer:activatePlayer()
116 local spec = self.spec_cartridgePlayer
117 if spec.currentItem ~= 0 then
118 -- Reparent cartrige content to the place
119 link(getChildAt(spec.itemsNode, spec.currentItem - 1), getChildAt(spec.connectorNode, 0))
120
121 -- Hide monitor
122 setVisibility(spec.monitorLightNode, false)
123 setVisibility(getChildAt(spec.monitorNode, spec.currentItem - 1), false)
124 end
125
126 -- Find the next cartridge by searching for visible items only.
127 -- Store first visible item as well in case we need to wrap around
128 local firstVisibleIndex = 0
129 local nextVisibleIndex = 0
130 for i = 1, getNumOfChildren(spec.itemsNode) do
131 local isVisible = getVisibility(getChildAt(spec.itemsNode, i - 1))
132
133 if isVisible then
134 if firstVisibleIndex == 0 then
135 firstVisibleIndex = i
136 end
137
138 if nextVisibleIndex == 0 and i > spec.currentItem then
139 nextVisibleIndex = i
140 end
141 end
142 end
143
144 local currentVisible = spec.currentItem
145
146 if nextVisibleIndex ~= 0 then
147 spec.currentItem = nextVisibleIndex
148 elseif firstVisibleIndex ~= 0 then
149 spec.currentItem = firstVisibleIndex
150 elseif spec.currentItem == 0 then
151 -- No change, so no items exist
152 g_currentMission.hud:showInGameMessage(g_i18n:getText("ui_gameComputer"), g_i18n:getText("ui_gameComputerNoCartridges"), -1)
153 else
154 spec.currentItem = 0
155 end
156
157 if spec.currentItem ~= 0 then
158 -- Reparent cartridge content to connector
159 link(spec.connectorNode, getChildAt(getChildAt(spec.itemsNode, spec.currentItem - 1), 0))
160
161 -- Show monitor
162 setVisibility(spec.monitorLightNode, true)
163 setVisibility(getChildAt(spec.monitorNode, spec.currentItem - 1), true)
164 end
165
166 if currentVisible ~= spec.currentItem and self.isClient then
167 g_soundManager:playSample(spec.samples.play, 1)
168 end
169end

cartridgePlayerTriggerCallback

Description
Callback when entering/leaving the trigger area
Definition
cartridgePlayerTriggerCallback()
Code
100function PlaceableCartridgePlayer:cartridgePlayerTriggerCallback(triggerId, otherId, onEnter, onLeave, onStay)
101 if onEnter or onLeave then
102 if g_currentMission.player ~= nil and otherId == g_currentMission.player.rootNode then
103 local spec = self.spec_cartridgePlayer
104 if onEnter then
105 g_currentMission.activatableObjectsSystem:addActivatable(spec.activatable)
106 else
107 g_currentMission.activatableObjectsSystem:removeActivatable(spec.activatable)
108 end
109 end
110 end
111end

onDelete

Description
Definition
onDelete()
Code
85function PlaceableCartridgePlayer:onDelete()
86 local spec = self.spec_cartridgePlayer
87
88 g_currentMission.activatableObjectsSystem:removeActivatable(spec.activatable)
89 if spec.triggerNode ~= nil then
90 removeTrigger(spec.triggerNode)
91 end
92
93 if self.isClient then
94 g_soundManager:deleteSamples(spec.samples)
95 end
96end

onLoad

Description
Definition
onLoad()
Code
52function PlaceableCartridgePlayer:onLoad(savegame)
53 local spec = self.spec_cartridgePlayer
54
55 local baseKey = "placeable.cartridgePlayer"
56 spec.itemsNode = self.xmlFile:getValue(baseKey .. "#itemsNode", nil, self.components, self.i3dMappings)
57 spec.monitorNode = self.xmlFile:getValue(baseKey .. "#monitorNode", nil, self.components, self.i3dMappings)
58 spec.monitorLightNode = self.xmlFile:getValue(baseKey .. "#monitorLightNode", nil, self.components, self.i3dMappings)
59 spec.connectorNode = self.xmlFile:getValue(baseKey .. "#connectorNode", nil, self.components, self.i3dMappings)
60 spec.triggerNode = self.xmlFile:getValue(baseKey .. "#triggerNode", nil, self.components, self.i3dMappings)
61
62 if spec.triggerNode ~= nil then
63 if not CollisionFlag.getHasFlagSet(spec.triggerNode, CollisionFlag.TRIGGER_PLAYER) then
64 Logging.error("Missing collision mask bit '%d'. Please add this bit to computer trigger node '%s'", CollisionFlag.getBit(CollisionFlag.TRIGGER_PLAYER), I3DUtil.getNodePath(spec.triggerNode))
65 return nil
66 else
67 addTrigger(spec.triggerNode, "cartridgePlayerTriggerCallback", self)
68 end
69
70 spec.activatable = PlaceableCartridgePlayerActivatable.new(self)
71 end
72
73 spec.currentItem = 0
74
75 if self.isClient then
76 spec.samples = {}
77 spec.samples.play = g_soundManager:loadSampleFromXML(self.xmlFile, baseKey .. ".sounds", "play", self.baseDirectory, self.components, 1, AudioGroup.ENVIRONMENT, self.i3dMappings, nil)
78 end
79
80 return self
81end

prerequisitesPresent

Description
Checks if all prerequisite specializations are loaded
Definition
prerequisitesPresent(table specializations)
Arguments
tablespecializationsspecializations
Return Values
booleanhasPrerequisitetrue if all prerequisite specializations are loaded
Code
17function PlaceableCartridgePlayer.prerequisitesPresent(specializations)
18 return true
19end

registerEventListeners

Description
Definition
registerEventListeners()
Code
30function PlaceableCartridgePlayer.registerEventListeners(placeableType)
31 SpecializationUtil.registerEventListener(placeableType, "onLoad", PlaceableCartridgePlayer)
32 SpecializationUtil.registerEventListener(placeableType, "onDelete", PlaceableCartridgePlayer)
33end

registerFunctions

Description
Definition
registerFunctions()
Code
23function PlaceableCartridgePlayer.registerFunctions(placeableType)
24 SpecializationUtil.registerFunction(placeableType, "cartridgePlayerTriggerCallback", PlaceableCartridgePlayer.cartridgePlayerTriggerCallback)
25 SpecializationUtil.registerFunction(placeableType, "activatePlayer", PlaceableCartridgePlayer.activatePlayer)
26end

registerXMLPaths

Description
Definition
registerXMLPaths()
Code
37function PlaceableCartridgePlayer.registerXMLPaths(schema, basePath)
38 schema:setXMLSpecializationType("CartridgePlayer")
39 schema:register(XMLValueType.NODE_INDEX, basePath .. ".cartridgePlayer#itemsNode", "")
40 schema:register(XMLValueType.NODE_INDEX, basePath .. ".cartridgePlayer#monitorNode", "")
41 schema:register(XMLValueType.NODE_INDEX, basePath .. ".cartridgePlayer#monitorLightNode", "")
42 schema:register(XMLValueType.NODE_INDEX, basePath .. ".cartridgePlayer#connectorNode", "")
43 schema:register(XMLValueType.NODE_INDEX, basePath .. ".cartridgePlayer#triggerNode", "")
44
45 SoundManager.registerSampleXMLPaths(schema, basePath .. ".cartridgePlayer.sounds", "play")
46
47 schema:setXMLSpecializationType()
48end