summaryrefslogtreecommitdiff
path: root/src/light.h
diff options
context:
space:
mode:
authorPerttu Ahola <celeron55@gmail.com>2010-11-27 01:02:21 +0200
committerPerttu Ahola <celeron55@gmail.com>2010-11-27 01:02:21 +0200
commit4e249fb3fbf75f0359758760d88e22aa5b14533c (patch)
tree323087d05efbd2ace27b316d4f017cf812a31992 /src/light.h
downloadminetest-4e249fb3fbf75f0359758760d88e22aa5b14533c.tar.gz
minetest-4e249fb3fbf75f0359758760d88e22aa5b14533c.tar.bz2
minetest-4e249fb3fbf75f0359758760d88e22aa5b14533c.zip
Initial files
Diffstat (limited to 'src/light.h')
-rw-r--r--src/light.h54
1 files changed, 54 insertions, 0 deletions
diff --git a/src/light.h b/src/light.h
new file mode 100644
index 000000000..b76ac3a5d
--- /dev/null
+++ b/src/light.h
@@ -0,0 +1,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
+