]> git.lizzy.rs Git - minetest.git/blob - src/light.h
Initial files
[minetest.git] / src / light.h
1 #ifndef LIGHT_HEADER
2 #define LIGHT_HEADER
3
4 #include "common_irrlicht.h"
5
6 // This directly sets the range of light
7 #define LIGHT_MAX 14
8 // This brightness is reserved for sunlight
9 #define LIGHT_SUN 15
10
11 inline u8 diminish_light(u8 light)
12 {
13         if(light == 0)
14                 return 0;
15         if(light >= LIGHT_MAX)
16                 return LIGHT_MAX - 1;
17                 
18         return light - 1;
19 }
20
21 inline u8 diminish_light(u8 light, u8 distance)
22 {
23         if(distance >= light)
24                 return 0;
25         return  light - distance;
26 }
27
28 inline u8 undiminish_light(u8 light)
29 {
30         // We don't know if light should undiminish from this particular 0.
31         // Thus, keep it at 0.
32         if(light == 0)
33                 return 0;
34         if(light == LIGHT_MAX)
35                 return light;
36         
37         return light + 1;
38 }
39
40 extern u8 light_decode_table[LIGHT_MAX+1];
41
42 inline u8 decode_light(u8 light)
43 {
44         if(light == LIGHT_SUN)
45                 return light_decode_table[LIGHT_MAX];
46         
47         if(light > LIGHT_MAX)
48                 throw;
49         
50         return light_decode_table[light];
51 }
52
53 #endif
54