LUADOC - Farming Simulator 19

Script v1.7.1.0

Engine v1.7.1.0

Foundation Reference

MapHotspot

Description
UV coordinates in the map hotspot atlas.
Functions

delete

Description
Definition
delete()
Code
78function MapHotspot:delete()
79 self.enabled = false
80
81 for k, overlay in pairs(self.overlays) do
82 overlay:delete()
83 self.overlays[k] = nil
84 end
85
86 if self.overlayBg ~= nil then
87 self.overlayBg:delete()
88 self.overlayBg = nil
89 end
90end

drawBoundings

Description
Definition
drawBoundings()
Code
383function MapHotspot:drawBoundings()
384 -- debug boundings
385 local x,y,w,h = self:getBoundings()
386 local xPixel = 1 / g_screenWidth
387 local yPixel = 1 / g_screenHeight
388 setOverlayColor(GuiElement.debugOverlay, 1, 0,0,1)
389 renderOverlay(GuiElement.debugOverlay, x-xPixel, y-yPixel, w+2*xPixel, yPixel)
390 renderOverlay(GuiElement.debugOverlay, x-xPixel, y+h, w+2*xPixel, yPixel)
391 renderOverlay(GuiElement.debugOverlay, x-xPixel, y, xPixel, h)
392 renderOverlay(GuiElement.debugOverlay, x+w, y, xPixel, h)
393end

generateBgOverlays

Description
Definition
generateBgOverlays()
Code
151function MapHotspot:generateBgOverlays()
152 if self.overlayBg ~= nil then
153 self.overlayBg:delete()
154 end
155
156 self.overlayBg = Overlay:new(self.bgImageFilename, 0, 0, self.width, self.height)
157 self.overlayBg:setUVs(self.bgImageUVs)
158 self.overlayBg:setColor(unpack(self.bgImageColor))
159end

generateOverlays

Description
Definition
generateOverlays()
Code
118function MapHotspot:generateOverlays()
119 for _, overlay in ipairs(self.overlays) do
120 overlay:delete()
121 end
122
123 self.overlays = {}
124
125 if self.imageFilename ~= nil then
126 if type(self.imageFilename) == "table" then
127 for _, filename in pairs(self.imageFilename) do
128 local overlay = Overlay:new(filename, 0, 0, self.width, self.height)
129 overlay:setUVs(self.imageUVs)
130 overlay:setColor(unpack(self.baseColor))
131 table.insert(self.overlays, overlay)
132 end
133 else
134 local overlay = Overlay:new(self.imageFilename, 0, 0, self.width, self.height)
135 overlay:setUVs(self.imageUVs)
136 overlay:setColor(unpack(self.baseColor))
137 table.insert(self.overlays, overlay)
138 end
139 else
140 for _, filename in pairs(MapHotspot.IMAGEFILENAMES) do
141 local overlay = Overlay:new(filename, 0, 0, self.width, self.height)
142 overlay:setUVs(self.imageUVs)
143 overlay:setColor(unpack(self.baseColor))
144 table.insert(self.overlays, overlay)
145 end
146 end
147end

getBoundings

Description
Definition
getBoundings()
Code
296function MapHotspot:getBoundings()
297 local width = self:getWidth(self.width == 0)
298 local height = self:getHeight(self.height == 0)
299
300 local x = self.x
301 local y = self.y
302
303 if width > self.width*self.zoom then
304 x = self.x - (width-self.width*self.zoom)*0.5
305 end
306
307 if height > self.height*self.zoom then
308 y = self.y - (height-self.height*self.zoom)*0.5
309 end
310
311 return x, y, width, height
312end

getHasDetails

Description
Get whether a context box can be shown when the hotspot is clicked
Definition
getHasDetails()
Code
467function MapHotspot:getHasDetails()
468 return self.hasDetails
469end

getHeight

Description
Definition
getHeight()
Code
279function MapHotspot:getHeight(addText)
280 local height = self.height * self.zoom
281
282 if addText and self.showNameDefault and self.fullViewName ~= "" and (self.showName or self.renderLast) then
283 height = math.max(height, self.textSize*self.zoom)
284 if self.textOffsetY < 0 then
285 height = height - self.textOffsetY
286 elseif self.textOffsetY > height then
287 height = height + (self.textOffsetY-height)
288 end
289 end
290
291 return height
292end

getIsActive

Description
Definition
getIsActive()
Code
461function MapHotspot:getIsActive()
462 return self.ownerFarmId == AccessHandler.EVERYONE or g_currentMission.accessHandler:canFarmAccessOtherId(g_currentMission:getFarmId(), self.ownerFarmId)
463end

getIsVisible

Description
Definition
getIsVisible()
Code
439function MapHotspot:getIsVisible()
440 return self.visible and (self.alwaysShow or self.ownerFarmId == AccessHandler.EVERYONE or g_currentMission.accessHandler:canFarmAccessOtherId(g_currentMission:getFarmId(), self.ownerFarmId))
441end

getOverlay

Description
Definition
getOverlay()
Code
94function MapHotspot:getOverlay(height)
95 local overlay = self.overlays[1]
96 if height <= 24 then
97 overlay = self.overlays[5]
98 elseif height <= 48 then
99 overlay = self.overlays[4]
100 elseif height <= 96 then
101 overlay = self.overlays[3]
102 elseif height <= 192 then
103 overlay = self.overlays[2]
104 end
105
106 return Utils.getNoNil(overlay, self.overlays[1])
107end

getOwnerFarmId

Description
Definition
getOwnerFarmId()
Code
455function MapHotspot:getOwnerFarmId()
456 return self.ownerFarmId
457end

getWidth

Description
Definition
getWidth()
Code
267function MapHotspot:getWidth(addText)
268 local width = self.width * self.zoom
269
270 if addText and self.showNameDefault and self.fullViewName ~= "" and (self.showName or self.renderLast) then
271 width = math.max(width, getTextWidth(self.textSize * self.zoom, self.fullViewName))
272 end
273
274 return width
275end

new

Description
Definition
new()
Code
29function MapHotspot:new(name, category)
30 local self = {}
31 setmetatable(self, MapHotspot_mt)
32
33 self.baseColor = {1, 1, 1, 1}
34 self.imageUVs = Overlay.DEFAULT_UVS
35 self.bgImageColor = MapHotspot.DEFAULT_BG_COLOR
36 self.overlays = {}
37
38 self.iconScale = 1
39
40 _, self.defaultTextSize = getNormalizedScreenValues(0, 12)
41 self.textSize = self.defaultTextSize
42 self.textOffsetX, self.textOffsetY = getNormalizedScreenValues(0, 1)
43 self.textBold = false
44 self.textColor = self.baseColor
45 self.verticalAlignment = Overlay.ALIGN_VERTICAL_TOP
46 self.textAlignment = RenderText.ALIGN_CENTER
47
48 self.x = 0
49 self.y = 0
50 self.name = name
51 self.fullViewName = name
52
53 self.visible = true
54 self.enabled = true
55 self.blinking = false
56 self.persistent = false
57 self.active = true
58 self.renderLast = false
59 self.hasDetails = true
60
61 self.xMapPos = 0
62 self.zMapPos = 0
63
64 self.category = Utils.getNoNil(category, MapHotspot.CATEGORY_DEFAULT)
65 self.ownerFarmId = AccessHandler.EVERYONE
66
67 self.width, self.height = getNormalizedScreenValues(18, 18)
68 self.zoom = 1
69
70 self:generateOverlays()
71 self:generateBgOverlays()
72
73 return self
74end

render

Description
Definition
render()
Code
316function MapHotspot:render(minX, maxX, minY, maxY, scale, drawText)
317 if self:getIsVisible() and self.enabled then
318 scale = scale or 1
319
320 -- draw bg
321 self.overlayBg:setDimension(self.width * self.zoom * scale, self.height * self.zoom * scale)
322 self.overlayBg:setPosition(self.x, self.y)
323
324 if not self:getIsActive() then
325 self.overlayBg:setColor(unpack(MapHotspot.COLOR.INACTIVE))
326 else
327 self.overlayBg:setColor(unpack(self.bgImageColor))
328 end
329
330 local overlay = self:getOverlay(self.height * self.zoom * g_screenHeight)
331 local overlayPosY = self.overlayBg.y + self.overlayBg.height - overlay.height
332 if self.verticalAlignment == Overlay.ALIGN_VERTICAL_MIDDLE then
333 overlayPosY = self.overlayBg.y + (self.overlayBg.height - overlay.height) * 0.5
334 elseif self.verticalAlignment == Overlay.ALIGN_VERTICAL_BOTTOM then
335 overlayPosY = self.overlayBg.y
336 end
337
338 overlay:setDimension(self.overlayBg.width * self.iconScale, self.overlayBg.height * self.iconScale)
339 overlay:setPosition(self.x + self.overlayBg.width * 0.5 - overlay.width * 0.5, overlayPosY)
340
341 if self.blinking then
342 self.overlayBg:setColor(nil, nil, nil, IngameMap.alpha)
343 overlay:setColor(nil, nil, nil, IngameMap.alpha)
344 end
345
346 self.overlayBg:render()
347 overlay:render()
348
349 local doRenderText = self.showNameDefault and self.fullViewName ~= "" and (drawText or self.renderLast)
350 doRenderText = doRenderText or self.category == MapHotspot.CATEGORY_AI or self.category == MapHotspot.CATEGORY_FIELD_DEFINITION
351
352 if doRenderText then
353 setTextBold(self.textBold)
354 setTextAlignment(self.textAlignment)
355 local alpha = 1
356 if self.blinking then
357 alpha = IngameMap.alpha
358 end
359 setTextColor(0,0,0,1)
360
361 local posX = self.x + (0.5 * self.width + self.textOffsetX) * self.zoom * scale
362 local posY = self.y - (self.textSize - self.textOffsetY) * self.zoom * scale
363 local textWidth = getTextWidth(self.textSize * self.zoom * scale, self.fullViewName) + 1 / g_screenWidth
364
365 if self.category ~= MapHotspot.CATEGORY_FIELD_DEFINITION then
366 posX = math.min(math.max(posX, minX + textWidth * 0.5), maxX - textWidth * 0.5)
367 posY = math.min(math.max(posY, minY), maxY-self.textSize * self.zoom * scale)
368 end
369
370 renderText(posX, posY - 1 / g_screenHeight, self.textSize * self.zoom * scale, self.fullViewName)
371 setTextColor(self.textColor[1], self.textColor[2], self.textColor[3], alpha)
372 renderText(posX + 1 / g_screenWidth, posY, self.textSize * self.zoom * scale, self.fullViewName)
373 setTextAlignment(RenderText.ALIGN_LEFT)
374 setTextColor(1,1,1,1)
375 end
376
377 -- self:drawBoundings()
378 end
379end

setBackgroundImage

Description
Definition
setBackgroundImage()
Code
223function MapHotspot:setBackgroundImage(filename, uv, color)
224 self.bgImageFilename = Utils.getNoNil(filename, "dataS2/menu/hud/mapHotspots_512.png")
225 self.bgImageUVs = Utils.getNoNil(uv, getNormalizedUVs(MapHotspot.UV.CIRCLE))
226 self.bgImageColor = Utils.getNoNil(color, MapHotspot.DEFAULT_BG_COLOR)
227
228 self:generateBgOverlays()
229end

setBlinking

Description
Definition
setBlinking()
Code
421function MapHotspot:setBlinking(blinking)
422 self.blinking = blinking
423 if not blinking then
424 self.overlayBg:setColor(nil, nil, nil, 1)
425 for _, overlay in pairs(self.overlays) do
426 overlay:setColor(nil, nil, nil, 1)
427 end
428 end
429end

setBorderedImage

Description
Definition
setBorderedImage()
Code
189function MapHotspot:setBorderedImage(filename, uv, color, bgColor)
190 self:setImage(filename, uv, color)
191 self:setBackgroundImage(nil, nil, bgColor)
192 self:setIconScale(0.7)
193 self.verticalAlignment = Overlay.ALIGN_VERTICAL_MIDDLE
194end

setColor

Description
Definition
setColor()
Code
407function MapHotspot:setColor(color)
408 if color ~= nil then
409 for _, overlay in pairs(self.overlays) do
410 overlay:setColor(color[1], color[2], color[3], nil)
411 end
412 else
413 for _, overlay in pairs(self.overlays) do
414 overlay:setColor(self.baseColor[1], self.baseColor[2], self.baseColor[3], nil)
415 end
416 end
417end

setHasDetails

Description
Set whether a context box can be shown when the hotspot is clicked
Definition
setHasDetails()
Code
473function MapHotspot:setHasDetails(hasDetails)
474 self.hasDetails = hasDetails
475end

setIconScale

Description
Definition
setIconScale()
Code
247function MapHotspot:setIconScale(scale)
248 self.iconScale = Utils.getNoNil(scale, 1)
249end

setImage

Description
Definition
setImage()
Code
179function MapHotspot:setImage(filename, uv, color)
180 self.imageFilename = filename
181 self.imageUVs = Utils.getNoNil(uv, Overlay.DEFAULT_UVS)
182 self.baseColor = Utils.getNoNil(color, {1, 1, 1, 1})
183
184 self:generateOverlays()
185end

setLinkedNode

Description
Definition
setLinkedNode()
Code
163function MapHotspot:setLinkedNode(nodeId)
164 self.objectId = nodeId or nil -- 0 becomes nil
165 if nodeId ~= nil then
166 self.xMapPos, _, self.zMapPos = getWorldTranslation(nodeId)
167 end
168end

setOwnerFarmId

Description
Set the farm this hotspot should be shown for. Use AccessHandler.EVERYONE for showing it to everybody (default)
Definition
setOwnerFarmId()
Code
445function MapHotspot:setOwnerFarmId(farmId)
446 if farmId == nil then
447 farmId = AccessHandler.EVERYONE
448 end
449
450 self.ownerFarmId = farmId
451end

setPersistent

Description
Definition
setPersistent()
Code
433function MapHotspot:setPersistent(persistent)
434 self.persistent = Utils.getNoNil(persistent, false)
435end

setPosition

Description
Definition
setPosition()
Code
111function MapHotspot:setPosition(x, y)
112 self.x = Utils.getNoNil(x, self.x)
113 self.y = Utils.getNoNil(y, self.y)
114end

setRawTextOffset

Description
Set the text offset using a raw value string in the form of "px px".
Definition
setRawTextOffset()
Code
253function MapHotspot:setRawTextOffset(textOffsetValue)
254 local offX, offY = unpack(GuiUtils.getNormalizedValues(textOffsetValue, {g_referenceScreenWidth, g_referenceScreenHeight}))
255 self.textOffsetX = offX
256 self.textOffsetY = offY
257
258 if offX > 0 then
259 self.textAlignment = RenderText.ALIGN_LEFT
260 elseif offX < 0 then
261 self.textAlignment = RenderText.ALIGN_RIGHT
262 end
263end

setRenderLast

Description
Definition
setRenderLast()
Code
233function MapHotspot:setRenderLast(bool)
234 self.renderLast = Utils.getNoNil(bool, false)
235end

setSelected

Description
Definition
setSelected()
Code
397function MapHotspot:setSelected(selected)
398 if selected then
399 self.overlayBg:setColor(MapHotspot.SELECTED_COLOR[1], MapHotspot.SELECTED_COLOR[2], MapHotspot.SELECTED_COLOR[3], nil)
400 else
401 self.overlayBg:setColor(MapHotspot.DEFAULT_BG_COLOR[1], MapHotspot.DEFAULT_BG_COLOR[2], MapHotspot.DEFAULT_BG_COLOR[3], nil)
402 end
403end

setSize

Description
Definition
setSize()
Code
198function MapHotspot:setSize(width, height)
199 if width ~= nil then
200 self.width = width
201 end
202 if height ~= nil then
203 self.height = height
204 end
205
206 self:generateOverlays()
207 self:generateBgOverlays()
208end

setText

Description
Definition
setText()
Code
239function MapHotspot:setText(name, hidden, alwaysShow)
240 self.fullViewName = name
241 self.showNameDefault = name ~= nil and name ~= "" and not hidden
242 self.showName = alwaysShow
243end

setTextOptions

Description
Definition
setTextOptions()
Code
212function MapHotspot:setTextOptions(textSize, textBold, textOffsetY, textColor, verticalAlignment, textAlignment)
213 self.textSize = Utils.getNoNil(textSize, self.textSize)
214 self.textOffsetY = Utils.getNoNil(textOffsetY, self.textOffsetY)
215 self.textBold = Utils.getNoNil(textBold, self.textBold)
216 self.textColor = Utils.getNoNil(textColor, self.textColor)
217 self.verticalAlignment = Utils.getNoNil(verticalAlignment, self.verticalAlignment)
218 self.textAlignment = Utils.getNoNil(textAlignment, self.textAlignment)
219end

setWorldPosition

Description
Definition
setWorldPosition()
Code
172function MapHotspot:setWorldPosition(x,z)
173 self.xMapPos = x
174 self.zMapPos = z
175end