48 | function Field:load(id) |
49 | self.rootNode = id |
50 | self.name = Utils.getNoNil(getUserAttribute(id, "name"), "") |
51 | |
52 | self.fieldMissionAllowed = Utils.getNoNil(getUserAttribute(id, "fieldMissionAllowed"), true) |
53 | self.fieldGrassMission = Utils.getNoNil(getUserAttribute(id, "fieldGrassMission"), false) |
54 | |
55 | local fieldDimensions = I3DUtil.indexToObject(id, getUserAttribute(id, "fieldDimensionIndex")) |
56 | if fieldDimensions == nil then |
57 | print("Warning: No fieldDimensionIndex defined for Field '"..getName(id).."'!") |
58 | return false |
59 | end |
60 | local angleRad = math.rad(Utils.getNoNil(tonumber(getUserAttribute(id, "fieldAngle")), 0)) |
61 | |
62 | self.fieldAngle = FSDensityMapUtil.convertToDensityMapAngle(angleRad, g_currentMission.terrainDetailAngleMaxValue) |
63 | self.fieldDimensions = fieldDimensions |
64 | |
65 | FieldUtil.updateFieldPartitions(self, self.getFieldStatusPartitions, 900) |
66 | FieldUtil.updateFieldPartitions(self, self.setFieldStatusPartitions, 400) |
67 | FieldUtil.updateFieldPartitions(self, self.maxFieldStatusPartitions, 10000000) |
68 | |
69 | self.posX, self.posZ = FieldUtil.getCenterOfField(self) |
70 | |
71 | self.nameIndicator = I3DUtil.indexToObject(id, getUserAttribute(id, "nameIndicatorIndex")) -- this is where the field number appears on the ingamemap |
72 | if self.nameIndicator ~= nil then |
73 | local x, _, z = getWorldTranslation(self.nameIndicator) |
74 | self.posX, self.posZ = x, z |
75 | end |
76 | |
77 | self.farmland = nil |
78 | |
79 | return true |
80 | end |
17 | function Field:new(customMt) |
18 | local self = {} |
19 | setmetatable(self, customMt or Field_mt) |
20 | |
21 | self.fieldId = 0 |
22 | self.posX = 0 |
23 | self.posZ = 0 |
24 | self.rootNode = nil |
25 | self.name = nil |
26 | self.mapHotspot = nil |
27 | self.fieldMissionAllowed = true |
28 | self.fieldGrassMission = false |
29 | self.fieldAngle = 0.0 |
30 | self.fieldDimensions = nil |
31 | self.fieldArea = 1.0 |
32 | self.getFieldStatusPartitions = {} |
33 | self.setFieldStatusPartitions = {} |
34 | self.maxFieldStatusPartitions = {} |
35 | self.isAIActive = true |
36 | self.fruitType = nil -- current fruit in the field, as seen by FJM |
37 | self.lastCheckedTime = nil |
38 | |
39 | self.currentMission = nil |
40 | |
41 | return self |
42 | end |