X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fbadguy%2Fwillowisp.hpp;h=a5ca159b8c825615f03ec3f5ea487f736560188a;hb=75acd4b141f45e851a492f089aa9ad24a9552409;hp=ce45ced76c514285bfb906b91421ce68315473e4;hpb=f135ee3fa4a3e61f09da32c1b8e2145b655b247a;p=supertux.git diff --git a/src/badguy/willowisp.hpp b/src/badguy/willowisp.hpp index ce45ced76..a5ca159b8 100644 --- a/src/badguy/willowisp.hpp +++ b/src/badguy/willowisp.hpp @@ -1,5 +1,5 @@ // $Id$ -// +// // SuperTux - "Will-O-Wisp" Badguy // Copyright (C) 2006 Christoph Sommer // @@ -12,7 +12,7 @@ // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. -// +// // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA @@ -22,9 +22,16 @@ #define __WILLOWISP_H__ #include "badguy.hpp" -#include "audio/managed_sound_source.hpp" -class WillOWisp : public BadGuy +class Path; +class PathWalker; +class SoundSource; + +#include "script_interface.hpp" +#include "scripting/willowisp.hpp" + +class WillOWisp : public BadGuy, public Scripting::WillOWisp, + public ScriptInterface { public: WillOWisp(const lisp::Lisp& reader); @@ -32,28 +39,49 @@ public: void activate(); void deactivate(); - void write(lisp::Writer& write); void active_update(float elapsed_time); - void kill_fall(); + virtual bool is_flammable() const { return false; } + virtual bool is_freezable() const { return false; } + virtual void kill_fall() { vanish(); } + + /** + * make WillOWisp vanish + */ + void vanish(); virtual void draw(DrawingContext& context); - virtual WillOWisp* clone() const { return new WillOWisp(*this); } + virtual void goto_node(int node_no); + virtual void set_state(const std::string& state); + virtual void start_moving(); + virtual void stop_moving(); + + virtual void expose(HSQUIRRELVM vm, SQInteger table_idx); + virtual void unexpose(HSQUIRRELVM vm, SQInteger table_idx); protected: + virtual bool collides(GameObject& other, const CollisionHit& hit); HitResponse collision_player(Player& player, const CollisionHit& hit); private: enum MyState { - STATE_IDLE, STATE_TRACKING, STATE_VANISHING, STATE_WARPING + STATE_STOPPED, STATE_IDLE, STATE_TRACKING, STATE_VANISHING, STATE_WARPING, + STATE_PATHMOVING, STATE_PATHMOVING_TRACK }; MyState mystate; std::string target_sector; std::string target_spawnpoint; + std::string hit_script; + + std::auto_ptr sound_source; - ManagedSoundSource soundSource; + std::auto_ptr path; + std::auto_ptr walker; + + float flyspeed; + float track_range; + float vanish_range; }; #endif -