X-Git-Url: https://git.verplant.org/?a=blobdiff_plain;f=src%2Fobject%2Fambient_sound.hpp;h=a7a14bca770a151da39e9e093cc66d2a91b430f4;hb=1dfbd27a41341f26775ca4e2b9ca4864f5744a6f;hp=0b2bd1d930b6057b716223c5611443f759639a80;hpb=07ddaed2a657e4d2a3d038fed223fc5827159caf;p=supertux.git diff --git a/src/object/ambient_sound.hpp b/src/object/ambient_sound.hpp index 0b2bd1d93..a7a14bca7 100644 --- a/src/object/ambient_sound.hpp +++ b/src/object/ambient_sound.hpp @@ -21,13 +21,13 @@ /** * Ambient Sound Source, gamma version. Features: * - * - "rounded rectancle" geometry with position, dimension and - * "rounding radius" (extending in all directions) of a 100% - * volume area, adjustable maximum volume, inverse square + * - "rounded rectancle" geometry with position, dimension and + * "rounding radius" (extending in all directions) of a 100% + * volume area, adjustable maximum volume, inverse square * falloff outside area. - * + * * - degenerates gracefully to a disc for dimension=0 - * + * * - parameters: * * x, y position @@ -36,8 +36,8 @@ * distance_bias high = big "100% disc" * silence_distance defaults reasonably. * sample sample to be played back in loop mode - * - * basti_ + * + * basti_ */ #ifndef __AMBIENT_SOUND_H__ @@ -46,22 +46,48 @@ #include "game_object.hpp" #include "resources.hpp" #include "player.hpp" +#include "script_interface.hpp" +#include "scripting/ambient_sound.hpp" class SoundSource; -class AmbientSound : public GameObject +class AmbientSound : public GameObject, public ScriptInterface, public Scripting::AmbientSound { public: AmbientSound(const lisp::Lisp& lisp); AmbientSound(Vector pos, float factor, float bias, float vol, std::string file); ~AmbientSound(); + + void set_pos(Vector newpos) + { + position=newpos; + } + const Vector get_pos() const + { + return position; + } + + /** + * @name Scriptable Methods + * @{ + */ + void set_pos(float x, float y); + float get_pos_x() const; + float get_pos_y() const; + /** + * @} + */ + protected: virtual void hit(Player& player); virtual void update(float time); virtual void draw(DrawingContext&); virtual void start_playing(); virtual void stop_playing(); + virtual void expose(HSQUIRRELVM vm, SQInteger table_idx); + virtual void unexpose(HSQUIRRELVM vm, SQInteger table_idx); private: + std::string name; /**< user-defined name for use in scripts or empty string if not scriptable */ Vector position; Vector dimension; @@ -71,7 +97,7 @@ private: float distance_factor; /// distance scaling float distance_bias; /// 100% volume disc radius - float silence_distance; /// not implemented yet + float silence_distance; /// not implemented yet float maximumvolume; /// maximum volume float targetvolume; /// how loud we want to be @@ -81,4 +107,3 @@ private: }; #endif -