windstille-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Windstille-devel] rev 403 - trunk/src


From: Ingo Ruhnke
Subject: [Windstille-devel] rev 403 - trunk/src
Date: Tue, 08 Jun 2004 11:05:51 +0200

Author: grumbel
Date: 2004-06-08 11:05:50 +0200 (Tue, 08 Jun 2004)
New Revision: 403

Modified:
   trunk/src/flexlay_wrap.i
   trunk/src/gameobj.rb
   trunk/src/gui.rb
   trunk/src/object_move_command.cxx
   trunk/src/object_move_command.hxx
   trunk/src/objmap_object.cxx
   trunk/src/objmap_object.hxx
   trunk/src/objmap_object_impl.hxx
   trunk/src/objmap_select_tool.cxx
   trunk/src/sector.rb
   trunk/src/supertux.rb
Log:
- added some basic support for constrained movement

Modified: trunk/src/flexlay_wrap.i
===================================================================
--- trunk/src/flexlay_wrap.i    2004-06-07 20:59:10 UTC (rev 402)
+++ trunk/src/flexlay_wrap.i    2004-06-08 09:05:50 UTC (rev 403)
@@ -132,5 +132,4 @@
 %include "ruby_sexpr_parser.hxx"
 #endif
 
-
 /* EOF */

Modified: trunk/src/gameobj.rb
===================================================================
--- trunk/src/gameobj.rb        2004-06-07 20:59:10 UTC (rev 402)
+++ trunk/src/gameobj.rb        2004-06-08 09:05:50 UTC (rev 403)
@@ -17,11 +17,22 @@
 
 class SpawnPoint<GameObj
   attr_accessor :name
+  attr_reader   :data
 
-  def initialize()
+  def initialize(data)
+    @data = data
     @name = "start"
+    connect_v1_ObjMapObject(data.sig_move(), method(:on_move))
+    on_move(data)
   end
 
+  def on_move(data)
+    pos = @data.get_pos()
+    pos.x = (((pos.x+16)/32).to_i)*32
+    pos.y = (((pos.y+16)/32).to_i)*32
+    @data.set_pos(pos)
+  end
+
   def save(f, obj)
     pos = obj.get_pos()
     f.write("       (spawnpoint (name \"%s\") (x %d) (y %d))\n" % 
address@hidden, pos.x, pos.y])
@@ -38,12 +49,24 @@
 
 class Door<GameObj
   attr_accessor :sector, :spawnpoint
+  attr_reader   :data
 
-  def initialize(data = [])
-    @sector     = get_value_from_tree(["sector", "_"], data, "main")
-    @spawnpoint = get_value_from_tree(["spawnpoint", "_"], data, "start")
+  def initialize(data, sexpr = [])
+    @data = data
+    @sector     = get_value_from_tree(["sector", "_"], sexpr, "main")
+    @spawnpoint = get_value_from_tree(["spawnpoint", "_"], sexpr, "start")
+
+    connect_v1_ObjMapObject(data.sig_move(), method(:on_move))
+    on_move(data)
   end
 
+  def on_move(data)
+    pos = @data.get_pos()
+    pos.x = (((pos.x+16)/32).to_i)*32
+    pos.y = (((pos.y+16)/32).to_i)*32
+    @data.set_pos(pos)
+  end
+
   def save(f, obj)
     pos = obj.get_pos()
     f.write("       (door\n")

Modified: trunk/src/gui.rb
===================================================================
--- trunk/src/gui.rb    2004-06-07 20:59:10 UTC (rev 402)
+++ trunk/src/gui.rb    2004-06-08 09:05:50 UTC (rev 403)
@@ -29,7 +29,7 @@
     # Get the metadata info and extract the generator call from it, see 
$game_objects
     print "on_object_drop:\n"
     metadata = get_ruby_object(cppobj.get_metadata())
-    cppobj.set_metadata(make_metadata(metadata[2].call()))
+    cppobj.set_metadata(make_metadata(metadata[2].call(cppobj)))
   end
 
   def show_objects()

Modified: trunk/src/object_move_command.cxx
===================================================================
--- trunk/src/object_move_command.cxx   2004-06-07 20:59:10 UTC (rev 402)
+++ trunk/src/object_move_command.cxx   2004-06-08 09:05:50 UTC (rev 403)
@@ -58,12 +58,6 @@
 void
 ObjectMoveCommandImpl::execute()
 {
-  for(ObjectMoveCommandImpl::Objects::iterator i = objects.begin(); 
-      i != objects.end();
-      ++i)
-    {
-      i->new_pos = i->obj.get_pos();
-    }
 }
 
 void
@@ -76,6 +70,19 @@
 }
 
 void
+ObjectMoveCommand::move_by(const CL_Point& delta)
+{
+  for(ObjectMoveCommandImpl::Objects::iterator i = impl->objects.begin(); 
+      i != impl->objects.end();
+      ++i)
+    {
+      i->new_pos = i->old_pos + delta;
+      i->obj.set_pos(i->new_pos);
+      i->obj.sig_move()(i->obj);
+    }
+}
+
+void
 ObjectMoveCommandImpl::redo()
 {
   for(ObjectMoveCommandImpl::Objects::iterator i = objects.begin(); 

Modified: trunk/src/object_move_command.hxx
===================================================================
--- trunk/src/object_move_command.hxx   2004-06-07 20:59:10 UTC (rev 402)
+++ trunk/src/object_move_command.hxx   2004-06-08 09:05:50 UTC (rev 403)
@@ -35,6 +35,7 @@
   virtual ~ObjectMoveCommand();
 
   void add_obj(const ObjMapObject& obj);
+  void move_by(const CL_Point& delta);
 
   Command to_command();
 private:

Modified: trunk/src/objmap_object.cxx
===================================================================
--- trunk/src/objmap_object.cxx 2004-06-07 20:59:10 UTC (rev 402)
+++ trunk/src/objmap_object.cxx 2004-06-08 09:05:50 UTC (rev 403)
@@ -49,7 +49,9 @@
 ObjMapObject::set_pos(const CL_Point& p) 
 {
   if (impl.get())
-    impl->pos = p; 
+    {
+      impl->pos = p; 
+    }
 }
 
 MetaData
@@ -102,4 +104,10 @@
   return impl.get() < obj.impl.get();
 }
 
+CL_Signal_v1<ObjMapObject>&
+ObjMapObject::sig_move()
+{
+  return impl->on_move;
+}
+
 /* EOF */

Modified: trunk/src/objmap_object.hxx
===================================================================
--- trunk/src/objmap_object.hxx 2004-06-07 20:59:10 UTC (rev 402)
+++ trunk/src/objmap_object.hxx 2004-06-08 09:05:50 UTC (rev 403)
@@ -20,6 +20,7 @@
 #ifndef HEADER_OBJMAP_OBJECT_HXX
 #define HEADER_OBJMAP_OBJECT_HXX
 
+#include <ClanLib/signals.h>
 #include <ClanLib/Core/Math/point.h>
 #include <ClanLib/Core/Math/rect.h>
 #include "meta_data.hxx"
@@ -41,6 +42,8 @@
   MetaData get_metadata() const;
   void     set_metadata(MetaData data_);
 
+  CL_Signal_v1<ObjMapObject>& sig_move();
+
   void draw();
   CL_Rect get_bound_rect() const;
 

Modified: trunk/src/objmap_object_impl.hxx
===================================================================
--- trunk/src/objmap_object_impl.hxx    2004-06-07 20:59:10 UTC (rev 402)
+++ trunk/src/objmap_object_impl.hxx    2004-06-08 09:05:50 UTC (rev 403)
@@ -22,6 +22,7 @@
 
 #include <ClanLib/Core/Math/point.h>
 #include <ClanLib/Core/Math/rect.h>
+#include "objmap_object.hxx"
 #include "meta_data.hxx"
 
 class ObjMapObjectImpl 
@@ -30,6 +31,8 @@
   CL_Point  pos;
   MetaData  data;
 
+  CL_Signal_v1<ObjMapObject> on_move;
+
   ObjMapObjectImpl();
   virtual ~ObjMapObjectImpl();
 

Modified: trunk/src/objmap_select_tool.cxx
===================================================================
--- trunk/src/objmap_select_tool.cxx    2004-06-07 20:59:10 UTC (rev 402)
+++ trunk/src/objmap_select_tool.cxx    2004-06-08 09:05:50 UTC (rev 403)
@@ -240,12 +240,16 @@
   switch(state)
     {
     case DRAG:
+      move_command->move_by(pos - drag_start);
+      /*
       for (ObjMapSelectTool::Selection::iterator i = selection.begin(); 
            i != selection.end(); ++i)
         {
           (*i).set_pos((*i).get_pos() + (pos - drag_start));
-        }
-      drag_start = pos;
+          // FIXME: Move this into ObjMapObject
+          (*i).sig_move()(*i);
+        }*/
+      //drag_start = pos;
       break;
 
     case SELECT:

Modified: trunk/src/sector.rb
===================================================================
--- trunk/src/sector.rb 2004-06-07 20:59:10 UTC (rev 402)
+++ trunk/src/sector.rb 2004-06-08 09:05:50 UTC (rev 403)
@@ -160,15 +160,18 @@
           x = get_value_from_tree(["x", "_"], data, 0)
           y = get_value_from_tree(["y", "_"], data, 0)
 
+          spriteobj = ObjMapSpriteObject.new(make_sprite($datadir + image),
+                                             CL_Point.new(x, y), 
make_metadata(nil)).to_object()
+
           if name == "door"
-            metadata = make_metadata(Door.new(data))
+            metadata = make_metadata(Door.new(spriteobj, data))
           else
             metadata = make_metadata(BadGuy.new(name))
           end
 
-          @objects.add_object(ObjMapSpriteObject.new(make_sprite($datadir + 
image),
-                                                     CL_Point.new(x, y),
-                                                     metadata).to_object())
+          spriteobj.set_metadata(metadata)
+
+          @objects.add_object(spriteobj)
         else
           print "Error: Couldn't resolve object type: ", name, "\n"
           print "Sector: Unhandled tag: ", name, "\n"

Modified: trunk/src/supertux.rb
===================================================================
--- trunk/src/supertux.rb       2004-06-07 20:59:10 UTC (rev 402)
+++ trunk/src/supertux.rb       2004-06-08 09:05:50 UTC (rev 403)
@@ -133,19 +133,19 @@
 Tileset_load($tileset, $datadir + "images/tilesets/supertux.stgt")
 
 $game_objects = [
-  ["money", "images/shared/jumpy-left-middle-0.png", 
proc{BadGuy.new("money")}],
-  ["snowball", "images/shared/snowball-left-0.png", 
proc{BadGuy.new("snowball")}],
-  ["mriceblock", "images/shared/mriceblock-left-0.png", 
proc{BadGuy.new("mriceblock")}],
-  ["mrbomb", "images/shared/mrbomb-left-0.png", proc{BadGuy.new("mrbomb")}],
-  ["flame", "images/shared/flame-0.png", proc{BadGuy.new("flame")}], 
-  ["stalactite", "images/shared/stalactite.png", 
proc{BadGuy.new("stalactite")}],
-  ["fish", "images/shared/fish-left-0.png", proc{BadGuy.new("fish")}],
-  ["flyingsnowball", "images/shared/flyingsnowball-left-0.png", 
proc{BadGuy.new("flyingsnowball")}],
-  ["bouncingsnowball", "images/shared/bouncingsnowball-left-0.png", 
proc{BadGuy.new("bouncingsnowball")}],
-  ["spiky", "images/shared/spiky-left-0.png", proc{BadGuy.new("spiky")}],
-  ["playerspawn", "images/shared/resetpoint.png", proc{SpawnPoint.new()}],
-  ["door", "images/shared/door.png", proc{Door.new()}],
-  ["trampoline", "images/shared/trampoline-1.png", 
proc{BadGuy.new("trampoline")}]
+  ["money", "images/shared/jumpy-left-middle-0.png", proc{|data| 
BadGuy.new("money")}],
+  ["snowball", "images/shared/snowball-left-0.png", proc{|data| 
BadGuy.new("snowball")}],
+  ["mriceblock", "images/shared/mriceblock-left-0.png", proc{|data| 
BadGuy.new("mriceblock")}],
+  ["mrbomb", "images/shared/mrbomb-left-0.png", proc{|data| 
BadGuy.new("mrbomb")}],
+  ["flame", "images/shared/flame-0.png", proc{|data| BadGuy.new("flame")}], 
+  ["stalactite", "images/shared/stalactite.png", proc{|data| 
BadGuy.new("stalactite")}],
+  ["fish", "images/shared/fish-left-0.png", proc{|data| BadGuy.new("fish")}],
+  ["flyingsnowball", "images/shared/flyingsnowball-left-0.png", proc{|data| 
BadGuy.new("flyingsnowball")}],
+  ["bouncingsnowball", "images/shared/bouncingsnowball-left-0.png", 
proc{|data| BadGuy.new("bouncingsnowball")}],
+  ["spiky", "images/shared/spiky-left-0.png", proc{|data| 
BadGuy.new("spiky")}],
+  ["playerspawn", "images/shared/resetpoint.png", proc{|data| 
SpawnPoint.new(data)}],
+  ["door", "images/shared/door.png", proc{|data| Door.new(data)}],
+  ["trampoline", "images/shared/trampoline-1.png", proc{|data| 
BadGuy.new("trampoline")}]
 ]
 
 require "level.rb"





reply via email to

[Prev in Thread] Current Thread [Next in Thread]