Support for initial direction "left"|"right"|"auto" in Dispenser,
[supertux.git] / src / badguy / mrtree.cpp
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");