X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fbadguy%2Fwillowisp.hpp;h=2ccbc685b13474b5b69b4f0db980bc8091fa959a;hb=d3be1cc7c63d3f8487a26050526802bb76b14e1c;hp=cfbcb19e9d722ae92fae78d2da1156f647dea75a;hpb=58eb3364f724b2100859fd39da9bba5a9a09cafc;p=supertux.git diff --git a/src/badguy/willowisp.hpp b/src/badguy/willowisp.hpp index cfbcb19e9..2ccbc685b 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,39 +22,63 @@ #define __WILLOWISP_H__ #include "badguy.hpp" +#include "object/path.hpp" +#include "object/path_walker.hpp" +#include "script_interface.hpp" +#include "scripting/willowisp.hpp" -class WillOWisp : public BadGuy +class WillOWisp : public BadGuy, public Scripting::WillOWisp, + public ScriptInterface { public: WillOWisp(const lisp::Lisp& reader); - WillOWisp(const WillOWisp& willowisp); - ~WillOWisp(); 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; - SoundSource* soundSource; + std::auto_ptr sound_source; + + std::auto_ptr path; + std::auto_ptr walker; + + float flyspeed; + float track_range; + float vanish_range; }; #endif -