Support for initial direction "left"|"right"|"auto" in Dispenser,
authorWolfgang Becker <uafr@gmx.de>
Mon, 3 Jul 2006 12:13:12 +0000 (12:13 +0000)
committerWolfgang Becker <uafr@gmx.de>
Mon, 3 Jul 2006 12:13:12 +0000 (12:13 +0000)
DartTrap, Snail, Zeekling, PoisonIvy, MrTree, SleepingSpiky, Spiky,
BouncingSnowball, MrIceBlock, SnowBall, MrBomb.

SVN-Revision: 3849

28 files changed:
data/levels/test/direction.stl [new file with mode: 0644]
data/levels/world2/fish.stl
src/badguy/badguy.cpp
src/badguy/badguy.hpp
src/badguy/bouncing_snowball.cpp
src/badguy/bouncing_snowball.hpp
src/badguy/darttrap.cpp
src/badguy/darttrap.hpp
src/badguy/dispenser.cpp
src/badguy/dispenser.hpp
src/badguy/mrbomb.cpp
src/badguy/mrbomb.hpp
src/badguy/mriceblock.cpp
src/badguy/mriceblock.hpp
src/badguy/mrtree.cpp
src/badguy/mrtree.hpp
src/badguy/poisonivy.cpp
src/badguy/poisonivy.hpp
src/badguy/snail.cpp
src/badguy/snail.hpp
src/badguy/snowball.cpp
src/badguy/snowball.hpp
src/badguy/spiky.cpp
src/badguy/spiky.hpp
src/badguy/sspiky.cpp
src/badguy/sspiky.hpp
src/badguy/zeekling.cpp
src/badguy/zeekling.hpp

diff --git a/data/levels/test/direction.stl b/data/levels/test/direction.stl
new file mode 100644 (file)
index 0000000..5a70950
--- /dev/null
@@ -0,0 +1,189 @@
+(supertux-level
+  (version 2)
+  (name (_ "Unnamed"))
+  (author "wolfgang")
+  (sector
+    (name "main")
+    (background
+      (speed 0.5)
+      (image-top "images/background/arctis_top.jpg")
+      (image "images/background/arctis.jpg")
+      (image-bottom "images/background/arctis_bottom.jpg")
+    )
+    (tilemap
+      (z-pos -100)
+      (solid #f)
+      (speed 1)
+      (width 50)
+      (height 35)
+      (tiles 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)
+    )
+    (tilemap
+      (z-pos 0)
+      (solid #t)
+      (speed 1)
+      (width 50)
+      (height 35)
+      (tiles 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1756 1757 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1756 1757 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1756 1757 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1756 1757 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1756 1757 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1756 1757 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1756 1757 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 1756 1757 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1756 1757 0 1756 1757 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1756 1757 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)
+    )
+    (tilemap
+      (z-pos 100)
+      (solid #f)
+      (speed 1)
+      (width 50)
+      (height 35)
+      (tiles 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)
+    )
+    (camera
+      (mode "normal")
+    )
+    (mrbomb
+      (direction "left")
+      (x 300.336)
+      (y 495.7777)
+    )
+    (mrbomb
+      (direction "auto")
+      (x 1047.041)
+      (y 501.4346)
+    )
+    (mrbomb
+      (direction "left")
+      (x 569.0366)
+      (y 269.5035)
+    )
+    (mrbomb
+      (direction "right")
+      (x 493.7288)
+      (y 268.332)
+    )
+    (mrbomb
+      (direction "right")
+      (x 419.13)
+      (y 498.6062)
+    )
+    (sspiky
+      (direction "left")
+      (x 240.939)
+      (y 787.1058)
+    )
+    (sspiky
+      (direction "right")
+      (x 342.7624)
+      (y 781.4489)
+    )
+    (sspiky
+      (direction "auto")
+      (x 911.2763)
+      (y 784.2773)
+    )
+    (sspiky
+      (direction "auto")
+      (x 506.8112)
+      (y 787.1057)
+    )
+    (spawnpoint
+      (name "main")
+      (x 768)
+      (y 96)
+    )
+    (dispenser
+      (badguy "mrrocket")
+      (cycle 1)
+      (direction "left")
+      (x 215.4832)
+      (y 996.4092)
+    )
+    (dispenser
+      (badguy "mrrocket")
+      (cycle 1)
+      (direction "right")
+      (x 472.8701)
+      (y 999.2377)
+    )
+    (dispenser
+      (badguy "random")
+      (cycle 1)
+      (direction "auto")
+      (x 931.0753)
+      (y 917.2133)
+    )
+    (dispenser
+      (badguy "random")
+      (cycle 1)
+      (direction "left")
+      (x 1240.788)
+      (y 912.9707)
+    )
+    (dispenser
+      (badguy "random")
+      (cycle 1)
+      (direction "")
+      (x 1379.381)
+      (y 911.5566)
+    )
+    (dispenser
+      (badguy "random")
+      (cycle 1)
+      (direction "right")
+      (x 1093.71)
+      (y 910.1423)
+    )
+    (darttrap
+      (initial-delay 0)
+      (fire-delay 2)
+      (ammo -1)
+      (direction "right")
+      (x 256.5859)
+      (y 964.7768)
+    )
+    (darttrap
+      (initial-delay 0)
+      (fire-delay 2)
+      (ammo -1)
+      (direction "auto")
+      (x 209.8263)
+      (y 890.3432)
+    )
+    (darttrap
+      (initial-delay 0)
+      (fire-delay 2)
+      (ammo -1)
+      (direction "auto")
+      (x 258.0001)
+      (y 919.5219)
+    )
+    (darttrap
+      (initial-delay 0)
+      (fire-delay 2)
+      (ammo -1)
+      (direction "left")
+      (x 259.4143)
+      (y 875.6813)
+    )
+    (darttrap
+      (initial-delay 0)
+      (fire-delay 2)
+      (ammo -1)
+      (direction "left")
+      (x 498.4164)
+      (y 874.2671)
+    )
+    (darttrap
+      (initial-delay 0)
+      (fire-delay 2)
+      (ammo -1)
+      (direction "auto")
+      (x 498.4164)
+      (y 919.5219)
+    )
+    (darttrap
+      (initial-delay 0)
+      (fire-delay 2)
+      (ammo -1)
+      (direction "right")
+      (x 498.4164)
+      (y 961.9484)
+    )
+  )
+)
index 0d37ea5..55b02eb 100644 (file)
     (dispenser
       (badguy "poisonivy")
       (cycle 3)
-      (launchdirection "right")
+      (direction "right")
       (x 768)
       (y 320)
     )
index c2b002d..38d077b 100644 (file)
@@ -102,6 +102,21 @@ BadGuy::update(float elapsed_time)
   }
 }
 
+Direction
+BadGuy::str2dir( std::string dir_str )
+{
+  if( dir_str == "auto" || dir_str == "" )
+    return dir;
+  if( dir_str == "left" )
+    return LEFT;
+  if( dir_str == "right" ) 
+    return RIGHT;
+
+  //default to "auto"
+  log_warning << "Badguy::str2dir: unknown direction \"" << dir_str << "\"\n";    
+  return dir;
+}
+
 void
 BadGuy::activate()
 {
index 425213d..ebcee69 100644 (file)
@@ -156,6 +156,11 @@ protected:
 
   Direction dir;
 
+  /**
+   *  Get Direction from String.
+   */ 
+  Direction str2dir( std::string dir_str );
+
 private:
   void try_activate();
   
index 5601bfb..5fce3cf 100644 (file)
@@ -26,8 +26,13 @@ static const float WALKSPEED = 80;
 
 BouncingSnowball::BouncingSnowball(const lisp::Lisp& reader)
        : BadGuy(reader, "images/creatures/bouncing_snowball/bouncing_snowball.sprite")
-{
+{ 
   set_direction = false;
+  reader.get("direction", direction);
+  if( direction != "auto" && direction != ""){ 
+    set_direction = true;
+    initial_direction = str2dir( direction );
+  }
 }
 
 BouncingSnowball::BouncingSnowball(const Vector& pos, Direction d)
@@ -42,6 +47,7 @@ BouncingSnowball::write(lisp::Writer& writer)
 {
   writer.start_list("bouncingsnowball");
 
+  writer.write_string("direction", direction);
   writer.write_float("x", start_position.x);
   writer.write_float("y", start_position.y);
 
index 33a6c76..6ba417d 100644 (file)
@@ -39,6 +39,7 @@ protected:
   bool collision_squished(Player& player);
   bool set_direction;
   Direction initial_direction;  
+  std::string direction;
 };
 
 #endif
index d86326b..6add158 100644 (file)
@@ -29,6 +29,10 @@ namespace {
 DartTrap::DartTrap(const lisp::Lisp& reader) 
        : BadGuy(reader, "images/creatures/darttrap/darttrap.sprite"), set_direction(true), initial_direction(LEFT), initial_delay(0), fire_delay(2), ammo(-1), state(IDLE)
 {
+  reader.get("direction", direction);
+  if( direction != "auto" && direction != ""){
+    initial_direction = str2dir( direction );
+  }
   reader.get("initial-delay", initial_delay);
   reader.get("fire-delay", fire_delay);
   reader.get("ammo", ammo);
@@ -40,6 +44,7 @@ void
 DartTrap::write(lisp::Writer& writer)
 {
   writer.start_list("darttrap");
+  writer.write_string("direction", direction);
   writer.write_float("x", start_position.x);
   writer.write_float("y", start_position.y);
   writer.write_float("initial-delay", initial_delay);
index 461e852..09ac5fd 100644 (file)
@@ -54,6 +54,7 @@ protected:
 
   State state; /**< current state */
   Timer fire_timer; /**< time until new shot is fired */
+  std::string direction;
 };
 
 #endif
index de9f930..b06c18d 100644 (file)
 Dispenser::Dispenser(const lisp::Lisp& reader)
        : BadGuy(reader, "images/creatures/dispenser/dispenser.sprite")
 {
-  std::string launchdirection = "";
-  launchdir = dir;
-  reader.get("launchdirection", launchdirection);
-  if( launchdirection == "left" || launchdirection == "LEFT"  )
-    launchdir = LEFT;
-  if( launchdirection == "right" || launchdirection == "RIGHT"  ) 
-    launchdir = RIGHT;
+  set_direction = false;
+  reader.get("direction", direction);
+  if( direction != "auto" && direction != ""){
+    set_direction = true;
+    initial_direction = str2dir( direction );
+    dir = str2dir( direction );
+  }
   reader.get("cycle", cycle);
   reader.get("badguy", badguy);
   if (badguy == "mrrocket") {
-     sprite->set_action(launchdir == LEFT ? "working-left" : "working-right");
+     sprite->set_action(dir == LEFT ? "working-left" : "working-right");
   }
   else {sprite->set_action("dropper");}
   bbox.set_size(sprite->get_current_hitbox_width(), sprite->get_current_hitbox_height());
@@ -55,6 +55,7 @@ Dispenser::write(lisp::Writer& writer)
 {
   writer.start_list("dispenser");
 
+  writer.write_string("direction", direction);
   writer.write_float("x", start_position.x);
   writer.write_float("y", start_position.y);
   writer.write_float("cycle", cycle);
@@ -74,7 +75,7 @@ bool
 Dispenser::collision_squished(Player& player)
 {
   //TODO: Should it act like a normal tile when killed?
-  sprite->set_action(launchdir == LEFT ? "broken-left" : "broken-right");
+  sprite->set_action(dir == LEFT ? "broken-left" : "broken-right");
   dispense_timer.start(0);
   player.bounce(*this);
   kill_squished(player);
@@ -94,35 +95,38 @@ Dispenser::active_update(float )
 void
 Dispenser::launch_badguy()
 {
+  if( set_direction ){
+    dir = initial_direction;
+  }
   //FIXME: Does is_offscreen() work right here?
   if (!is_offscreen()) {
     if (badguy == "snowball")
-      Sector::current()->add_object(new SnowBall(Vector(get_pos().x, get_pos().y+32), launchdir));
+      Sector::current()->add_object(new SnowBall(Vector(get_pos().x, get_pos().y+32), dir));
     else if (badguy == "bouncingsnowball")
-      Sector::current()->add_object(new BouncingSnowball(Vector(get_pos().x, get_pos().y+32), launchdir));
+      Sector::current()->add_object(new BouncingSnowball(Vector(get_pos().x, get_pos().y+32), dir));
     else if (badguy == "mrbomb")
-      Sector::current()->add_object(new MrBomb(Vector(get_pos().x, get_pos().y+32), launchdir));
+      Sector::current()->add_object(new MrBomb(Vector(get_pos().x, get_pos().y+32), dir));
     else if (badguy == "mriceblock")
-      Sector::current()->add_object(new MrIceBlock(Vector(get_pos().x, get_pos().y+32), launchdir));
+      Sector::current()->add_object(new MrIceBlock(Vector(get_pos().x, get_pos().y+32), dir));
     else if (badguy == "snail")
-      Sector::current()->add_object(new Snail(Vector(get_pos().x, get_pos().y+32), launchdir));
+      Sector::current()->add_object(new Snail(Vector(get_pos().x, get_pos().y+32), dir));
     else if (badguy == "mrrocket") {
-      Sector::current()->add_object(new MrRocket(Vector(get_pos().x+(launchdir == LEFT ? -32 : 32), get_pos().y), launchdir));}
+      Sector::current()->add_object(new MrRocket(Vector(get_pos().x+(dir == LEFT ? -32 : 32), get_pos().y), dir));}
     else if (badguy == "poisonivy")
-      Sector::current()->add_object(new PoisonIvy(Vector(get_pos().x, get_pos().y+32), launchdir));
+      Sector::current()->add_object(new PoisonIvy(Vector(get_pos().x, get_pos().y+32), dir));
     else if (badguy == "skullyhop")
-      Sector::current()->add_object(new SkullyHop(Vector(get_pos().x, get_pos().y+44), launchdir));
+      Sector::current()->add_object(new SkullyHop(Vector(get_pos().x, get_pos().y+44), dir));
     else if (badguy == "random")
     {
       switch (systemRandom.rand(7))
       {
-        case 0: Sector::current()->add_object(new SnowBall(Vector(get_pos().x, get_pos().y+32), launchdir)); break;
-        case 1: Sector::current()->add_object(new BouncingSnowball(Vector(get_pos().x, get_pos().y+32), launchdir)); break;
-        case 2: Sector::current()->add_object(new MrBomb(Vector(get_pos().x, get_pos().y+32), launchdir)); break;
-        case 3: Sector::current()->add_object(new MrIceBlock(Vector(get_pos().x, get_pos().y+32), launchdir)); break;
-        case 4: Sector::current()->add_object(new PoisonIvy(Vector(get_pos().x, get_pos().y+32), launchdir)); break;
-        case 5: Sector::current()->add_object(new Snail(Vector(get_pos().x, get_pos().y+32), launchdir)); break;
-        case 6: Sector::current()->add_object(new SkullyHop(Vector(get_pos().x, get_pos().y+44), launchdir)); break;
+        case 0: Sector::current()->add_object(new SnowBall(Vector(get_pos().x, get_pos().y+32), dir)); break;
+        case 1: Sector::current()->add_object(new BouncingSnowball(Vector(get_pos().x, get_pos().y+32), dir)); break;
+        case 2: Sector::current()->add_object(new MrBomb(Vector(get_pos().x, get_pos().y+32), dir)); break;
+        case 3: Sector::current()->add_object(new MrIceBlock(Vector(get_pos().x, get_pos().y+32), dir)); break;
+        case 4: Sector::current()->add_object(new PoisonIvy(Vector(get_pos().x, get_pos().y+32), dir)); break;
+        case 5: Sector::current()->add_object(new Snail(Vector(get_pos().x, get_pos().y+32), dir)); break;
+        case 6: Sector::current()->add_object(new SkullyHop(Vector(get_pos().x, get_pos().y+44), dir)); break;
       }
     }
   }
index c9fa524..2ba8ba2 100644 (file)
@@ -40,7 +40,9 @@ protected:
   float cycle;
   std::string badguy;
   Timer dispense_timer;
-  Direction launchdir;
+  bool set_direction;
+  Direction initial_direction;  
+  std::string direction;
 };
 
 #endif
index 3d90f2f..280596e 100644 (file)
@@ -28,6 +28,11 @@ MrBomb::MrBomb(const lisp::Lisp& reader)
        : BadGuy(reader, "images/creatures/mr_bomb/mr_bomb.sprite")
 {
   set_direction = false;
+  reader.get("direction", direction);
+  if( direction != "auto" && direction != ""){
+    set_direction = true;
+    initial_direction = str2dir( direction );
+  }
 }
 
 MrBomb::MrBomb(const Vector& pos, Direction d)
@@ -42,6 +47,7 @@ MrBomb::write(lisp::Writer& writer)
 {
   writer.start_list("mrbomb");
 
+  writer.write_string("direction", direction);
   writer.write_float("x", start_position.x);
   writer.write_float("y", start_position.y);
 
index c8a1487..4759f8b 100644 (file)
@@ -41,6 +41,7 @@ protected:
   bool collision_squished(Player& player);
   bool set_direction;
   Direction initial_direction;  
+  std::string direction;
 };
 
 #endif
index efc1556..ca0431a 100644 (file)
@@ -31,7 +31,12 @@ namespace {
 MrIceBlock::MrIceBlock(const lisp::Lisp& reader)
   : BadGuy(reader, "images/creatures/mr_iceblock/mr_iceblock.sprite"), ice_state(ICESTATE_NORMAL), squishcount(0)
 {
+  reader.get("direction", direction);
   set_direction = false;
+  if( direction != "auto" && direction != ""){
+    set_direction = true;
+    initial_direction = str2dir( direction );
+  }
   sound_manager->preload("sounds/iceblock_bump.wav");
   sound_manager->preload("sounds/stomp.wav");
   sound_manager->preload("sounds/kick.wav");
@@ -52,6 +57,7 @@ MrIceBlock::write(lisp::Writer& writer)
 {
   writer.start_list("mriceblock");
 
+  writer.write_string("direction", direction);
   writer.write_float("x", start_position.x);
   writer.write_float("y", start_position.y);
 
index 35700fa..ca6c59d 100644 (file)
@@ -61,6 +61,7 @@ private:
   int squishcount;
   bool set_direction;
   Direction initial_direction;
+  std::string direction;
 };
 
 #endif
index 3f92211..9324b93 100644 (file)
@@ -34,6 +34,13 @@ static const float POISONIVY_Y_OFFSET = 24;
 MrTree::MrTree(const lisp::Lisp& reader)
   : BadGuy(reader, "images/creatures/mr_tree/mr_tree.sprite"), mystate(STATE_BIG)
 {
+  reader.get("direction", direction);
+  set_direction = true;
+  if( direction != "auto" && direction != ""){
+    set_direction = true;
+    initial_direction = str2dir( direction );
+    dir = str2dir( direction );
+  }
   sprite->set_action(dir == LEFT ? "large-left" : "large-right");
   sound_manager->preload("sounds/mr_tree.ogg");
   sound_manager->preload("sounds/mr_treehit.ogg");
@@ -44,6 +51,7 @@ MrTree::write(lisp::Writer& writer)
 {
   writer.start_list("mrtree");
 
+  writer.write_string("direction", direction);
   writer.write_float("x", start_position.x);
   writer.write_float("y", start_position.y);
 
@@ -53,6 +61,9 @@ MrTree::write(lisp::Writer& writer)
 void
 MrTree::activate()
 {
+  if( set_direction ){
+      dir = initial_direction;
+  }
   if (mystate == STATE_BIG) {
     physic.set_velocity_x(dir == LEFT ? -WALKSPEED : WALKSPEED);
     sprite->set_action(dir == LEFT ? "large-left" : "large-right");
index 652a00e..9795a6d 100644 (file)
@@ -44,6 +44,9 @@ protected:
   Timer invincible_timer;
 
   bool collision_squished(Player& player);
+  std::string direction;
+  bool set_direction;
+  Direction initial_direction;  
 };
 
 #endif
index e442a9a..302fb4c 100644 (file)
@@ -27,6 +27,11 @@ PoisonIvy::PoisonIvy(const lisp::Lisp& reader)
        : BadGuy(reader, "images/creatures/poison_ivy/poison_ivy.sprite")
 {
   set_direction = false;
+  reader.get("direction", direction);
+  if( direction != "auto" && direction != ""){
+    set_direction = true;
+    initial_direction = str2dir( direction );
+  }
 }
 
 PoisonIvy::PoisonIvy(const Vector& pos, Direction d)
@@ -41,6 +46,7 @@ PoisonIvy::write(lisp::Writer& writer)
 {
   writer.start_list("poisonivy");
 
+  writer.write_string("direction", direction);
   writer.write_float("x", start_position.x);
   writer.write_float("y", start_position.y);
 
index a24cfeb..6ee178d 100644 (file)
@@ -39,6 +39,7 @@ protected:
   bool collision_squished(Player& player);
   bool set_direction;
   Direction initial_direction;  
+  std::string direction;
 };
 
 #endif
index dea697b..d53e914 100644 (file)
@@ -32,7 +32,12 @@ namespace {
 Snail::Snail(const lisp::Lisp& reader)
   : BadGuy(reader, "images/creatures/snail/snail.sprite"), state(STATE_NORMAL), squishcount(0)
 {
+  reader.get("direction", direction);
   set_direction = false;
+  if( direction != "auto" && direction != ""){
+    set_direction = true;
+    initial_direction = str2dir( direction );
+  }
   sound_manager->preload("sounds/iceblock_bump.wav");
   sound_manager->preload("sounds/stomp.wav");
   sound_manager->preload("sounds/kick.wav");
@@ -53,6 +58,7 @@ Snail::write(lisp::Writer& writer)
 {
   writer.start_list("snail");
 
+  writer.write_string("direction", direction);
   writer.write_float("x", start_position.x);
   writer.write_float("y", start_position.y);
 
index 45904e9..50e2301 100644 (file)
@@ -59,6 +59,7 @@ private:
   int squishcount;
   bool set_direction;
   Direction initial_direction;  
+  std::string direction;
 };
 
 #endif
index c20b65f..22dce8e 100644 (file)
@@ -26,15 +26,12 @@ static const float WALKSPEED = 80;
 SnowBall::SnowBall(const lisp::Lisp& reader)
        : BadGuy(reader, "images/creatures/snowball/snowball.sprite")
 {
-  /*
-  fluffy = false;  
-  reader.get("fluffy",fluffy);
-  if (fluffy) {
-         delete sprite;
-         sprite = sprite_manager->create("images/creatures/fluffy/fluffy.sprite");
-  }
-  */
   set_direction = false;
+  reader.get("direction", direction);
+  if( direction != "auto" && direction != ""){
+    set_direction = true;
+    initial_direction = str2dir( direction );
+  }
 }
 
 SnowBall::SnowBall(const Vector& pos, Direction d)
@@ -49,6 +46,7 @@ SnowBall::write(lisp::Writer& writer)
 {
   writer.start_list("snowball");
 
+  writer.write_string("direction", direction);
   writer.write_float("x", start_position.x);
   writer.write_float("y", start_position.y);
   /*
index d13c03f..eab2c06 100644 (file)
@@ -39,7 +39,7 @@ protected:
   bool collision_squished(Player& player);
   bool set_direction;
   Direction initial_direction;  
-  //bool fluffy;
+  std::string direction;
 };
 
 #endif
index fbe27ee..cf498c3 100644 (file)
@@ -26,6 +26,12 @@ static const float WALKSPEED = 80;
 Spiky::Spiky(const lisp::Lisp& reader)
        : BadGuy(reader, "images/creatures/spiky/spiky.sprite")
 {
+  reader.get("direction", direction);
+  set_direction = false;
+  if( direction != "auto" && direction != ""){
+    set_direction = true;
+    initial_direction = str2dir( direction );
+  }
 }
 
 void
@@ -33,6 +39,7 @@ Spiky::write(lisp::Writer& writer)
 {
   writer.start_list("spiky");
 
+  writer.write_string("direction", direction);
   writer.write_float("x", start_position.x);
   writer.write_float("y", start_position.y);
 
@@ -42,6 +49,9 @@ Spiky::write(lisp::Writer& writer)
 void
 Spiky::activate()
 {
+  if( set_direction ){
+      dir = initial_direction;
+  }
   physic.set_velocity_x(dir == LEFT ? -WALKSPEED : WALKSPEED);
   sprite->set_action(dir == LEFT ? "left" : "right");
 }
index f4cbe69..75d2f5f 100644 (file)
@@ -35,6 +35,10 @@ public:
 
   virtual Spiky* clone() const { return new Spiky(*this); }
 
+private:
+  bool set_direction;
+  Direction initial_direction;  
+  std::string direction;
 };
 
 #endif
index bd6a0dc..a70d2f7 100644 (file)
@@ -27,6 +27,12 @@ static const float WAKE_TIME = .5;
 SSpiky::SSpiky(const lisp::Lisp& reader)
        : BadGuy(reader, "images/creatures/spiky/sleepingspiky.sprite"), state(SSPIKY_SLEEPING)
 {
+  set_direction = false;
+  reader.get("direction", direction);
+  if( direction != "auto" && direction != ""){
+    set_direction = true;
+    initial_direction = str2dir( direction );
+  }
 }
 
 void
@@ -34,6 +40,7 @@ SSpiky::write(lisp::Writer& writer)
 {
   writer.start_list("sspiky");
 
+  writer.write_string("direction", direction);
   writer.write_float("x", start_position.x);
   writer.write_float("y", start_position.y);
 
@@ -43,9 +50,9 @@ SSpiky::write(lisp::Writer& writer)
 void
 SSpiky::activate()
 {
-  //FIXME: turns sspiky around for debugging
-  dir = dir == LEFT ? RIGHT : LEFT;
-
+  if( set_direction ){
+      dir = initial_direction;
+  }
   state = SSPIKY_SLEEPING;
   physic.set_velocity_x(0);
   sprite->set_action(dir == LEFT ? "sleeping-left" : "sleeping-right");
index bb77419..aa6c795 100644 (file)
@@ -44,6 +44,9 @@ protected:
     SSPIKY_WALKING
   };
   SSpikyState state;
+  std::string direction;
+  bool set_direction;
+  Direction initial_direction;  
 };
 
 #endif
index 5e30d20..479643a 100644 (file)
@@ -29,6 +29,11 @@ Zeekling::Zeekling(const lisp::Lisp& reader)
        : BadGuy(reader, "images/creatures/zeekling/zeekling.sprite")
 {
   set_direction = false;
+  reader.get("direction", direction);
+  if( direction != "auto" && direction != ""){
+    set_direction = true;
+    initial_direction = str2dir( direction );
+  }
   state = FLYING;
 }
 
@@ -45,6 +50,7 @@ Zeekling::write(lisp::Writer& writer)
 {
   writer.start_list("zeekling");
 
+  writer.write_string("direction", direction);
   writer.write_float("x", start_position.x);
   writer.write_float("y", start_position.y);
 
index 11b8199..0b3532e 100644 (file)
@@ -56,7 +56,7 @@ private:
   bool should_we_dive();
   void onBumpHorizontal();
   void onBumpVertical();
-
+  std::string direction;
 };
 
 #endif