55 lines
903 B
C
55 lines
903 B
C
|
#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
|
||
|
|