LUADOC - Farming Simulator 17

Printable Version

NightlightFlicker

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

onCreate

Description
Creating nightlightflicker
Definition
onCreate(integer id)
Arguments
integeridnode id
Code
15function NightlightFlicker:onCreate(id)
16 g_currentMission:addUpdateable(NightlightFlicker:new(id));
17end;

new

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

update

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

weatherChanged

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