CheckLightType() hinzugefuegt

Funktion war dokumentiert, aber nicht implementiert worden.

Change-Id: I215c5b5f4aeac11828a1df897494aa431d909174
diff --git a/std/thing/light.c b/std/thing/light.c
index 36411b4..d02f579 100644
--- a/std/thing/light.c
+++ b/std/thing/light.c
@@ -46,7 +46,7 @@
       light = 100;
     else if (light < -100)
       light = -100;
-   
+
     while ( objectp(env = environment(env)) )
         // Ja. Man ruft die _set_xxx()-Funktionen eigentlich nicht direkt auf.
         // Aber das Lichtsystem ist schon *so* rechenintensiv und gerade der
@@ -56,7 +56,35 @@
         //
         // Tiamak
         env->_set_last_content_change();
-    
+
     return Set( P_LIGHT, light, F_VALUE);
 }
 
+
+//                       ##############
+//######################## Lichttypen ############################
+//                       ##############
+
+// Lichttypen pruefen
+varargs int CheckLightType(int lighttype, int mode)
+{
+  int my_light_type = QueryProp(P_LIGHT_TYPE);
+
+  switch( mode )
+  {
+    // mind. alle angegebenen muessen vertreten sein
+    case LT_CHECK_ALL:
+      return ((lighttype & my_light_type) == lighttype);
+     // Genau diese Typen muessen vertreten sein.
+    case LT_CHECK_MATCH:
+      return (lighttype == my_light_type);
+    // Es darf kein Typ vertreten sein.
+    case LT_CHECK_NONE:
+      return !(lighttype & my_light_type);
+    // mind. einer der uebergebenen Typen muss vertreten sein
+    case LT_CHECK_ANY:
+    default:
+      return (lighttype & my_light_type);
+  }
+  return 0;
+}