projects
/
supertux.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
play sound when willowisp is caught
[supertux.git]
/
src
/
object
/
scripted_object.cpp
diff --git
a/src/object/scripted_object.cpp
b/src/object/scripted_object.cpp
index
90875f2
..
eadcc43
100644
(file)
--- a/
src/object/scripted_object.cpp
+++ b/
src/object/scripted_object.cpp
@@
-29,13
+29,13
@@
#include "math/vector.hpp"
ScriptedObject::ScriptedObject(const lisp::Lisp& lisp)
#include "math/vector.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);
if(name == "")
throw std::runtime_error("Scripted object must have a name specified");
solid(true), physic_enabled(true), visible(true), new_vel_set(false)
{
lisp.get("name", name);
if(name == "")
throw std::runtime_error("Scripted object must have a name specified");
-
+
// FIXME: do we need this? bbox is already set via .sprite file
float width = sprite->get_width();
float height = sprite->get_height();
// FIXME: do we need this? bbox is already set via .sprite file
float width = sprite->get_width();
float height = sprite->get_height();
@@
-47,20
+47,24
@@
ScriptedObject::ScriptedObject(const lisp::Lisp& lisp)
lisp.get("physic-enabled", physic_enabled);
lisp.get("visible", visible);
lisp.get("z-pos", layer);
lisp.get("physic-enabled", physic_enabled);
lisp.get("visible", visible);
lisp.get("z-pos", layer);
- if(solid)
- flags |= FLAG_SOLID;
+ if( solid ){
+ set_group( COLGROUP_MOVING_STATIC );
+ } else {
+ set_group( COLGROUP_DISABLED );
+ }
}
void
ScriptedObject::expose(HSQUIRRELVM vm, SQInteger table_idx)
{
}
void
ScriptedObject::expose(HSQUIRRELVM vm, SQInteger table_idx)
{
-
Scripting::ScriptedObject* interface = static_cast<Scripting::ScriptedObject*> (this)
;
- expose_object(vm, table_idx,
interface
, name, false);
+
if (name.empty()) return
;
+ expose_object(vm, table_idx,
dynamic_cast<Scripting::ScriptedObject *>(this)
, name, false);
}
void
ScriptedObject::unexpose(HSQUIRRELVM vm, SQInteger table_idx)
{
}
void
ScriptedObject::unexpose(HSQUIRRELVM vm, SQInteger table_idx)
{
+ if (name.empty()) return;
Scripting::unexpose_object(vm, table_idx, name);
}
Scripting::unexpose_object(vm, table_idx, name);
}
@@
-125,10
+129,11
@@
void
ScriptedObject::set_solid(bool solid)
{
this->solid = solid;
ScriptedObject::set_solid(bool solid)
{
this->solid = solid;
- if(solid)
- flags |= FLAG_SOLID;
- else
- flags ^= FLAG_SOLID;
+ if( solid ){
+ set_group( COLGROUP_MOVING_STATIC );
+ } else {
+ set_group( COLGROUP_DISABLED );
+ }
}
bool
}
bool
@@
-188,7
+193,7
@@
ScriptedObject::collision_solid(const CollisionHit& hit)
if(physic.get_velocity_y() > 0)
physic.set_velocity_y(0);
} else if(hit.top) {
if(physic.get_velocity_y() > 0)
physic.set_velocity_y(0);
} else if(hit.top) {
- physic.set_velocity_y(.1);
+ physic.set_velocity_y(.1
f
);
}
if(hit.left || hit.right) {
}
if(hit.left || hit.right) {