Random stuff that I should have committed ages ago.
[supertux.git] / src / object / scripted_object.cpp
index e95e5b5..13e5f5f 100644 (file)
 #include "resources.hpp"
 #include "object_factory.hpp"
 #include "math/vector.hpp"
+#include "sprite/sprite.hpp"
 
 ScriptedObject::ScriptedObject(const lisp::Lisp& lisp)
-  : MovingSprite(lisp, LAYER_OBJECTS, COLGROUP_MOVING),
+  : MovingSprite(lisp, LAYER_OBJECTS, COLGROUP_MOVING_STATIC),
     solid(true), physic_enabled(true), visible(true), new_vel_set(false)
 {
   lisp.get("name", name);
@@ -47,6 +48,11 @@ ScriptedObject::ScriptedObject(const lisp::Lisp& lisp)
   lisp.get("physic-enabled", physic_enabled);
   lisp.get("visible", visible);
   lisp.get("z-pos", layer);
+  if( solid ){
+    set_group( COLGROUP_MOVING_STATIC );
+  } else {
+    set_group( COLGROUP_DISABLED );
+  }
 }
 
 void
@@ -124,6 +130,11 @@ void
 ScriptedObject::set_solid(bool solid)
 {
   this->solid = solid;
+  if( solid ){
+    set_group( COLGROUP_MOVING_STATIC );
+  } else {
+    set_group( COLGROUP_DISABLED );
+  }
 }
 
 bool
@@ -183,7 +194,7 @@ ScriptedObject::collision_solid(const CollisionHit& hit)
     if(physic.get_velocity_y() > 0)
       physic.set_velocity_y(0);
   } else if(hit.top) {
-    physic.set_velocity_y(.1);
+    physic.set_velocity_y(.1f);
   }
 
   if(hit.left || hit.right) {