LUADOC - Farming Simulator 22

Script v1_7_1_0

Engine v1_7_1_0

Foundation Reference

NightlightFlicker

Description
s are flickering lights that are only active at night or during bad weather
Functions

new

Description
Creating nightlightflicker
Definition
new(integer name)
Arguments
integernamenode id
Return Values
tableinstanceInstance of object
Code
21function NightlightFlicker.new(id)
22 local self = {}
23 setmetatable(self, NightlightFlicker_mt)
24
25 self.id = id
26 self.isVisible = false
27 self.isFlickerActive = false
28 self.nextFlicker = 0
29 self.flickerDuration = 100
30 setVisibility(self.id, self.isVisible)
31
32 g_messageCenter:subscribe(MessageType.WEATHER_CHANGED, self.oNWeatherChanged, self)
33
34 return self
35end

onCreate

Description
Creating nightlightflicker
Definition
onCreate(integer id)
Arguments
integeridnode id
Code
13function NightlightFlicker:onCreate(id)
14 g_currentMission:addUpdateable(NightlightFlicker.new(id))
15end

onWeatherChanged

Description
Change visibility of night object
Definition
onWeatherChanged()
Code
68function NightlightFlicker:onWeatherChanged()
69 if g_currentMission ~= nil and g_currentMission.environment ~= nil then
70 self.isVisible = not (g_currentMission.environment.isSunOn and not g_currentMission.environment.weather:getIsRaining())
71 setVisibility(self.id, self.isVisible)
72 end
73end

update

Description
Update flickering
Definition
update(float dt)
Arguments
floatdttime since last call in ms
Code
44function NightlightFlicker:update(dt)
45 if self.isVisible then
46
47 self.nextFlicker = self.nextFlicker - dt
48 if self.nextFlicker <= 0 then
49 self.isFlickerActive = true
50 setVisibility(self.id, false)
51 self.nextFlicker = math.floor(math.random() * 1500 + self.flickerDuration + 10) -- set next flicker at least 10ms after this one
52 end
53
54 if self.isFlickerActive then
55 self.flickerDuration = self.flickerDuration - dt
56 if self.flickerDuration <= 0 then
57 self.isFlickerActive = false
58 self.flickerDuration = math.floor(math.random() * 200)
59 setVisibility(self.id, true)
60 end
61 end
62
63 end
64end