LUADOC - Farming Simulator 22

Script v1_7_1_0

Engine v1_7_1_0

Foundation Reference

PlaceableIndoorAreas

Description
Specialization for placeables
Functions

loadIndoorArea

Description
Definition
loadIndoorArea()
Code
80function PlaceableIndoorAreas:loadIndoorArea(xmlFile, key, area)
81 local start = xmlFile:getValue(key .. "#startNode", nil, self.components, self.i3dMappings)
82 if start == nil then
83 Logging.xmlWarning(xmlFile, "Indoor area start node not defined for '%s'", key)
84 return false
85 end
86
87 local width = xmlFile:getValue(key .. "#widthNode", nil, self.components, self.i3dMappings)
88 if width == nil then
89 Logging.xmlWarning(xmlFile, "Indoor area width node not defined for '%s'", key)
90 return false
91 end
92
93 local height = xmlFile:getValue(key .. "#heightNode", nil, self.components, self.i3dMappings)
94 if height == nil then
95 Logging.xmlWarning(xmlFile, "Indoor area height node not defined for '%s'", key)
96 return false
97 end
98
99 area.start = start
100 area.width = width
101 area.height = height
102
103 return true
104end

onDelete

Description
Definition
onDelete()
Code
68function PlaceableIndoorAreas:onDelete()
69 local spec = self.spec_indoorAreas
70
71 if spec.areas ~= nil and spec.resetIndoorMaskOnDelete and not self.isReloading then
72 for _, area in ipairs(spec.areas) do
73 g_currentMission.indoorMask:setPlaceableAreaInSnowMask(area, IndoorMask.OUTDOOR)
74 end
75 end
76end

onFinalizePlacement

Description
Definition
onFinalizePlacement()
Code
108function PlaceableIndoorAreas:onFinalizePlacement()
109 local spec = self.spec_indoorAreas
110
111 for _, area in pairs(spec.areas) do
112 g_currentMission.indoorMask:setPlaceableAreaInSnowMask(area, IndoorMask.INDOOR)
113 end
114
115 spec.resetIndoorMaskOnDelete = true
116end

onLoad

Description
Called on loading
Definition
onLoad(table savegame)
Arguments
tablesavegamesavegame
Code
49function PlaceableIndoorAreas:onLoad(savegame)
50 local spec = self.spec_indoorAreas
51
52 spec.resetIndoorMaskOnDelete = false
53 spec.areas = {}
54 self.xmlFile:iterate("placeable.indoorAreas.indoorArea", function(_, key)
55 local area = {}
56 if self:loadIndoorArea(self.xmlFile, key, area) then
57 table.insert(spec.areas, area)
58 end
59 end)
60
61 if not self.xmlFile:hasProperty("placeable.indoorAreas") then
62 Logging.xmlWarning(self.xmlFile, "Missing indoor areas")
63 end
64end

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
18function PlaceableIndoorAreas.prerequisitesPresent(specializations)
19 return true
20end

registerEventListeners

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

registerFunctions

Description
Definition
registerFunctions()
Code
24function PlaceableIndoorAreas.registerFunctions(placeableType)
25 SpecializationUtil.registerFunction(placeableType, "loadIndoorArea", PlaceableIndoorAreas.loadIndoorArea)
26end

registerXMLPaths

Description
Definition
registerXMLPaths()
Code
38function PlaceableIndoorAreas.registerXMLPaths(schema, basePath)
39 schema:setXMLSpecializationType("IndoorAreas")
40 schema:register(XMLValueType.NODE_INDEX, basePath .. ".indoorAreas.indoorArea(?)#startNode", "Start node of indoor mask area")
41 schema:register(XMLValueType.NODE_INDEX, basePath .. ".indoorAreas.indoorArea(?)#widthNode", "Width node of indoor mask area")
42 schema:register(XMLValueType.NODE_INDEX, basePath .. ".indoorAreas.indoorArea(?)#heightNode", "Height node of indoor mask area")
43 schema:setXMLSpecializationType()
44end