X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fworldmap%2Fworldmap.hpp;h=75d8f8f9f056f7af8090198c9a23cdb0efd7d6b4;hb=58eb3364f724b2100859fd39da9bba5a9a09cafc;hp=e8f651aed3c516736578573b15238c831c7b5723;hpb=52de79ad8301a395a5a2999ecbdf31731c0b65f8;p=supertux.git diff --git a/src/worldmap/worldmap.hpp b/src/worldmap/worldmap.hpp index e8f651aed..75d8f8f9f 100644 --- a/src/worldmap/worldmap.hpp +++ b/src/worldmap/worldmap.hpp @@ -24,7 +24,6 @@ #include #include "math/vector.hpp" -#include "video/screen.hpp" #include "lisp/lisp.hpp" #include "control/controller.hpp" #include "statistics.hpp" @@ -79,6 +78,7 @@ private: std::string name; std::string music; + std::string init_script; typedef std::vector GameObjects; GameObjects game_objects; @@ -106,6 +106,10 @@ private: Statistics total_stats; + HSQOBJECT worldmap_table; + typedef std::vector ScriptList; + ScriptList scripts; + public: WorldMap(const std::string& filename); ~WorldMap(); @@ -116,6 +120,7 @@ public: { return current_; } virtual void setup(); + virtual void leave(); /** Update worldmap state */ virtual void update(float delta); @@ -154,6 +159,12 @@ public: const std::string& get_title() const { return name; } + + /** + * runs a script in the context of the worldmap (and keeps a reference to + * the script (so the script gets destroyed when the worldmap is destroyed) + */ + HSQUIRRELVM run_script(std::istream& in, const std::string& sourcename); private: void get_level_title(LevelTile& level);