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