#318: Automatically run default.nut for each level/sector and worldmap. We may want...
authorRyan Flegel <rflegel@gmail.com>
Fri, 16 May 2008 15:42:02 +0000 (15:42 +0000)
committerRyan Flegel <rflegel@gmail.com>
Fri, 16 May 2008 15:42:02 +0000 (15:42 +0000)
SVN-Revision: 5484

28 files changed:
data/levels/test/intro.stl
data/levels/test/intro2.stl
data/levels/test/keydoors.stl
data/levels/test/snowslope.stl
data/levels/test/transition.stl
data/levels/world2/Crumbling_Path.stl
data/levels/world2/airkey.stl
data/levels/world2/builder.stl
data/levels/world2/christophB.stl
data/levels/world2/detour.stl
data/levels/world2/fish.stl
data/levels/world2/key1.stl
data/levels/world2/key2.stl
data/levels/world2/key3.stl
data/levels/world2/key4.stl
data/levels/world2/key5.stl
data/levels/world2/leaves.stl
data/levels/world2/level1.stl
data/levels/world2/level2.stl
data/levels/world2/trees.stl
data/levels/world2/underconstruction.stl
data/levels/world2/updown.stl
data/levels/world2/village.stl
data/levels/world2/worldmap.stwm
src/level.cpp
src/level.hpp
src/sector.cpp
src/worldmap/worldmap.cpp

index 4c97b5d..b87eea6 100644 (file)
          (sprite "images/creatures/dummyguy/dummyguy.sprite")
        )
        (init-script "
-          import(\"levels/test/default.nut\");
           intro();
         ")
    )
index df4e5e8..a078790 100644 (file)
@@ -6,7 +6,6 @@
   (sector
     (name  "main")
     (init-script "
-      import(\"levels/test/default.nut\");
       intro(); 
     ")
     (gravity 10.000000)
index c2e245c..00dfff8 100644 (file)
@@ -4,10 +4,10 @@
   (author "slacker")
   (sector
     (name "main")
-    (init-script "import(\"levels/world2/default.nut\");
-AIRHINT.set_action(\"outline\");
-EARTHHINT.set_action(\"outline\");
-WOODHINT.set_action(\"outline\");")
+    (init-script "
+      AIRHINT.set_action(\"outline\");
+      EARTHHINT.set_action(\"outline\");
+      WOODHINT.set_action(\"outline\");")
     (ambient-light 1 1 1)
     (spawnpoint
       (name "main")
index 78c0fcc..4f70c75 100644 (file)
       (image "images/tiles/doodads/iceshrub.png")
     )
     (dispenser
-      (cycle 1)
+      (cycle 2)
       (x 3843)
       (y 709)
+      (random #t)
+      (type "cannon")
       (badguy "kamikazesnowball")
     )
     (fish
index ed39c0f..7b1a0ca 100644 (file)
@@ -5,7 +5,6 @@
   (license "GPL 2+ / CC-by-sa 3.0")
   (sector
     (name "main")
-    (init-script "import(\"levels/test/transition.nut\");")
     (ambient-light 0.7022965 0.8745861 1)
     (ambient_sound
       (sample "sounds/rain.wav")
index 7751429..683878c 100644 (file)
@@ -6,7 +6,6 @@
   (sector
     (name "main")
     (music "music/forest2.ogg")
-    (init-script "import(\"levels/world2/default.nut\" );")
     (ambient-light 1 1 1)
     (background
       (x 4000)
index ab0130d..4eac32c 100644 (file)
@@ -7,7 +7,6 @@
   (sector
     (name "main")
     (music "music/forest.music")
-    (init-script "import(\"levels/world2/default.nut\");")
     (ambient-light 1 1 1)
     (background
       (y 1500)
index abc394e..0452226 100644 (file)
@@ -6,7 +6,6 @@
   (sector
     (name "main")
     (music "music/forest2.ogg")
-    (init-script "import(\"levels/world2/default.nut\")")
     (ambient-light 1 1 1)
     (background
       (x 4000)
index ad73dae..557702d 100644 (file)
@@ -6,7 +6,6 @@
   (sector
     (name "main")
     (music "music/forest.music")
-    (init-script "import(\"levels/world2/default.nut\");")
     (ambient-light 1 1 1)
     (background
       (y 420)
index 4c7d745..9451079 100644 (file)
@@ -6,7 +6,6 @@
   (sector
     (name "main")
     (music "music/forest2.ogg")
-    (init-script "import(\"levels/world2/default.nut\");")
     (ambient-light 1 1 1)
     (background
       (x 3300)
index e896535..9d93568 100644 (file)
@@ -6,7 +6,6 @@
   (sector
     (name "main")
     (music "music/forest.music")
-    (init-script "import(\"levels/world2/default.nut\");")
     (ambient-light 1 1 1)
     (background
       (x 4000)
   (sector
     (name "secret")
     (music "music/cave.ogg")
-    (init-script "import(\"levels/world2/default.nut\");")
     (ambient-light 1 1 1)
     (background
       (speed 0.5)
index 7463ed4..d55339c 100644 (file)
@@ -5,9 +5,6 @@
   (license "GPL 2+ / CC-by-sa 3.0")
   (sector
     (name "main")
-    (init-script "
-          import(\"levels/world2/default.nut\");
-        ")
     (ambient-light 1 1 1)
     (background
       (x 500)
index 33ba6b4..93f75f2 100644 (file)
@@ -5,9 +5,6 @@
   (license "GPL 2+ / CC-by-sa 3.0")
   (sector
     (name "main")
-    (init-script "
-          import(\"levels/world2/default.nut\");
-        ")
     (ambient-light 1 1 1)
     (background
       (speed 0.5)
index 3342515..4b8931f 100644 (file)
@@ -5,9 +5,6 @@
   (license "GPL 2+ / CC-by-sa 3.0")
   (sector
     (name "main")
-    (init-script "
-          import(\"levels/world2/default.nut\");
-        ")
     (ambient-light 1 1 1)
     (background
       (speed 0.5)
index 2fade1a..0909cd0 100644 (file)
@@ -5,9 +5,6 @@
   (license "GPL 2+ / CC-by-sa 3.0")
   (sector
     (name "main")
-    (init-script "
-          import(\"levels/world2/default.nut\");
-        ")
     (ambient-light 1 1 1)
     (background
       (speed 0.5)
index ccfbf4c..58fe667 100644 (file)
@@ -5,9 +5,6 @@
   (license "GPL 2+ / CC-by-sa 3.0")
   (sector
     (name "main")
-    (init-script "
-          import(\"levels/world2/default.nut\");
-        ")
     (ambient-light 1 1 1)
     (background
       (speed 0.5)
index 8f44d09..c890b94 100644 (file)
@@ -6,7 +6,6 @@
   (sector
     (name "main")
     (music "music/forest.music")
-    (init-script "import(\"levels/world2/default.nut\");")
     (ambient-light 1 1 1)
     (background
       (x 4000)
index 9d38e2f..21e2b7d 100644 (file)
@@ -6,7 +6,6 @@
   (sector
     (name "main")
     (music "music/forest2.ogg")
-    (init-script "import(\"levels/world2/default.nut\");")
     (ambient-light 1 1 1)
     (ambient_sound
       (sample "sounds/rain.wav")
index 1e8a307..d114357 100644 (file)
@@ -6,9 +6,6 @@
   (sector
     (name "main")
     (music "music/forest.music")
-    (init-script "
-          import(\"levels/world2/default.nut\");
-        ")
     (ambient-light 1 1 1)
     (background
       (y 500)
index caeff73..9238ab2 100644 (file)
@@ -6,7 +6,6 @@
   (sector
     (name "main")
     (music "music/forest2.ogg")
-    (init-script "import(\"levels/world2/default.nut\");")
     (ambient-light 1 1 1)
     (background
       (y 650)
   (sector
     (name "tree house")
     (music "music/forest.music")
-    (init-script "import(\"levels/world2/default.nut\");")
     (ambient-light 1 1 1)
     (background
       (speed 0.5)
index bbffb0d..d953ef1 100644 (file)
@@ -6,10 +6,10 @@
   (sector
     (name "main")
     (music "music/forest3.ogg")
-    (init-script "import(\"levels/world2/default.nut\");
-AIRHINT.set_action(\"outline\");
-EARTHHINT.set_action(\"outline\");
-WOODHINT.set_action(\"outline\");")
+    (init-script "
+      AIRHINT.set_action(\"outline\");
+      EARTHHINT.set_action(\"outline\");
+      WOODHINT.set_action(\"outline\");")
     (ambient-light 1 1 1)
     (camera
       (mode "normal")
index 158541f..f2718b2 100644 (file)
@@ -6,7 +6,6 @@
   (sector
     (name "main")
     (music "music/forest.music")
-    (init-script "import(\"levels/world2/default.nut\");")
     (ambient-light 1 1 1)
     (background
       (x 200)
index 2cc72bb..8a6301c 100644 (file)
@@ -6,7 +6,6 @@
   (sector
     (name "main")
     (music "music/forest.music")
-    (init-script "import( \"levels/world2/default.nut\" );")
     (ambient-light 1 1 1)
     (ambient_sound
       (sample "sounds/saw.wav")
index 8e3c7b0..78af95f 100644 (file)
@@ -7,7 +7,6 @@
   (sector
     (name "main")
     (music "music/forestmap.ogg")
-    (init-script "import(\"levels/world2/default.nut\");")
     (ambient-light 1 1 1)
     (special-tile
       (invisible-tile #t)
index e1d26c6..78d4a1a 100644 (file)
@@ -67,6 +67,7 @@ void
 Level::load(const std::string& filepath)
 {
   try {
+    filename = filepath;
     lisp::Parser parser;
     const lisp::Lisp* root = parser.parse(filepath);
 
index 61bc5d6..889f8f3 100644 (file)
@@ -46,6 +46,7 @@ public:
   std::string author;
   std::string contact;
   std::string license;
+  std::string filename;
   std::string on_menukey_script;
   Sectors     sectors;
   Statistics  stats;
index 625a00b..35f472e 100644 (file)
@@ -44,6 +44,8 @@
 #include "lisp/writer.hpp"
 #include "lisp/list_iterator.hpp"
 #include "tile.hpp"
+#include "file_system.hpp"
+#include "physfs/physfs_stream.hpp"
 #include "audio/sound_manager.hpp"
 #include "game_session.hpp"
 #include "resources.hpp"
@@ -611,6 +613,18 @@ Sector::activate(const Vector& player_pos)
   camera->reset(player->get_pos());
   update_game_objects();
 
+  //Run default.nut just before init script
+  //Check to see if it's in a levelset (info file)
+  std::string basedir = FileSystem::dirname(get_level()->filename);
+  if(PHYSFS_exists((basedir + "/info").c_str())) {
+    try {
+      IFileStream in(basedir + "/default.nut");
+      run_script(in, std::string("Sector(") + name + ") - default.nut");
+    } catch(std::exception& ) {
+      // doesn't exist or erroneous; do nothing
+    }
+  }
+
   // Run init script
   if(init_script != "") {
     std::istringstream in(init_script);
index c491470..cf48384 100644 (file)
@@ -54,6 +54,7 @@
 #include "main.hpp"
 #include "spawn_point.hpp"
 #include "file_system.hpp"
+#include "physfs/physfs_stream.hpp"
 #include "tile_manager.hpp"
 #include "tile_set.hpp"
 #include "gui/menu.hpp"
@@ -939,6 +940,15 @@ WorldMap::setup()
     throw SquirrelError(global_vm, "Couldn't set worldmap in roottable");
   sq_pop(global_vm, 1);
 
+  //Run default.nut just before init script
+  try {
+    IFileStream in(levels_path + "/default.nut");
+    run_script(in, "WorldMap::default.nut");
+  } catch(std::exception& ) {
+    // doesn't exist or erroneous; do nothing
+  }
+
+
   if(init_script != "") {
     std::istringstream in(init_script);
     run_script(in, "WorldMap::init");