-
Notifications
You must be signed in to change notification settings - Fork 2
Expand file tree
/
Copy pathWorkAreaTypeManager.lua
More file actions
115 lines (77 loc) · 2.43 KB
/
WorkAreaTypeManager.lua
File metadata and controls
115 lines (77 loc) · 2.43 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
---This class handles all workArea types
local WorkAreaTypeManager_mt = Class(WorkAreaTypeManager, AbstractManager)
---Creating manager
-- @return table instance instance of object
function WorkAreaTypeManager.new(customMt)
local self = AbstractManager.new(customMt or WorkAreaTypeManager_mt)
return self
end
---Initialize data structures
function WorkAreaTypeManager:initDataStructures()
self.workAreaTypes = {}
self.workAreaTypeNameToInt = {}
self.workAreaTypeNameToDesc = {}
WorkAreaType = self.workAreaTypeNameToInt
end
---
function WorkAreaTypeManager:addWorkAreaType(name, attractWildlife, isAIArea, isSteeringAssistArea)
if name == nil then
Logging.error("WorkArea name missing!")
return
end
if self.workAreaTypeNameToInt[name] ~= nil then
Logging.error("WorkArea name '%s' is already in use!", name)
return
end
name = name:upper()
local entry = {}
entry.name = name
entry.index = #self.workAreaTypes + 1
entry.attractWildlife = Utils.getNoNil(attractWildlife, false)
entry.isAIArea = Utils.getNoNil(isAIArea, false)
entry.isSteeringAssistArea = Utils.getNoNil(isSteeringAssistArea, false)
self.workAreaTypeNameToInt[name] = entry.index
self.workAreaTypeNameToDesc[name] = entry
table.insert(self.workAreaTypes, entry)
print(" Register workAreaType '" .. name .. "'")
end
---
function WorkAreaTypeManager:getWorkAreaTypeNameByIndex(index)
local workAreaType = self.workAreaTypes[index]
if workAreaType then
return workAreaType.name
end
return nil
end
---
function WorkAreaTypeManager:getWorkAreaTypeIndexByName(name)
if name ~= nil then
return self.workAreaTypeNameToInt[name:upper()]
end
return nil
end
---
function WorkAreaTypeManager:getConfigurationDescByName(name)
if name ~= nil then
return self.workAreaTypeNameToDesc[name:upper()]
end
return nil
end
---
function WorkAreaTypeManager:getWorkAreaTypeByIndex(index)
return self.workAreaTypes[index]
end
---
function WorkAreaTypeManager:getWorkAreaTypeIsAIArea(index)
if self.workAreaTypes[index] ~= nil then
return self.workAreaTypes[index].isAIArea
end
return false
end
---
function WorkAreaTypeManager:getWorkAreaTypeIsSteeringAssistArea(index)
if self.workAreaTypes[index] ~= nil then
return self.workAreaTypes[index].isSteeringAssistArea
end
return false
end