changed worldmap format a bit to be more consistent with level format
authorMatthias Braun <matze@braunis.de>
Tue, 10 May 2005 11:29:58 +0000 (11:29 +0000)
committerMatthias Braun <matze@braunis.de>
Tue, 10 May 2005 11:29:58 +0000 (11:29 +0000)
SVN-Revision: 2458

99 files changed:
data/credits.txt
data/images/sprites.strf
data/levels/bonus1/worldmap.stwm
data/levels/world1/worldmap.stwm
src/badguy/badguy.cpp
src/badguy/badguy.h
src/badguy/bomb.cpp
src/badguy/bomb.h
src/badguy/dispenser.cpp
src/badguy/dispenser.h
src/badguy/flame.cpp
src/badguy/flame.h
src/badguy/flyingsnowball.cpp
src/badguy/flyingsnowball.h
src/badguy/jumpy.cpp
src/badguy/jumpy.h
src/badguy/mriceblock.cpp
src/badguy/mriceblock.h
src/badguy/mrrocket.cpp
src/badguy/mrrocket.h
src/badguy/nolok_01.cpp
src/badguy/nolok_01.h
src/badguy/rocketexplosion.cpp
src/badguy/rocketexplosion.h
src/badguy/spike.cpp
src/badguy/spike.h
src/badguy/stalactite.cpp
src/badguy/stalactite.h
src/badguy/yeti.cpp
src/badguy/yeti.h
src/badguy/yeti_stalactite.cpp
src/badguy/yeti_stalactite.h
src/control/joystickkeyboardcontroller.cpp
src/game_object.h
src/game_session.cpp
src/game_session.h
src/gui/menu.cpp
src/gui/menu.h
src/gui/mousecursor.h
src/object/ambient_sound.cpp
src/object/ambient_sound.h
src/object/background.cpp
src/object/background.h
src/object/bell.cpp
src/object/bell.h
src/object/block.cpp
src/object/block.h
src/object/bullet.cpp
src/object/bullet.h
src/object/camera.cpp
src/object/camera.h
src/object/coin.cpp
src/object/coin.h
src/object/display_effect.cpp
src/object/display_effect.h
src/object/fireworks.cpp
src/object/fireworks.h
src/object/flower.cpp
src/object/flower.h
src/object/gameobjs.cpp
src/object/gameobjs.h
src/object/growup.cpp
src/object/growup.h
src/object/oneup.cpp
src/object/oneup.h
src/object/particlesystem.cpp
src/object/particlesystem.h
src/object/platform.cpp
src/object/platform.h
src/object/player.cpp
src/object/player.h
src/object/rock.cpp
src/object/rock.h
src/object/scripted_object.cpp
src/object/scripted_object.h
src/object/specialriser.cpp
src/object/specialriser.h
src/object/star.cpp
src/object/star.h
src/object/text_object.cpp
src/object/text_object.h
src/object/tilemap.cpp
src/object/tilemap.h
src/object/unstable_tile.cpp
src/object/unstable_tile.h
src/scripting/Jamfile
src/scripting/script_interpreter.cpp
src/scripting/script_interpreter.h
src/sector.cpp
src/sector.h
src/title.cpp
src/trigger/door.cpp
src/trigger/door.h
src/trigger/hatch.cpp
src/trigger/hatch.h
src/trigger/trigger_base.cpp
src/trigger/trigger_base.h
src/worldmap.cpp
src/worldmap.h

index 52cb95d..b0e7837 100644 (file)
 
        Ryan (sik0fewl) Flegel
 
+
 -Contrib Programming
 
        Duong-Khang (neoneurone) NGUYEN
 
        Richard Smith
 
+       Ondra Hosek
+
 
 -Graphics
 
index 9c1642f..56211ab 100644 (file)
 
   (sprite (name "yeti")
     (action
-      (name "normal")
+      (name "right")
       (images "creatures/yeti/yeti_b.png")
     )
+    (action
+      (name "left")
+      (mirror-action "right")
+    )
   )
 )
index 34d506f..9f60663 100644 (file)
-;; Generated with Flexlay Editor
+; Generated by Flexlay Editor
 (supertux-worldmap
-  (properties 
-    (name  (_ "Bonus Island I"))
+  (properties
+    (name (_ "Bonus Island I"))
+    (music "salcon.mod")
     (start_pos_x 35)
-    (start_pos_y 2))
-  (tilemap 
-    (width  70)
+    (start_pos_y 2)
+  )
+  (tilemap
+    (width 70)
     (height 50)
-    (data
-       9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  11 16 16 16 16 16 16 16 12 9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  
-       9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  15 24 25 26 58 24 26 19 17 9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  
-       9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  15 30 29 28 59 31 27 19 17 9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  
-       9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  11 16 22 19 19 19 47 30 28 19 23 16 12 9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  
-       9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  15 19 19 19 19 60 47 60 19 19 19 19 17 9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  
-       9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  15 19 48 40 43 40 45 40 43 40 39 19 17 9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  
-       9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  15 19 47 19 47 19 47 19 47 19 47 19 17 9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  
-       9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  15 19 47 19 47 19 47 19 47 19 47 19 17 9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  
-       9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  15 19 68 19 68 19 68 19 68 19 68 19 17 9  9  9  9  9  9  9  9  11 16 12 9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  
-       9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  14 18 18 18 18 18 18 18 18 18 18 18 13 9  9  9  9  9  9  9  9  15 58 17 9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  
-       9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  11 16 12 9  9  9  9  9  9  11 12 9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  11 22 59 23 12 9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  
-       9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  14 18 13 9  9  9  9  9  9  15 23 12 9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  11 16 12 9  9  9  9  15 60 47 60 17 9  9  9  9  11 12 9  9  9  9  9  9  9  9  9  9  
-       9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  11 16 12 9  9  15 19 17 9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  15 19 17 9  9  9  9  14 21 47 20 13 9  9  11 16 22 23 12 9  9  9  9  9  9  9  9  9  
-       9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  15 58 17 9  9  14 18 13 9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  15 19 23 12 9  9  11 16 22 47 23 16 12 9  14 21 20 18 13 9  9  9  9  9  9  9  9  9  
-       9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  11 16 16 22 59 23 16 16 16 16 12 9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  14 18 18 13 9  9  15 19 19 47 19 19 17 9  9  14 13 9  9  9  9  9  9  9  9  9  9  9  
-       9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  15 19 19 19 47 19 19 48 40 39 17 9  9  9  11 12 9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  14 21 19 37 40 39 23 16 12 9  9  9  9  9  9  9  9  9  9  9  9  9  
-       9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  14 18 21 19 47 19 19 47 19 47 17 9  9  9  14 13 9  11 16 12 9  9  9  9  9  9  9  9  9  9  9  9  9  15 19 19 19 47 19 20 13 9  9  9  9  9  9  9  9  9  9  9  9  9  
-       9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  14 21 37 40 40 42 19 47 17 9  9  9  9  9  9  15 58 17 9  9  9  9  9  9  9  9  9  11 16 16 16 22 19 19 19 47 19 23 12 9  9  9  9  9  9  9  9  9  9  9  9  9  
-       9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  11 16 22 19 60 19 19 19 47 17 9  9  9  9  11 16 22 59 23 16 12 9  9  9  9  9  9  9  15 48 40 40 40 40 39 19 37 40 39 23 12 9  9  9  9  9  9  9  9  9  9  9  9  
-       9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  11 22 19 19 19 19 19 19 19 47 17 9  9  9  9  15 19 19 47 19 19 23 12 9  9  9  9  9  9  15 47 19 19 19 19 47 19 19 19 47 19 17 9  9  9  9  9  9  9  9  9  9  9  9  
-       9  9  9  9  9  9  9  9  9  9  9  9  11 16 12 9  15 48 40 40 40 40 40 40 40 42 17 9  9  9  9  14 21 19 37 40 40 39 17 9  9  9  9  9  9  15 47 19 19 19 19 37 40 40 40 42 19 17 9  9  9  9  9  9  9  9  9  9  9  9  
-       9  9  9  9  9  9  9  9  9  9  9  9  15 19 17 9  15 47 19 19 19 19 20 21 19 20 13 9  9  9  9  9  14 21 19 19 19 47 17 9  9  9  9  9  9  15 37 40 39 19 19 19 19 19 19 19 19 17 9  9  9  9  9  9  9  9  9  9  9  9  
-       9  9  9  9  9  9  9  9  9  9  9  9  14 18 13 9  15 37 40 39 19 20 13 14 18 13 9  9  9  9  9  9  9  15 19 19 19 47 17 9  9  9  9  9  9  15 19 19 37 40 40 40 40 40 39 19 20 13 9  9  9  9  9  9  9  9  9  9  9  9  
-       9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  14 18 21 47 20 13 9  9  9  9  9  9  9  9  9  9  9  15 19 48 40 42 23 12 9  9  9  9  9  14 21 19 19 19 20 18 18 21 47 20 13 9  9  9  9  9  9  9  9  9  9  9  9  9  
-       9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  15 68 17 9  9  9  9  9  9  9  9  9  9  9  9  14 21 47 19 19 19 17 9  9  9  9  9  9  14 18 18 18 13 9  9  15 47 17 9  9  9  9  9  9  9  9  9  9  9  9  9  9  
-       9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  14 18 13 9  9  9  9  9  9  9  9  9  9  9  9  9  15 47 20 18 18 13 9  9  9  9  9  9  9  9  9  9  9  9  9  15 68 17 9  9  9  9  9  9  9  9  9  9  9  9  9  9  
-       9  9  9  9  9  9  9  9  9  11 16 12 9  9  9  9  9  9  9  9  9  9  9  9  11 16 16 12 9  9  9  9  9  9  15 68 17 9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  14 18 13 9  9  9  9  9  9  9  9  9  9  9  9  9  9  
-       9  9  9  9  9  9  9  9  9  14 21 17 9  9  9  9  9  9  9  9  9  9  9  9  14 21 20 13 9  9  9  9  9  9  14 18 13 9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  11 16 16 12 9  9  9  9  9  9  9  9  
-       9  9  9  9  9  9  9  9  9  9  14 13 9  9  9  9  9  9  9  9  9  9  9  9  9  14 13 9  9  9  9  9  9  9  9  9  9  9  9  9  11 16 16 12 9  9  9  9  9  9  9  9  9  9  9  9  9  9  15 19 19 17 9  9  9  9  9  9  9  9  
-       9  9  9  9  9  9  9  9  9  9  9  9  9  9  11 16 12 9  9  9  9  9  9  9  9  9  9  9  9  9  11 16 12 9  9  9  9  9  9  9  15 19 19 23 12 9  9  9  9  9  9  9  9  9  9  9  9  9  15 19 20 13 9  9  9  9  9  9  9  9  
-       9  9  9  9  9  9  9  9  9  9  11 16 12 9  15 58 17 9  9  9  9  9  9  9  9  9  9  9  9  9  15 19 17 9  9  9  9  9  9  9  15 19 19 19 17 9  9  9  9  9  9  9  9  9  9  9  9  9  14 18 13 9  9  9  9  9  9  9  9  9  
-       9  9  9  9  9  9  9  9  9  11 22 19 23 12 15 59 23 16 16 12 9  9  9  9  9  9  9  9  9  9  14 18 13 9  9  9  9  9  9  9  14 21 19 20 13 9  9  9  9  9  9  9  9  9  9  11 16 12 9  9  9  9  9  9  9  9  9  9  9  9  
-       9  9  9  9  9  9  9  9  9  15 19 19 19 23 22 47 48 40 39 17 9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  15 19 17 9  9  9  9  9  9  9  9  9  9  9  15 58 17 9  9  9  9  9  9  9  9  9  9  9  9  
-       9  9  9  9  9  9  9  9  9  15 19 48 40 40 40 42 47 19 47 17 9  9  9  11 16 12 9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  14 18 13 9  9  9  9  9  9  9  9  9  9  11 22 59 23 16 16 16 16 16 12 9  9  9  9  9  9  
-       9  9  9  9  9  9  9  9  9  14 21 47 19 19 60 19 47 19 47 23 12 9  9  14 18 13 9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  11 16 22 19 37 40 40 40 39 19 19 17 9  9  9  9  9  9  
-       9  9  9  9  9  9  9  9  9  9  15 37 40 40 40 40 42 19 47 19 17 9  9  9  9  9  9  9  9  9  9  11 16 12 9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  15 24 25 25 26 19 19 19 47 19 19 17 9  9  9  9  9  9  
-       9  9  9  9  9  9  9  9  9  9  15 19 19 19 19 24 25 26 47 19 17 9  9  9  9  9  9  9  9  9  9  15 58 17 9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  15 31 32 32 27 48 40 40 42 19 20 13 9  9  9  9  9  9  
-       9  9  9  9  9  9  9  9  9  9  15 19 19 19 19 30 29 28 47 20 13 9  9  9  9  9  9  9  9  9  9  15 59 17 9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  15 30 29 29 28 47 19 19 20 18 13 9  9  9  9  9  9  9  
-       9  9  9  9  9  9  9  9  9  9  14 21 48 40 40 40 40 40 42 17 9  9  9  9  9  9  11 16 16 16 16 22 47 17 9  9  9  9  9  9  9  9  9  11 16 16 12 9  9  9  9  9  14 18 21 19 19 47 19 19 23 12 9  9  9  9  9  9  9  9  
-       9  9  9  9  9  9  9  9  9  11 16 22 47 19 19 19 19 19 19 17 9  9  9  9  9  9  15 69 40 40 40 40 61 64 63 63 63 63 63 63 63 63 63 62 67 19 23 12 9  9  9  9  9  9  14 21 19 47 19 19 19 23 12 9  9  9  9  9  9  9  
-       9  9  9  9  9  9  9  9  9  15 19 19 37 40 40 40 40 40 39 17 9  9  9  9  9  9  14 18 18 18 18 21 47 17 9  9  9  9  9  9  9  9  9  15 19 19 19 17 9  9  9  9  9  9  9  15 19 37 40 40 39 19 17 9  9  9  9  9  9  9  
-       9  9  9  9  9  9  9  9  9  14 21 19 19 19 19 19 19 19 47 23 12 9  9  9  9  9  9  9  9  9  9  15 47 17 9  9  9  9  9  9  9  9  9  14 18 18 18 13 9  9  9  9  9  9  9  15 19 19 19 19 47 19 17 9  9  9  9  9  9  9  
-       9  9  9  9  9  9  9  9  9  9  14 18 18 18 18 18 18 21 47 20 13 9  9  9  9  9  9  9  11 16 16 22 47 23 16 16 12 9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  14 18 18 18 21 47 20 13 9  9  9  9  9  9  9  
-       9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  15 68 17 9  9  9  9  9  9  9  9  15 19 19 19 37 40 39 19 17 9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  15 68 17 9  9  9  9  9  9  9  9  
-       9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  14 18 13 9  9  9  9  9  11 16 12 15 19 19 49 50 51 47 19 17 9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  14 18 13 9  9  9  9  9  9  9  9  
-       9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  11 22 20 13 15 60 19 52 53 54 47 60 17 9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  
-       9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  14 21 17 9  15 19 19 55 56 57 42 19 17 9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  
-       9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  14 13 9  15 19 19 19 19 19 19 19 17 9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  
-       9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  14 18 18 18 18 18 18 18 13 9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  
-       9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  
-           ))
-
-(special-tiles
-        (level (name "bonus-level1.stl")
-           (x 35)
-               (y 4))
-        (level (name "bonus-level2.stl")
-           (x 32)
-               (y 41)) 
-        (level (name "/bonus-level3.stl")
-           (x 30)
-               (y 39))
-        (level (name "/bonus-level4.stl")
-                         (extro-filelevel "extro.txt")
-           (x 32)
-               (y 46))
-        (level (name "bonus-level5.stl")
-           (x 44)
-           (y 39))
-        (level (name "abednego-level1.stl")
-           (x 12)
-           (y 33))
-    (level (name "abednego-level2.stl")
-           (x 15)
-           (y 35))
-    (level (name "abednego-level3.stl")
-           (x 18)
-           (y 36))
-    (level (name "abednego-level4.stl")
-           (x 16)
-           (y 40))
-    (level (name "matr1x-level1.stl")        
-               (x 21)
-           (y 17))
-    (level (name "matr1x-level2.stl")
-           (x 25)
-           (y 18))
-    (level (name "matr1x-level3.stl")
-           (x 20)
-           (y 20))
-    (level (name "thompson-level1.stl")  
-               (x 35)
-           (y 20))
-    (level (name "thompson-level2.stl")
-           (x 37)
-           (y 22))
-    (level (name "torfi-level1.stl")
-               (x 58)
-           (y 34))
-    (level (name "torfi-level2.stl")
-           (x 57)
-           (y 38))
-    (level (name "torfi-level3.stl")
-           (x 59)
-           (y 40))
-    (level (name "wansti-level1.stl")
-               (x 51)
-           (y 14))
-    (level (name "wansti-level2.stl")
-           (x 53)
-               (y 16))
-    (level (name "wansti-level3.stl")
-           (x 52)
-           (y 20))
-        (level (name "wansti-level4.stl")
-           (x 47)
-           (y 18))
-    (level (name "wansti-level5.stl")
-           (x 50)
-           (y 22))
-    (special-tile (map-message (_ "You found a secret place!"))
-           (x 33) 
-           (y 39) (passive-message #t)
-           (apply-to-direction "west-north-south"))
-                         
-                       (special-tile (map-message 
-                                       (_ "Hint: Use igloos to get back here."))
-           (x 35)
-           (y 5) (passive-message #t)
-           (apply-to-direction "north"))
-
-                       (special-tile 
-               (x 33)
-                         (y 8)
-                         (map-message (_ "Warp to Matr1x' Sector"))
-                         (teleport-to-x 20)
-                         (teleport-to-y 14))
-                       (special-tile 
-               (x 31)
-                         (y 8)
-                         (map-message (_ "Warp to Thompson's Domain"))
-                         (teleport-to-x 34)
-                         (teleport-to-y 18))
-                       (special-tile 
-               (x 35)
-                         (y 8)
-                         (map-message (_ "Warp to the SuperTux Team Island"))
-                         (teleport-to-x 51)
-                         (teleport-to-y 10))
-                       (special-tile 
-               (x 37)
-                         (y 8)
-                         (map-message (_ "Warp to Abednego's Area"))
-                         (teleport-to-x 15)
-                         (teleport-to-y 31))
-                  (special-tile 
-               (x 39)
-                         (y 8)
-                         (map-message (_ "Warp to Torfi's Territory"))
-                         (teleport-to-x 56)
-                         (teleport-to-y 33))
-          (special-tile 
-               (x 19)
-                         (y 24)
-                         (map-message (_ "Leave Matrix' Sector"))
-                         (teleport-to-x 32)
-                         (teleport-to-y 37))
-          (special-tile 
-               (x 35)
-                         (y 26)
-                         (map-message (_ "Leave Thompson's Domain"))
-                         (teleport-to-x 35)
-                         (teleport-to-y 2))
-          (special-tile 
-               (x 54)
-                         (y 25)
-                         (map-message (_ "Leave SuperTux Team Island"))
-                         (teleport-to-x 35)
-                         (teleport-to-y 2))
-          (special-tile 
-               (x 18)
-                         (y 43)
-                         (map-message (_ "Leave Abednego's Area"))
-                         (teleport-to-x 35)
-                         (teleport-to-y 2))
-          (special-tile 
-               (x 60)
-                         (y 43)
-                         (map-message (_ "Leave Torfi's Territory"))
-                         (teleport-to-x 35)
-                         (teleport-to-y 2))
-          
-                       ;;Back from Castle
-                       (special-tile 
-               (x 27)
-                         (y 39)
-                         (map-message (_ "Warp home"))
-                         (teleport-to-x 35)
-                         (teleport-to-y 2))
-                         
-                       ;;Back from Abednego
-                       (special-tile 
-               (x 15)
-                         (y 31)
-                         (invisible-tile #t)
-                         (teleport-to-x 35)
-                         (teleport-to-y 2))
-                       
-                       ;; Back from Thompson
-                       (special-tile 
-               (x 34)
-                         (y 18)
-                         (invisible-tile #t)
-                         (teleport-to-x 35)
-                         (teleport-to-y 2))
-                       
-                       ;; Back from Matr1x
-                       (special-tile 
-               (x 20)
-                         (y 14)
-                         (invisible-tile #t)
-                         (teleport-to-x 35)
-                         (teleport-to-y 2))
-                         
-                       ;; Back from Wansti
-                       (special-tile 
-               (x 51)
-                         (y 10)
-                         (invisible-tile #t)
-                         (teleport-to-x 35)
-                         (teleport-to-y 2))
-                         
-                       ;; Back from Torfi
-                       (special-tile 
-               (x 56)
-                         (y 33)
-                         (invisible-tile #t)
-                         (teleport-to-x 35)
-                         (teleport-to-y 2))
-
-               )
+    (layer "interactive")
+    (solid #t)
+    (speed 1.000000)
+    (tiles 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 11 16 16 16 16 16 16 16 12 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 15 24 25 26 58 24 26 19 17 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 15 30 29 28 59 31 27 19 17 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 11 16 22 19 19 19 47 30 28 19 23 16 12 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 15 19 19 19 19 60 47 60 19 19 19 19 17 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 15 19 48 40 43 40 45 40 43 40 39 19 17 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 15 19 47 19 47 19 47 19 47 19 47 19 17 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 15 19 47 19 47 19 47 19 47 19 47 19 17 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 15 19 68 19 68 19 68 19 68 19 68 19 17 9 9 9 9 9 9 9 9 11 16 12 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 14 18 18 18 18 18 18 18 18 18 18 18 13 9 9 9 9 9 9 9 9 15 58 17 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 11 16 12 9 9 9 9 9 9 11 12 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 11 22 59 23 12 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 14 18 13 9 9 9 9 9 9 15 23 12 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 11 16 12 9 9 9 9 15 60 47 60 17 9 9 9 9 11 12 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 11 16 12 9 9 15 19 17 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 15 19 17 9 9 9 9 14 21 47 20 13 9 9 11 16 22 23 12 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 15 58 17 9 9 14 18 13 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 15 19 23 12 9 9 11 16 22 47 23 16 12 9 14 21 20 18 13 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 11 16 16 22 59 23 16 16 16 16 12 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 14 18 18 13 9 9 15 19 19 47 19 19 17 9 9 14 13 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 15 19 19 19 47 19 19 48 40 39 17 9 9 9 11 12 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 14 21 19 37 40 39 23 16 12 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 14 18 21 19 47 19 19 47 19 47 17 9 9 9 14 13 9 11 16 12 9 9 9 9 9 9 9 9 9 9 9 9 9 15 19 19 19 47 19 20 13 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 14 21 37 40 40 42 19 47 17 9 9 9 9 9 9 15 58 17 9 9 9 9 9 9 9 9 9 11 16 16 16 22 19 19 19 47 19 23 12 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 11 16 22 19 60 19 19 19 47 17 9 9 9 9 11 16 22 59 23 16 12 9 9 9 9 9 9 9 15 48 40 40 40 40 39 19 37 40 39 23 12 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 11 22 19 19 19 19 19 19 19 47 17 9 9 9 9 15 19 19 47 19 19 23 12 9 9 9 9 9 9 15 47 19 19 19 19 47 19 19 19 47 19 17 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 11 16 12 9 15 48 40 40 40 40 40 40 40 42 17 9 9 9 9 14 21 19 37 40 40 39 17 9 9 9 9 9 9 15 47 19 19 19 19 37 40 40 40 42 19 17 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 15 19 17 9 15 47 19 19 19 19 20 21 19 20 13 9 9 9 9 9 14 21 19 19 19 47 17 9 9 9 9 9 9 15 37 40 39 19 19 19 19 19 19 19 19 17 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 14 18 13 9 15 37 40 39 19 20 13 14 18 13 9 9 9 9 9 9 9 15 19 19 19 47 17 9 9 9 9 9 9 15 19 19 37 40 40 40 40 40 39 19 20 13 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 14 18 21 47 20 13 9 9 9 9 9 9 9 9 9 9 9 15 19 48 40 42 23 12 9 9 9 9 9 14 21 19 19 19 20 18 18 21 47 20 13 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 15 68 17 9 9 9 9 9 9 9 9 9 9 9 9 14 21 47 19 19 19 17 9 9 9 9 9 9 14 18 18 18 13 9 9 15 47 17 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 14 18 13 9 9 9 9 9 9 9 9 9 9 9 9 9 15 47 20 18 18 13 9 9 9 9 9 9 9 9 9 9 9 9 9 15 68 17 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 11 16 12 9 9 9 9 9 9 9 9 9 9 9 9 11 16 16 12 9 9 9 9 9 9 15 68 17 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 14 18 13 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 14 21 17 9 9 9 9 9 9 9 9 9 9 9 9 14 21 20 13 9 9 9 9 9 9 14 18 13 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 11 16 16 12 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 14 13 9 9 9 9 9 9 9 9 9 9 9 9 9 14 13 9 9 9 9 9 9 9 9 9 9 9 9 9 11 16 16 12 9 9 9 9 9 9 9 9 9 9 9 9 9 9 15 19 19 17 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 11 16 12 9 9 9 9 9 9 9 9 9 9 9 9 9 11 16 12 9 9 9 9 9 9 9 15 19 19 23 12 9 9 9 9 9 9 9 9 9 9 9 9 9 15 19 20 13 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 11 16 12 9 15 58 17 9 9 9 9 9 9 9 9 9 9 9 9 9 15 19 17 9 9 9 9 9 9 9 15 19 19 19 17 9 9 9 9 9 9 9 9 9 9 9 9 9 14 18 13 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 11 22 19 23 12 15 59 23 16 16 12 9 9 9 9 9 9 9 9 9 9 14 18 13 9 9 9 9 9 9 9 14 21 19 20 13 9 9 9 9 9 9 9 9 9 9 11 16 12 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 15 19 19 19 23 22 47 48 40 39 17 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 15 19 17 9 9 9 9 9 9 9 9 9 9 9 15 58 17 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 15 19 48 40 40 40 42 47 19 47 17 9 9 9 11 16 12 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 14 18 13 9 9 9 9 9 9 9 9 9 9 11 22 59 23 16 16 16 16 16 12 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 14 21 47 19 19 60 19 47 19 47 23 12 9 9 14 18 13 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 11 16 22 19 37 40 40 40 39 19 19 17 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 15 37 40 40 40 40 42 19 47 19 17 9 9 9 9 9 9 9 9 9 9 11 16 12 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 15 24 25 25 26 19 19 19 47 19 19 17 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 15 19 19 19 19 24 25 26 47 19 17 9 9 9 9 9 9 9 9 9 9 15 58 17 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 15 31 32 32 27 48 40 40 42 19 20 13 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 15 19 19 19 19 30 29 28 47 20 13 9 9 9 9 9 9 9 9 9 9 15 59 17 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 15 30 29 29 28 47 19 19 20 18 13 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 14 21 48 40 40 40 40 40 42 17 9 9 9 9 9 9 11 16 16 16 16 22 47 17 9 9 9 9 9 9 9 9 9 11 16 16 12 9 9 9 9 9 14 18 21 19 19 47 19 19 23 12 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 11 16 22 47 19 19 19 19 19 19 17 9 9 9 9 9 9 15 69 40 40 40 40 61 64 63 63 63 63 63 63 63 63 63 62 67 19 23 12 9 9 9 9 9 9 14 21 19 47 19 19 19 23 12 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 15 19 19 37 40 40 40 40 40 39 17 9 9 9 9 9 9 14 18 18 18 18 21 47 17 9 9 9 9 9 9 9 9 9 15 19 19 19 17 9 9 9 9 9 9 9 15 19 37 40 40 39 19 17 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 14 21 19 19 19 19 19 19 19 47 23 12 9 9 9 9 9 9 9 9 9 9 15 47 17 9 9 9 9 9 9 9 9 9 14 18 18 18 13 9 9 9 9 9 9 9 15 19 19 19 19 47 19 17 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 14 18 18 18 18 18 18 21 47 20 13 9 9 9 9 9 9 9 11 16 16 22 47 23 16 16 12 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 14 18 18 18 21 47 20 13 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 15 68 17 9 9 9 9 9 9 9 9 15 19 19 19 37 40 39 19 17 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 15 68 17 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 14 18 13 9 9 9 9 9 11 16 12 15 19 19 49 50 51 47 19 17 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 14 18 13 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 11 22 20 13 15 60 19 52 53 54 47 60 17 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 14 21 17 9 15 19 19 55 56 57 42 19 17 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 14 13 9 15 19 19 19 19 19 19 19 17 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 14 18 18 18 18 18 18 18 13 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9)
+  )
+  (level
+    (x 35)
+    (y 4)
+    (name "bonus-level1.stl")
+  )
+  (level
+    (x 32)
+    (y 41)
+    (name "bonus-level2.stl")
+  )
+  (level
+    (x 30)
+    (y 39)
+    (name "/bonus-level3.stl")
+  )
+  (level
+    (x 32)
+    (y 46)
+    (name "/bonus-level4.stl")
+  )
+  (level
+    (x 44)
+    (y 39)
+    (name "bonus-level5.stl")
+  )
+  (level
+    (x 12)
+    (y 33)
+    (name "abednego-level1.stl")
+  )
+  (level
+    (x 15)
+    (y 35)
+    (name "abednego-level2.stl")
+  )
+  (level
+    (x 18)
+    (y 36)
+    (name "abednego-level3.stl")
+  )
+  (level
+    (x 16)
+    (y 40)
+    (name "abednego-level4.stl")
+  )
+  (level
+    (x 21)
+    (y 17)
+    (name "matr1x-level1.stl")
+  )
+  (level
+    (x 25)
+    (y 18)
+    (name "matr1x-level2.stl")
+  )
+  (level
+    (x 20)
+    (y 20)
+    (name "matr1x-level3.stl")
+  )
+  (level
+    (x 35)
+    (y 20)
+    (name "thompson-level1.stl")
+  )
+  (level
+    (x 37)
+    (y 22)
+    (name "thompson-level2.stl")
+  )
+  (level
+    (x 58)
+    (y 34)
+    (name "torfi-level1.stl")
+  )
+  (level
+    (x 57)
+    (y 38)
+    (name "torfi-level2.stl")
+  )
+  (level
+    (x 59)
+    (y 40)
+    (name "torfi-level3.stl")
+  )
+  (level
+    (x 51)
+    (y 14)
+    (name "wansti-level1.stl")
+  )
+  (level
+    (x 53)
+    (y 16)
+    (name "wansti-level2.stl")
+  )
+  (level
+    (x 52)
+    (y 20)
+    (name "wansti-level3.stl")
+  )
+  (level
+    (x 47)
+    (y 18)
+    (name "wansti-level4.stl")
+  )
+  (level
+    (x 50)
+    (y 22)
+    (name "wansti-level5.stl")
+  )
+  (special-tile
+    (x 33)
+    (y 39)
+    (map-message (_ "You found a secret place!"))
+    (passive-message #t)
+    (apply-to-direction "west-north-south")
+  )
+  (special-tile
+    (x 35)
+    (y 5)
+    (map-message (_ "Hint: Use igloos to get back here."))
+    (passive-message #t)
+    (apply-to-direction "north")
+  )
+  (special-tile
+    (x 33)
+    (y 8)
+    (map-message (_ "Warp to Matr1x' Sector"))
+    (teleport-to-x 20)
+    (teleport-to-y 14)
+  )
+  (special-tile
+    (x 31)
+    (y 8)
+    (map-message (_ "Warp to Thompson's Domain"))
+    (teleport-to-x 34)
+    (teleport-to-y 18)
+  )
+  (special-tile
+    (x 35)
+    (y 8)
+    (map-message (_ "Warp to the SuperTux Team Island"))
+    (teleport-to-x 51)
+    (teleport-to-y 10)
+  )
+  (special-tile
+    (x 37)
+    (y 8)
+    (map-message (_ "Warp to Abednego's Area"))
+    (teleport-to-x 15)
+    (teleport-to-y 31)
+  )
+  (special-tile
+    (x 39)
+    (y 8)
+    (map-message (_ "Warp to Torfi's Territory"))
+    (teleport-to-x 56)
+    (teleport-to-y 33)
+  )
+  (special-tile
+    (x 19)
+    (y 24)
+    (map-message (_ "Leave Matrix' Sector"))
+    (teleport-to-x 32)
+    (teleport-to-y 37)
+  )
+  (special-tile
+    (x 35)
+    (y 26)
+    (map-message (_ "Leave Thompson's Domain"))
+    (teleport-to-x 35)
+    (teleport-to-y 2)
+  )
+  (special-tile
+    (x 54)
+    (y 25)
+    (map-message (_ "Leave SuperTux Team Island"))
+    (teleport-to-x 35)
+    (teleport-to-y 2)
+  )
+  (special-tile
+    (x 18)
+    (y 43)
+    (map-message (_ "Leave Abednego's Area"))
+    (teleport-to-x 35)
+    (teleport-to-y 2)
+  )
+  (special-tile
+    (x 60)
+    (y 43)
+    (map-message (_ "Leave Torfi's Territory"))
+    (teleport-to-x 35)
+    (teleport-to-y 2)
+  )
+  (special-tile
+    (x 27)
+    (y 39)
+    (map-message (_ "Warp home"))
+    (teleport-to-x 35)
+    (teleport-to-y 2)
+  )
+  (special-tile
+    (x 15)
+    (y 31)
+    (teleport-to-x 35)
+    (teleport-to-y 2)
+  )
+  (special-tile
+    (x 34)
+    (y 18)
+    (teleport-to-x 35)
+    (teleport-to-y 2)
+  )
+  (special-tile
+    (x 20)
+    (y 14)
+    (teleport-to-x 35)
+    (teleport-to-y 2)
+  )
+  (special-tile
+    (x 51)
+    (y 10)
+    (teleport-to-x 35)
+    (teleport-to-y 2)
+  )
+  (special-tile
+    (x 56)
+    (y 33)
+    (teleport-to-x 35)
+    (teleport-to-y 2)
+  )
 )
-
index 27ec3ff..67c2a95 100644 (file)
@@ -2,9 +2,6 @@
 (supertux-worldmap
   (properties 
     (name (_ "Icyisland"))
-    (name-pt_PT  "Ilha Gelada")
-    (name-de "Eisige Insel")
-    (name-es "Isla de hielo")
     (intro-filename "intro.txt")
     (music "salcon.mod")
     (start_pos_x 4)
@@ -12,7 +9,7 @@
   (tilemap 
     (width  40)
     (height 30)
-    (data
+    (tiles
        9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  
        9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  11 12 9  9  9  9  9  9  9  9  9  9  9  9  
        9  9  9  9  9  9  9  11 16 12 11 16 16 16 16 12 9  9  9  9  11 16 16 12 9  9  14 13 9  9  9  9  9  9  9  9  9  9  9  9  
@@ -45,8 +42,6 @@
        9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  9  
            ))
 
-
-  (special-tiles
     (level
       (x 4)
       (y 6)
       (extro-filename "extro.txt")
       (name "level26.stl")
       (quit-worldmap #t))
-; In the future, do this to go to another world:
-; (next-worldmap "forest.stwt)
-
-  )
-
-
 )
 
index dd8544e..a312986 100644 (file)
@@ -54,7 +54,7 @@ BadGuy::draw(DrawingContext& context)
 }
 
 void
-BadGuy::action(float elapsed_time)
+BadGuy::update(float elapsed_time)
 {
   if(!Sector::current()->inside(bbox)) {
     remove_me();
@@ -66,11 +66,11 @@ BadGuy::action(float elapsed_time)
   
   switch(state) {
     case STATE_ACTIVE:
-      active_action(elapsed_time);
+      active_update(elapsed_time);
       break;
     case STATE_INIT:
     case STATE_INACTIVE:
-      inactive_action(elapsed_time);
+      inactive_update(elapsed_time);
       try_activate();
       break;
     case STATE_SQUISHED:
@@ -97,13 +97,13 @@ BadGuy::deactivate()
 }
 
 void
-BadGuy::active_action(float elapsed_time)
+BadGuy::active_update(float elapsed_time)
 {
   movement = physic.get_movement(elapsed_time);
 }
 
 void
-BadGuy::inactive_action(float )
+BadGuy::inactive_update(float )
 {
 }
 
index 621466e..257065c 100644 (file)
@@ -49,9 +49,9 @@ public:
    */
   virtual void draw(DrawingContext& context);
   /** Called each frame. The default implementation checks badguy state and
-   * calls active_action and inactive_action
+   * calls active_update and inactive_update
    */
-  virtual void action(float elapsed_time);
+  virtual void update(float elapsed_time);
   /** Called when a collision with another object occured. The default
    * implemetnation calls collision_player, collision_solid, collision_badguy
    * and collision_squished
@@ -98,9 +98,9 @@ protected:
   virtual bool collision_squished(Player& player);
 
   /** called each frame when the badguy is activated. */
-  virtual void active_action(float elapsed_time);
+  virtual void active_update(float elapsed_time);
   /** called each frame when the badguy is not activated. */
-  virtual void inactive_action(float elapsed_time);
+  virtual void inactive_update(float elapsed_time);
 
   /**
    * called when the badguy has been activated. (As a side effect the dir
index 614bb18..2eadc6c 100644 (file)
@@ -70,7 +70,7 @@ Bomb::collision_badguy(BadGuy& badguy, const CollisionHit& )
 }
 
 void
-Bomb::active_action(float )
+Bomb::active_update(float )
 {
   switch(state) {
     case 0:
@@ -99,6 +99,7 @@ Bomb::explode()
 void
 Bomb::kill_fall()
 {
-  explode();
+  if (state != 1)  // we don't want it exploding again
+    explode();
 }
 
index edb69f9..4bd3222 100644 (file)
@@ -32,7 +32,7 @@ public:
   HitResponse collision_solid(GameObject& other, const CollisionHit& hit);
   HitResponse collision_player(Player& player, const CollisionHit& hit);
   HitResponse collision_badguy(BadGuy& badguy, const CollisionHit& hit);
-  void active_action(float elapsed_time);
+  void active_update(float elapsed_time);
   void kill_fall();
   void explode();
 
index b72daae..0858bc0 100644 (file)
@@ -74,7 +74,7 @@ Dispenser::collision_squished(Player& player)
 }
 
 void
-Dispenser::active_action(float )
+Dispenser::active_update(float )
 {
   if (dispense_timer.check()) {
     launch_badguy();
index 31a57d9..2355444 100644 (file)
@@ -31,7 +31,7 @@ public:
 
   void activate();
   void write(lisp::Writer& writer);
-  void active_action(float elapsed_time);
+  void active_update(float elapsed_time);
 
 protected:
   bool collision_squished(Player& player);
index 4b91960..7e98cb4 100644 (file)
@@ -49,7 +49,7 @@ Flame::write(lisp::Writer& writer)
 }
 
 void
-Flame::active_action(float elapsed_time)
+Flame::active_update(float elapsed_time)
 {
   angle = fmodf(angle + elapsed_time * speed, 2*M_PI);
   Vector newpos(start_position.x + cos(angle) * radius,
index 8306b20..225cef0 100644 (file)
@@ -29,7 +29,7 @@ public:
   Flame(const lisp::Lisp& reader);
 
   void write(lisp::Writer& write);
-  void active_action(float elapsed_time);
+  void active_update(float elapsed_time);
   void kill_fall();
 
 private:
index 9a958d6..b95e487 100644 (file)
@@ -83,7 +83,7 @@ FlyingSnowBall::collision_solid(GameObject& , const CollisionHit& hit)
 }
 
 void
-FlyingSnowBall::active_action(float elapsed_time) 
+FlyingSnowBall::active_update(float elapsed_time) 
 {
   if(timer.check()) {
     if(mode == FLY_UP) {
index 2573c20..7e1510b 100644 (file)
@@ -31,7 +31,7 @@ public:
 
   void activate();
   void write(lisp::Writer& writer);
-  void active_action(float elapsed_time);
+  void active_update(float elapsed_time);
   HitResponse collision_solid(GameObject& other, const CollisionHit& hit);
 protected:
   enum FlyingSnowballMode {
index 7486ffd..a90f0a0 100644 (file)
@@ -79,12 +79,18 @@ Jumpy::hit(const CollisionHit& chit)
 }
 
 void
-Jumpy::active_action(float elapsed_time)
+Jumpy::active_update(float elapsed_time)
 {
-  BadGuy::active_action(elapsed_time);
+  BadGuy::active_update(elapsed_time);
   
   dir = Sector::current()->player->get_pos().x > get_pos().x
     ? RIGHT : LEFT;
+    
+  if (!groundhit_pos_set)
+  {
+    sprite->set_action(dir == LEFT ? "left-middle" : "right-middle");
+    return;
+  }
   
   if ( get_pos().y < (pos_groundhit.y - JUMPY_MID_TOLERANCE ) )
     sprite->set_action(dir == LEFT ? "left-up" : "right-up");
index 47fc4ee..d4d6d4c 100644 (file)
@@ -31,7 +31,7 @@ public:
   HitResponse collision_badguy(BadGuy& other, const CollisionHit& hit);
 
   void write(lisp::Writer& writer);
-  void active_action(float);
+  void active_update(float);
 
 private:
   HitResponse hit(const CollisionHit& hit);
index b255576..d37a2b5 100644 (file)
@@ -68,14 +68,14 @@ MrIceBlock::activate()
 }
 
 void
-MrIceBlock::active_action(float elapsed_time)
+MrIceBlock::active_update(float elapsed_time)
 {
   if(ice_state == ICESTATE_FLAT && flat_timer.check()) {
     ice_state = ICESTATE_NORMAL;
     physic.set_velocity_x(dir == LEFT ? -WALKSPEED : WALKSPEED);
     sprite->set_action(dir == LEFT ? "left" : "right");
   }
-  BadGuy::active_action(elapsed_time);
+  BadGuy::active_update(elapsed_time);
 }
 
 HitResponse
index 9eb8c17..906b0f4 100644 (file)
@@ -34,7 +34,7 @@ public:
   HitResponse collision_solid(GameObject& object, const CollisionHit& hit);
   HitResponse collision_badguy(BadGuy& badguy, const CollisionHit& hit);
 
-  void active_action(float elapsed_time);
+  void active_update(float elapsed_time);
 
 protected:
   bool collision_squished(Player& player);
index 020083e..0a77d7f 100644 (file)
@@ -64,7 +64,7 @@ MrRocket::activate()
 }
 
 void
-MrRocket::active_action(float elapsed_time)
+MrRocket::active_update(float elapsed_time)
 {
   if (collision_timer.check()) {
     Sector::current()->add_object(new RocketExplosion(get_pos(), dir));
index 181cff3..e0385a2 100644 (file)
@@ -32,7 +32,7 @@ public:
   MrRocket(float pos_x, float pos_y, Direction d);
 
   void activate();
-  void active_action(float elapsed_time);
+  void active_update(float elapsed_time);
   void write(lisp::Writer& writer);
   HitResponse collision_solid(GameObject& other, const CollisionHit& hit);
 
index 045a507..f54cabb 100644 (file)
@@ -72,7 +72,7 @@ Nolok_01::activate()
 }
 
 void
-Nolok_01::active_action(float elapsed_time)
+Nolok_01::active_update(float elapsed_time)
 {
    if (action_timer.check()) {
      switch (action) {       
index 320da70..a7cdc43 100644 (file)
@@ -32,7 +32,7 @@ public:
 
   void activate();
   void write(lisp::Writer& writer);
-  void active_action(float elapsed_time);
+  void active_update(float elapsed_time);
   void kill_fall();
   HitResponse collision_solid(GameObject& other, const CollisionHit& hit);
   
index efbb84f..ded99d3 100644 (file)
@@ -64,7 +64,7 @@ RocketExplosion::collision_badguy(BadGuy& badguy, const CollisionHit& )
 }
 
 void
-RocketExplosion::active_action(float )
+RocketExplosion::active_update(float )
 {
    if(timer.check()) {
       remove_me();
index c692660..60a3f13 100644 (file)
@@ -32,7 +32,7 @@ public:
   HitResponse collision_solid(GameObject& other, const CollisionHit& hit);
   HitResponse collision_player(Player& player, const CollisionHit& hit);
   HitResponse collision_badguy(BadGuy& badguy, const CollisionHit& hit);
-  void active_action(float elapsed_time);
+  void active_update(float elapsed_time);
   void kill_fall();
   void explode();
 
index e012d25..b2ca237 100644 (file)
@@ -79,7 +79,7 @@ Spike::kill_fall()
 }
 
 void
-Spike::active_action(float )
+Spike::active_update(float )
 {
 }
 
index 93e6abf..2cada07 100644 (file)
@@ -32,7 +32,7 @@ public:
   Spike(const Vector& pos, Direction dir);
   Spike(const lisp::Lisp& reader);
 
-  void active_action(float elapsed_time);
+  void active_update(float elapsed_time);
   void write(lisp::Writer& writer);
   void kill_fall();
 private:
index 784d262..d8e3f4e 100644 (file)
@@ -45,7 +45,7 @@ Stalactite::write(lisp::Writer& writer)
 }
 
 void
-Stalactite::active_action(float elapsed_time)
+Stalactite::active_update(float elapsed_time)
 {
   if(state == STALACTITE_HANGING) {
     Player* player = Sector::current()->player;
index 8b9fbf4..f193f54 100644 (file)
@@ -28,7 +28,7 @@ class Stalactite : public BadGuy
 public:
   Stalactite(const lisp::Lisp& reader);
  
-  void active_action(float elapsed_time);
+  void active_update(float elapsed_time);
   void write(lisp::Writer& writer);
   HitResponse collision_solid(GameObject& other, const CollisionHit& hit);
   HitResponse collision_player(Player& player, const CollisionHit& hit);
index 8e9f72c..b0d022c 100644 (file)
@@ -17,7 +17,6 @@
 //  along with this program; if not, write to the Free Software
 //  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
 //  02111-1307, USA.
-
 #include <config.h>
 
 #include <float.h>
@@ -43,6 +42,7 @@ Yeti::Yeti(const lisp::Lisp& reader)
   reader.get("y", start_position.y);
   bbox.set_size(80, 120);
   sprite = sprite_manager->create("yeti");
+  sprite->set_action("right");
   state = INIT;
   side = LEFT;
   sound_manager->preload_sound("yeti_gna");
@@ -66,7 +66,7 @@ Yeti::draw(DrawingContext& context)
 }
 
 void
-Yeti::active_action(float elapsed_time)
+Yeti::active_update(float elapsed_time)
 {
   switch(state) {
     case INIT:
@@ -207,10 +207,12 @@ Yeti::collision_solid(GameObject& , const CollisionHit& hit)
     } else if(state == GO_LEFT && !timer.started()) {
       side = LEFT;
       summon_snowball();
+      sprite->set_action("right");
       angry_jumping();
     } else if(state == GO_RIGHT && !timer.started()) {
       side = RIGHT;
       summon_snowball();
+      sprite->set_action("left");
       angry_jumping();
     } else if(state == ANGRY_JUMPING) {
       if(!timer.started()) {
index f62b516..1f14a6b 100644 (file)
@@ -30,7 +30,7 @@ public:
 
   void draw(DrawingContext& context);
   void write(lisp::Writer& writer);
-  void active_action(float elapsed_time);
+  void active_update(float elapsed_time);
   HitResponse collision_solid(GameObject& object, const CollisionHit& hit);
   bool collision_squished(Player& player);
   void kill_fall();
index d3f2b90..0d1545b 100644 (file)
@@ -45,12 +45,12 @@ YetiStalactite::is_hanging()
 }
 
 void
-YetiStalactite::active_action(float elapsed_time)
+YetiStalactite::active_update(float elapsed_time)
 {
   if(state == STALACTITE_HANGING)
     return;
 
-  Stalactite::active_action(elapsed_time);
+  Stalactite::active_update(elapsed_time);
 }
 
 IMPLEMENT_FACTORY(YetiStalactite, "yeti_stalactite")
index a7f672f..baca48f 100644 (file)
@@ -29,7 +29,7 @@ public:
   YetiStalactite(const lisp::Lisp& lisp);
   virtual ~YetiStalactite();
 
-  void active_action(float elapsed_time);
+  void active_update(float elapsed_time);
   void start_shaking();
   bool is_hanging();
 };
index 4f93091..09220c9 100644 (file)
@@ -17,7 +17,6 @@
 //  along with this program; if not, write to the Free Software
 //  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
 //  02111-1307, USA.
-
 #include <config.h>
 
 #include <sstream>
@@ -53,7 +52,8 @@ public:
 };
   
 JoystickKeyboardController::JoystickKeyboardController()
-  : wait_for_key(-1), wait_for_joybutton(-1)
+  : wait_for_key(-1), wait_for_joybutton(-1), key_options_menu(0),
+    joystick_options_menu(0)
 {
   memset(last_keys, 0, sizeof(last_keys));
 
index b5b9860..1131847 100644 (file)
@@ -46,7 +46,7 @@ public:
    * seconds and should be the base for all timed calculations (don't use
    * SDL_GetTicks directly as this will fail in pause mode)
    */
-  virtual void action(float elapsed_time) = 0;
+  virtual void update(float elapsed_time) = 0;
 
   /** The GameObject should draw itself onto the provided DrawingContext if this
    * function is called.
index edf057f..86b38e3 100644 (file)
@@ -405,7 +405,7 @@ GameSession::check_end_conditions()
 }
 
 void
-GameSession::action(float elapsed_time)
+GameSession::update(float elapsed_time)
 {
   // handle controller
   if(main_controller->pressed(Controller::PAUSE_MENU))
@@ -414,7 +414,7 @@ GameSession::action(float elapsed_time)
   // advance timers
   if(!currentsector->player->growing_timer.started()) {
     // Update Tux and the World
-    currentsector->action(elapsed_time);
+    currentsector->update(elapsed_time);
   }
 
   // respawning in new sector?
@@ -485,7 +485,7 @@ GameSession::process_menu()
 {
   Menu* menu = Menu::current();
   if(menu) {
-    menu->action();
+    menu->update();
 
     if(menu == game_menu) {
       switch (game_menu->check()) {
@@ -581,9 +581,9 @@ GameSession::run()
       // Update the world
       check_end_conditions();
       if (end_sequence == ENDSEQUENCE_RUNNING)
-        action(elapsed_time/2);
+        update(elapsed_time/2);
       else if(end_sequence == NO_ENDSEQUENCE)
-        action(elapsed_time);
+        update(elapsed_time);
     }
     else
     {
index 3357fd1..5fc2f68 100644 (file)
@@ -71,7 +71,7 @@ public:
   void record_demo(const std::string& filename);
   void play_demo(const std::string& filename);
   void draw();
-  void action(float frame_ratio);
+  void update(float frame_ratio);
 
   void set_current()
   { current_ = this; }
index d70b16a..87d083d 100644 (file)
@@ -90,7 +90,7 @@ bool confirm_dialog(Surface *background, std::string text)
         context.draw_surface(background, Vector(0,0), LAYER_BACKGROUND0);
 
       dialog->draw(context);
-      dialog->action();
+      dialog->update();
 
       switch (dialog->check())
         {
@@ -315,7 +315,7 @@ Menu::clear()
 
 /* Process actions done on the menu */
 void
-Menu::action()
+Menu::update()
 {
   /** check main input controller... */
   Uint32 ticks = SDL_GetTicks();
@@ -420,7 +420,7 @@ Menu::action()
         case MN_TEXTFIELD:
         case MN_NUMFIELD:
           menuaction = MENU_ACTION_DOWN;
-          action();
+          update();
           break;
           
         case MN_BACK:
index dba01bc..f3e621e 100644 (file)
@@ -117,7 +117,7 @@ private:
   };
   
   /** Number of the item that got 'hit' (ie. pressed) in the last
-      event()/action() call, -1 if none */
+      event()/update() call, -1 if none */
   int hit_item;
   
   // position of the menu (ie. center of the menu, not top/left)
@@ -156,7 +156,7 @@ public:
 
   virtual void menu_action(MenuItem* item);
   
-  void action();
+  void update();
   
   /** Remove all entries from the menu */
   void clear();
index 4bebe53..95a63a6 100644 (file)
@@ -26,7 +26,7 @@
 #define MC_STATES_NB 3
  
 enum {
-  MC_NORMAL,
+  MC_NORMAL = 0,
   MC_CLICK,
   MC_LINK,
   MC_HIDE
index 0307813..ea7a9aa 100644 (file)
@@ -84,7 +84,7 @@ AmbientSound::start_playing()
 }
 
 void
-AmbientSound::action(float deltat) 
+AmbientSound::update(float deltat) 
 {
   if (latency--<=0) {
 
index 433e60e..00e43cf 100644 (file)
@@ -49,7 +49,7 @@ public:
   ~AmbientSound();
 protected:
   virtual void hit(Player& player);
-  virtual void action(float time);
+  virtual void update(float time);
   virtual void draw(DrawingContext&);
   virtual void start_playing();
   virtual void stop_playing();
index 4995e97..a353763 100644 (file)
@@ -80,7 +80,7 @@ Background::write(lisp::Writer& writer)
 }
 
 void
-Background::action(float)
+Background::update(float)
 {
 }
 
index 233d858..30e86f1 100644 (file)
@@ -52,7 +52,7 @@ public:
   Color get_gradient_bottom() const
         { return gradient_bottom; }
 
-  virtual void action(float elapsed_time);
+  virtual void update(float elapsed_time);
 
   virtual void draw(DrawingContext& context);
 
index 26733f7..e95a539 100644 (file)
@@ -52,7 +52,7 @@ Bell::write(lisp::Writer& writer)
 }
 
 void
-Bell::action(float )
+Bell::update(float )
 {
 }
 
index 6241c6c..0521e6a 100644 (file)
@@ -36,7 +36,7 @@ public:
   ~Bell();
 
   void write(lisp::Writer& writer);
-  void action(float elapsed_time);
+  void update(float elapsed_time);
   void draw(DrawingContext& context);
   HitResponse collision(GameObject& other, const CollisionHit& hit);
 
index 08f04fc..ae01648 100644 (file)
@@ -81,7 +81,7 @@ Block::collision(GameObject& other, const CollisionHit& hitdata)
 }
 
 void
-Block::action(float elapsed_time)
+Block::update(float elapsed_time)
 {
   if(!bouncing)
     return;
index 43321f1..1650dbd 100644 (file)
@@ -33,7 +33,7 @@ public:
   ~Block();
 
   virtual HitResponse collision(GameObject& other, const CollisionHit& hit);
-  virtual void action(float elapsed_time);
+  virtual void update(float elapsed_time);
   virtual void draw(DrawingContext& context);
 
 protected:
index 1b8279f..3d1b228 100644 (file)
@@ -55,7 +55,7 @@ Bullet::~Bullet()
 }
 
 void
-Bullet::action(float elapsed_time)
+Bullet::update(float elapsed_time)
 {
   if(kind == FIRE_BULLET) {
     // @not completely framerate independant :-/
index 6c49f84..ea176d3 100644 (file)
@@ -35,7 +35,7 @@ public:
   Bullet(const Vector& pos, float xm, int dir, int kind);
   ~Bullet();
   
-  void action(float elapsed_time);
+  void update(float elapsed_time);
   void draw(DrawingContext& context);
   HitResponse collision(GameObject& other, const CollisionHit& hit);
 
index 476ca41..cb31c4a 100644 (file)
@@ -148,7 +148,7 @@ static const float EPSILON = .00001;
 static const float max_speed_y = 140;
 
 void
-Camera::action(float elapsed_time)
+Camera::update(float elapsed_time)
 {
   if(mode == NORMAL)
     scroll_normal(elapsed_time);
index ac76298..0ae033a 100644 (file)
@@ -51,7 +51,7 @@ public:
   /** @deprecated@ */
   const Vector& get_translation() const;
 
-  virtual void action(float elapsed_time);
+  virtual void update(float elapsed_time);
 
   virtual void draw(DrawingContext& )
   {
index c48292b..498b565 100644 (file)
@@ -52,7 +52,7 @@ Coin::~Coin()
 }
 
 void
-Coin::action(float )
+Coin::update(float )
 {
 }
 
index 3befd26..cdb86fc 100644 (file)
@@ -33,7 +33,7 @@ public:
   ~Coin();
 
   HitResponse collision(GameObject& other, const CollisionHit& hit);
-  void action(float elapsed_time);
+  void update(float elapsed_time);
   void draw(DrawingContext& context);
 
   void collect();
index 0d85a80..3268e9a 100644 (file)
@@ -15,7 +15,7 @@ DisplayEffect::~DisplayEffect()
 }
 
 void
-DisplayEffect::action(float elapsed_time)
+DisplayEffect::update(float elapsed_time)
 {
     switch(type) {
         case NO_FADE:
index 0d0da27..b1753bf 100644 (file)
@@ -10,7 +10,7 @@ public:
     DisplayEffect();
     virtual ~DisplayEffect();
 
-    void action(float elapsed_time);
+    void update(float elapsed_time);
     void draw(DrawingContext& context);
 
     void fade_out(float fadetime);
index 69244bf..f8ae8cf 100644 (file)
@@ -38,7 +38,7 @@ Fireworks::~Fireworks()
 }
 
 void
-Fireworks::action(float )
+Fireworks::update(float )
 {
     if(timer.check()) {
         Sector* sector = Sector::current();
index 575dae3..7afd200 100644 (file)
@@ -31,7 +31,7 @@ public:
   Fireworks();
   ~Fireworks();
     
-  virtual void action(float elapsed_time);
+  virtual void update(float elapsed_time);
   virtual void draw(DrawingContext& context);
 
 private:
index d07f71f..9216d4e 100644 (file)
@@ -45,7 +45,7 @@ Flower::~Flower()
 }
 
 void
-Flower::action(float )
+Flower::update(float )
 {
 }
 
index 7e2956f..bfa950b 100644 (file)
@@ -33,7 +33,7 @@ public:
   Flower(const Vector& pos, Type type);
   ~Flower();
 
-  virtual void action(float elapsed_time);
+  virtual void update(float elapsed_time);
   virtual void draw(DrawingContext& context);
   virtual HitResponse collision(GameObject& other, const CollisionHit& hit);
 
index e863be3..8992fa4 100644 (file)
@@ -50,7 +50,7 @@ BouncyCoin::~BouncyCoin()
 }
 
 void
-BouncyCoin::action(float elapsed_time)
+BouncyCoin::update(float elapsed_time)
 {
   position.y += -200 * elapsed_time;
 
@@ -79,7 +79,7 @@ BrokenBrick::~BrokenBrick()
 }
 
 void
-BrokenBrick::action(float elapsed_time)
+BrokenBrick::update(float elapsed_time)
 {
   position += movement * elapsed_time;
 
@@ -118,7 +118,7 @@ FloatingText::FloatingText(const Vector& pos, int score)
 }
 
 void
-FloatingText::action(float elapsed_time)
+FloatingText::update(float elapsed_time)
 {
   position.y -= 1.4 * elapsed_time;
 
@@ -155,7 +155,7 @@ SmokeCloud::SmokeCloud(const Vector& pos)
 }
 
 void
-SmokeCloud::action(float elapsed_time)
+SmokeCloud::update(float elapsed_time)
 {
   position.y -= 120 * elapsed_time;
 
@@ -209,7 +209,7 @@ Particles::~Particles()
 }
 
 void
-Particles::action(float elapsed_time)
+Particles::update(float elapsed_time)
 {
   Vector camera = Sector::current()->camera->get_translation();
 
index 69b0f26..886c524 100644 (file)
@@ -39,7 +39,7 @@ class BouncyCoin : public GameObject
 public:
   BouncyCoin(const Vector& pos);
   ~BouncyCoin();
-  virtual void action(float elapsed_time);
+  virtual void update(float elapsed_time);
   virtual void draw(DrawingContext& context);
 
 private:
@@ -54,7 +54,7 @@ public:
   BrokenBrick(Sprite* sprite, const Vector& pos, const Vector& movement);
   ~BrokenBrick();
 
-  virtual void action(float elapsed_time);
+  virtual void update(float elapsed_time);
   virtual void draw(DrawingContext& context);
 
 private:
@@ -70,7 +70,7 @@ public:
   FloatingText(const Vector& pos, const std::string& text_);
   FloatingText(const Vector& pos, int s);  // use this for score, for instance
   
-  virtual void action(float elapsed_time);
+  virtual void update(float elapsed_time);
   virtual void draw(DrawingContext& context);
 
 private:
@@ -86,7 +86,7 @@ class SmokeCloud : public GameObject
 public:
   SmokeCloud(const Vector& pos);
   
-  virtual void action(float elapsed_time);
+  virtual void update(float elapsed_time);
   virtual void draw(DrawingContext& context);
 
 private:
@@ -102,7 +102,7 @@ public:
             int number, Color color, int size, float life_time, int drawing_layer);
   ~Particles();
   
-  virtual void action(float elapsed_time);
+  virtual void update(float elapsed_time);
   virtual void draw(DrawingContext& context);
 
 private:
index 32420f1..0499c85 100644 (file)
@@ -43,7 +43,7 @@ GrowUp::~GrowUp()
 }
 
 void
-GrowUp::action(float elapsed_time)
+GrowUp::update(float elapsed_time)
 {
   movement = physic.get_movement(elapsed_time);
 }
index b2407d8..7976531 100644 (file)
@@ -30,7 +30,7 @@ public:
   GrowUp(const Vector& pos);
   ~GrowUp();
 
-  virtual void action(float elapsed_time);
+  virtual void update(float elapsed_time);
   virtual void draw(DrawingContext& context);
   virtual HitResponse collision(GameObject& other, const CollisionHit& hit);
   
index bebe024..0d867f1 100644 (file)
@@ -42,7 +42,7 @@ OneUp::~OneUp()
 }
 
 void
-OneUp::action(float elapsed_time)
+OneUp::update(float elapsed_time)
 {
   if(!Sector::current()->inside(bbox))
     remove_me();
index 4c5794e..846caa7 100644 (file)
@@ -30,7 +30,7 @@ public:
   OneUp(const Vector& pos);
   ~OneUp();
 
-  virtual void action(float elapsed_time);
+  virtual void update(float elapsed_time);
   virtual void draw(DrawingContext& context);
   virtual HitResponse collision(GameObject& other, const CollisionHit& hit);
 
index 8782d13..14a7a8f 100644 (file)
@@ -116,7 +116,7 @@ SnowParticleSystem::~SnowParticleSystem()
     delete snowimages[i];
 }
 
-void SnowParticleSystem::action(float elapsed_time)
+void SnowParticleSystem::update(float elapsed_time)
 {
     std::vector<Particle*>::iterator i;
     for(i = particles.begin(); i != particles.end(); ++i) {
@@ -173,7 +173,7 @@ RainParticleSystem::~RainParticleSystem()
     delete rainimages[i];
 }
 
-void RainParticleSystem::action(float elapsed_time)
+void RainParticleSystem::update(float elapsed_time)
 {
     std::vector<Particle*>::iterator i;
     for(i = particles.begin(); i != particles.end(); ++i) {
@@ -224,7 +224,7 @@ CloudParticleSystem::~CloudParticleSystem()
   delete cloudimage;
 }
 
-void CloudParticleSystem::action(float elapsed_time)
+void CloudParticleSystem::update(float elapsed_time)
 {
     std::vector<Particle*>::iterator i;
     for(i = particles.begin(); i != particles.end(); ++i) {
index 23d9e29..f90399f 100644 (file)
@@ -80,7 +80,7 @@ public:
     void parse(const lisp::Lisp& lisp);
     void write(lisp::Writer& writer);
 
-    virtual void action(float elapsed_time);
+    virtual void update(float elapsed_time);
 
     std::string type() const
     { return "SnowParticleSystem"; }
@@ -104,7 +104,7 @@ public:
     void parse(const lisp::Lisp& lisp);
     void write(lisp::Writer& writer);
 
-    virtual void action(float elapsed_time);
+    virtual void update(float elapsed_time);
 
     std::string type() const
     { return "RainParticleSystem"; }
@@ -128,7 +128,7 @@ public:
     void parse(const lisp::Lisp& lisp);
     void write(lisp::Writer& writer);
 
-    virtual void action(float elapsed_time);
+    virtual void update(float elapsed_time);
 
     std::string type() const
     { return "SnowParticleSystem"; }    
index 77d428f..0a83e15 100644 (file)
@@ -60,7 +60,7 @@ Platform::collision(GameObject& , const CollisionHit& )
 }
 
 void
-Platform::action(float )
+Platform::update(float )
 {
   // just some test code...
   if(state == 0) {
index 71200f9..d256fd1 100644 (file)
@@ -33,7 +33,7 @@ public:
   ~Platform();
 
   virtual HitResponse collision(GameObject& other, const CollisionHit& hit);
-  virtual void action(float elapsed_time);
+  virtual void update(float elapsed_time);
   virtual void draw(DrawingContext& context);
 
 private:
index f2bc78a..1a2d6c1 100644 (file)
@@ -153,7 +153,7 @@ Player::set_controller(Controller* controller)
 }
 
 void
-Player::action(float elapsed_time)
+Player::update(float elapsed_time)
 {
   if(dying && dying_timer.check()) {
     dead = true;
index 8a4c6c5..731b443 100644 (file)
@@ -133,7 +133,7 @@ public:
 
   void set_controller(Controller* controller);  
 
-  virtual void action(float elapsed_time);
+  virtual void update(float elapsed_time);
   virtual void draw(DrawingContext& context);
   virtual HitResponse collision(GameObject& other, const CollisionHit& hit);
 
index 121fc4c..7c010a2 100644 (file)
@@ -62,7 +62,7 @@ Rock::draw(DrawingContext& context)
 }
 
 void
-Rock::action(float elapsed_time)
+Rock::update(float elapsed_time)
 {
   if(!grabbed) {
     flags |= FLAG_SOLID;
index f0ab98a..5f8e4a2 100644 (file)
@@ -36,7 +36,7 @@ public:
   virtual ~Rock();
 
   HitResponse collision(GameObject& other, const CollisionHit& hit);
-  void action(float elapsed_time);
+  void update(float elapsed_time);
   void draw(DrawingContext& context);
   void write(lisp::Writer& writer);
     
index db72957..cc37774 100644 (file)
@@ -116,7 +116,7 @@ ScriptedObject::get_name()
 }
 
 void
-ScriptedObject::action(float elapsed_time)
+ScriptedObject::update(float elapsed_time)
 {
   if(!physic_enabled)
     return;
index 7d3031f..70b4dc2 100644 (file)
@@ -14,7 +14,7 @@ public:
   ScriptedObject(const lisp::Lisp& lisp);
   virtual ~ScriptedObject();
 
-  void action(float elapsed_time);
+  void update(float elapsed_time);
   void draw(DrawingContext& context);
   HitResponse collision(GameObject& other, const CollisionHit& hit);
 
index 0058d6d..ce14ad5 100644 (file)
@@ -37,7 +37,7 @@ SpecialRiser::~SpecialRiser()
 }
 
 void
-SpecialRiser::action(float elapsed_time)
+SpecialRiser::update(float elapsed_time)
 {
   offset += 50 * elapsed_time;
   if(offset > 32) {
index 5193256..fe5a9d4 100644 (file)
@@ -32,7 +32,7 @@ public:
   SpecialRiser(MovingObject* child);
   ~SpecialRiser();
 
-  virtual void action(float elapsed_time);
+  virtual void update(float elapsed_time);
   virtual void draw(DrawingContext& context);
 
 private:
index e909031..0b7ea7e 100644 (file)
@@ -45,7 +45,7 @@ Star::~Star()
 }
 
 void
-Star::action(float elapsed_time)
+Star::update(float elapsed_time)
 {
   movement = physic.get_movement(elapsed_time);
 }
index 2ad8da6..0e5fe75 100644 (file)
@@ -30,7 +30,7 @@ public:
   Star(const Vector& pos);
   ~Star();
 
-  virtual void action(float elapsed_time);
+  virtual void update(float elapsed_time);
   virtual void draw(DrawingContext& context);
   virtual HitResponse collision(GameObject& other, const CollisionHit& hit);
 
index a623a34..0cf7f8a 100644 (file)
@@ -86,7 +86,7 @@ TextObject::draw(DrawingContext& context)
 }
 
 void
-TextObject::action(float elapsed_time)
+TextObject::update(float elapsed_time)
 {
   if(fading > 0) {
     fading -= elapsed_time;
index c78945a..0bc3e7e 100644 (file)
@@ -21,7 +21,7 @@ public:
   bool is_visible();
 
   void draw(DrawingContext& context);
-  void action(float elapsed_time);
+  void update(float elapsed_time);
 
 private:
   Font* font;
index e845a2d..a8ca571 100644 (file)
@@ -131,7 +131,7 @@ TileMap::write(lisp::Writer& writer)
 }
 
 void
-TileMap::action(float )
+TileMap::update(float )
 {
 }
 
index b56ce0b..2aaf3ce 100644 (file)
@@ -47,7 +47,7 @@ public:
 
   virtual void write(lisp::Writer& writer);
 
-  virtual void action(float elapsed_time);
+  virtual void update(float elapsed_time);
   virtual void draw(DrawingContext& context);
 
   void set(int width, int height, const std::vector<unsigned int>& vec,
index 9f22448..38f9386 100644 (file)
@@ -73,7 +73,7 @@ UnstableTile::draw(DrawingContext& context)
 }
 
 void
-UnstableTile::action(float elapsed_time)
+UnstableTile::update(float elapsed_time)
 {
   if(falling) {
     movement = physic.get_movement(elapsed_time);
index f6ffb96..939eda5 100644 (file)
@@ -36,7 +36,7 @@ public:
   ~UnstableTile();
 
   HitResponse collision(GameObject& other, const CollisionHit& hit);
-  void action(float elapsed_time);
+  void update(float elapsed_time);
   void draw(DrawingContext& context);
 
 private:
index bf12c15..64d4e09 100644 (file)
@@ -39,7 +39,6 @@ if ! $(MINISWIG)
 {
     wrapper_sources += [ SearchSource wrapper.cpp ] ;
 }
- echo $(wrapper_sources) ;
 wrapper_objects = [ CompileObjects $(wrapper_sources) ] ;
 if $(MINISWIG)
 {
index cf3937e..095c6af 100644 (file)
@@ -170,7 +170,7 @@ ScriptInterpreter::set_wakeup_time(float seconds)
 }
 
 void
-ScriptInterpreter::action(float )
+ScriptInterpreter::update(float )
 {
   if(!wakeup_timer.check())
     return;
index 73f596b..df00032 100644 (file)
@@ -17,7 +17,7 @@ public:
   ~ScriptInterpreter();
 
   void draw(DrawingContext& );
-  void action(float );
+  void update(float );
 
   void load_script(std::istream& in, const std::string& sourcename = "");
   void start_script();
index 80f76c8..cc1689b 100644 (file)
@@ -453,7 +453,7 @@ Sector::get_active_region()
 }
 
 void
-Sector::action(float elapsed_time)
+Sector::update(float elapsed_time)
 {
   player->check_bounds(camera);
 
@@ -463,7 +463,7 @@ Sector::action(float elapsed_time)
     if(!object->is_valid())
       continue;
 
-    object->action(elapsed_time);
+    object->update(elapsed_time);
   }
 #else
   /* update objects */
@@ -473,7 +473,7 @@ Sector::action(float elapsed_time)
     if(!object->is_valid())
       continue;
     
-    object->action(elapsed_time);
+    object->update(elapsed_time);
   }
 #endif
   
index ad735f4..7c33741 100644 (file)
@@ -73,7 +73,7 @@ public:
   void activate(const std::string& spawnpoint);
   void activate(const Vector& player_pos);
 
-  void action(float elapsed_time);
+  void update(float elapsed_time);
   void update_game_objects();
 
   void draw(DrawingContext& context);
@@ -148,7 +148,7 @@ public: // TODO make this private again
 private:
   void fix_old_tiles();
   
-  /// container for newly created objects, they'll be added in Sector::action
+  /// container for newly created objects, they'll be added in Sector::update
   GameObjects gameobjects_new;
  
   MusicType currentmusic;
index f74dde6..255b38d 100644 (file)
@@ -265,7 +265,7 @@ void draw_demo(float elapsed_time)
     sector->camera->reset(tux->get_pos());
   }
 
-  sector->action(elapsed_time);
+  sector->update(elapsed_time);
   sector->draw(*titlesession->context);
 }
 
@@ -350,7 +350,7 @@ void title()
       if(menu)
         {
           menu->draw(context);
-          menu->action();
+          menu->update();
          
           if(menu == main_menu)
             {
index 760d3d0..28550c2 100644 (file)
@@ -72,7 +72,7 @@ Door::write(lisp::Writer& writer)
 }
 
 void
-Door::action(float )
+Door::update(float )
 {
   //Check if door animation is complete
   if(sprite->check_animation()) {
index 0dfea85..830d3fc 100644 (file)
@@ -36,7 +36,7 @@ public:
 
   virtual void write(lisp::Writer& writer);
   
-  virtual void action(float elapsed_time);
+  virtual void update(float elapsed_time);
   virtual void draw(DrawingContext& context);
   virtual void event(Player& player, EventType type);
 
index 8e264df..2f29108 100644 (file)
@@ -72,7 +72,7 @@ Hatch::write(lisp::Writer& writer)
 }
 
 void
-Hatch::action(float )
+Hatch::update(float )
 {
   //Check if hatch animation is complete
   if(sprite->check_animation()) {
index 90aab39..d0cc73e 100644 (file)
@@ -36,7 +36,7 @@ public:
 
   virtual void write(lisp::Writer& writer);
   
-  virtual void action(float elapsed_time);
+  virtual void update(float elapsed_time);
   virtual void draw(DrawingContext& context);
   virtual void event(Player& player, EventType type);
 
index 608b784..95814a1 100644 (file)
@@ -32,7 +32,7 @@ TriggerBase::~TriggerBase()
 }
 
 void
-TriggerBase::action(float )
+TriggerBase::update(float )
 {
   lasthit = hit;
   hit = false;
index 9038a55..fc159c6 100644 (file)
@@ -38,7 +38,7 @@ public:
   TriggerBase();
   ~TriggerBase();
 
-  void action(float elapsed_time);
+  void update(float elapsed_time);
   void draw(DrawingContext& context);
   HitResponse collision(GameObject& other, const CollisionHit& hit);
   
index 50a9f64..d90afe7 100644 (file)
@@ -195,7 +195,7 @@ Tux::set_direction(Direction dir)
 }
 
 void
-Tux::action(float delta)
+Tux::update(float delta)
 {
   // check controller
   if(main_controller->pressed(Controller::UP))
@@ -401,7 +401,7 @@ WorldMap::load_map()
         const lisp::Lisp* tilemap_lisp = iter.lisp();
         tilemap_lisp->get("width",  width);
         tilemap_lisp->get("height", height);
-        tilemap_lisp->get_vector("data", tilemap);
+        tilemap_lisp->get_vector("tiles", tilemap);
       } else if(iter.item() == "properties") {
         const lisp::Lisp* props = iter.lisp();
         props->get("name", name);
@@ -409,8 +409,10 @@ WorldMap::load_map()
         props->get("intro-filename", intro_filename);
         props->get("start_pos_x", start_x);
         props->get("start_pos_y", start_y);
-      } else if(iter.item() == "special-tiles") {
-        parse_special_tiles(iter.lisp());
+      } else if(iter.item() == "level") {
+        parse_level_tile(iter.lisp());
+      } else if(iter.item() == "special-tile") {
+        parse_special_tile(iter.lisp());
       } else {
         std::cerr << "Unknown token '" << iter.item() << "' in worldmap.\n";
       }
@@ -427,81 +429,75 @@ WorldMap::load_map()
 }
 
 void
-WorldMap::parse_special_tiles(const lisp::Lisp* lisp)
+WorldMap::parse_special_tile(const lisp::Lisp* lisp)
 {
-  lisp::ListIterator iter(lisp);
-  while(iter.next()) {
-    if(iter.item() == "special-tile") {
-      SpecialTile special_tile;
-
-      const lisp::Lisp* lisp = iter.lisp();
-      lisp->get("x", special_tile.pos.x);
-      lisp->get("y", special_tile.pos.y);
-      lisp->get("map-message", special_tile.map_message);
-      special_tile.passive_message = false;
-      lisp->get("passive-message", special_tile.passive_message);
-      special_tile.teleport_dest = Vector(-1,-1);
-      lisp->get("teleport-to-x", special_tile.teleport_dest.x);
-      lisp->get("teleport-to-y", special_tile.teleport_dest.y);
-      special_tile.invisible = false;
-      lisp->get("invisible-tile", special_tile.invisible);
-
+  SpecialTile special_tile;
+  
+  lisp->get("x", special_tile.pos.x);
+  lisp->get("y", special_tile.pos.y);
+  lisp->get("map-message", special_tile.map_message);
+  special_tile.passive_message = false;
+  lisp->get("passive-message", special_tile.passive_message);
+  special_tile.teleport_dest = Vector(-1,-1);
+  lisp->get("teleport-to-x", special_tile.teleport_dest.x);
+  lisp->get("teleport-to-y", special_tile.teleport_dest.y);
+  special_tile.invisible = false;
+  lisp->get("invisible-tile", special_tile.invisible);
+
+  special_tile.apply_action_north = true;
+  special_tile.apply_action_south = true;
+  special_tile.apply_action_east = true;
+  special_tile.apply_action_west = true;
+
+  std::string apply_direction;
+  lisp->get("apply-to-direction", apply_direction);
+  if(!apply_direction.empty()) {
+    special_tile.apply_action_north = false;
+    special_tile.apply_action_south = false;
+    special_tile.apply_action_east = false;
+    special_tile.apply_action_west = false;
+    if(apply_direction.find("north") != std::string::npos)
       special_tile.apply_action_north = true;
+    if(apply_direction.find("south") != std::string::npos)
       special_tile.apply_action_south = true;
+    if(apply_direction.find("east") != std::string::npos)
       special_tile.apply_action_east = true;
+    if(apply_direction.find("west") != std::string::npos)
       special_tile.apply_action_west = true;
-
-      std::string apply_direction;
-      lisp->get("apply-to-direction", apply_direction);
-      if(!apply_direction.empty()) {
-        special_tile.apply_action_north = false;
-        special_tile.apply_action_south = false;
-        special_tile.apply_action_east = false;
-        special_tile.apply_action_west = false;
-        if(apply_direction.find("north") != std::string::npos)
-          special_tile.apply_action_north = true;
-        if(apply_direction.find("south") != std::string::npos)
-          special_tile.apply_action_south = true;
-        if(apply_direction.find("east") != std::string::npos)
-          special_tile.apply_action_east = true;
-        if(apply_direction.find("west") != std::string::npos)
-          special_tile.apply_action_west = true;
-      }
-      
-      special_tiles.push_back(special_tile);
-    } else if(iter.item() == "level") {
-      Level level;
-
-      lisp::Lisp* level_lisp = iter.lisp();
-      level.solved = false;
-                      
-      level.north = true;
-      level.east  = true;
-      level.south = true;
-      level.west  = true;
-
-      level_lisp->get("extro-filename", level.extro_filename);
-      level_lisp->get("next-worldmap", level.next_worldmap);
-
-      level.quit_worldmap = false;
-      level_lisp->get("quit-worldmap", level.quit_worldmap);
-
-      level_lisp->get("name", level.name);
-      level_lisp->get("x", level.pos.x);
-      level_lisp->get("y", level.pos.y);
-
-      level.auto_path = true;
-      level_lisp->get("auto-path", level.auto_path);
-
-      level.vertical_flip = false;
-      level_lisp->get("vertical-flip", level.vertical_flip);
-
-      levels.push_back(level);
-    } else {
-      std::cerr << "Unknown token '" << iter.item() <<
-        "' in worldmap special-tiles list.";
-    }
   }
+  
+  special_tiles.push_back(special_tile);
+}
+
+void
+WorldMap::parse_level_tile(const lisp::Lisp* level_lisp)
+{
+  Level level;
+
+  level.solved = false;
+                  
+  level.north = true;
+  level.east  = true;
+  level.south = true;
+  level.west  = true;
+
+  level_lisp->get("extro-filename", level.extro_filename);
+  level_lisp->get("next-worldmap", level.next_worldmap);
+
+  level.quit_worldmap = false;
+  level_lisp->get("quit-worldmap", level.quit_worldmap);
+
+  level_lisp->get("name", level.name);
+  level_lisp->get("x", level.pos.x);
+  level_lisp->get("y", level.pos.y);
+
+  level.auto_path = true;
+  level_lisp->get("auto-path", level.auto_path);
+
+  level.vertical_flip = false;
+  level_lisp->get("vertical-flip", level.vertical_flip);
+
+  levels.push_back(level);
 }
 
 void
@@ -629,7 +625,7 @@ WorldMap::update(float delta)
 {
   Menu* menu = Menu::current();
   if(menu) {
-    menu->action();
+    menu->update();
 
     if(menu == worldmap_menu) {
       switch (worldmap_menu->check())
@@ -806,7 +802,7 @@ WorldMap::update(float delta)
     }
   else
     {
-      tux->action(delta);
+      tux->update(delta);
 //      tux->set_direction(input_direction);
     }
 }
index 8c19d74..dd5d03a 100644 (file)
@@ -82,7 +82,7 @@ public:
   ~Tux();
   
   void draw(DrawingContext& context);
-  void action(float elapsed_time);
+  void update(float elapsed_time);
 
   void set_direction(Direction dir);
 
@@ -257,7 +257,8 @@ public:
 
 private:
   void on_escape_press();
-  void parse_special_tiles(const lisp::Lisp* lisp);
+  void parse_special_tile(const lisp::Lisp* lisp);
+  void parse_level_tile(const lisp::Lisp* lisp);
 };
 
 } // namespace WorldMapNS