pingus-cvs
[Top][All Lists]
Advanced

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

[Pingus-CVS] r3216 - in trunk/pingus: . src src/actions src/worldobjs


From: grumbel at BerliOS
Subject: [Pingus-CVS] r3216 - in trunk/pingus: . src src/actions src/worldobjs
Date: Sat, 22 Sep 2007 03:47:05 +0200

Author: grumbel
Date: 2007-09-22 03:47:03 +0200 (Sat, 22 Sep 2007)
New Revision: 3216

Modified:
   trunk/pingus/TODO
   trunk/pingus/src/actions/basher.cpp
   trunk/pingus/src/actions/bomber.cpp
   trunk/pingus/src/actions/bridger.cpp
   trunk/pingus/src/actions/digger.cpp
   trunk/pingus/src/actions/digger.hpp
   trunk/pingus/src/actions/miner.cpp
   trunk/pingus/src/actions/miner.hpp
   trunk/pingus/src/collision_mask.cpp
   trunk/pingus/src/collision_mask.hpp
   trunk/pingus/src/worldobjs/groundpiece.cpp
Log:
- added separate col/gfx maps for the actions again

Modified: trunk/pingus/TODO
===================================================================
--- trunk/pingus/TODO   2007-09-22 01:23:25 UTC (rev 3215)
+++ trunk/pingus/TODO   2007-09-22 01:47:03 UTC (rev 3216)
@@ -91,10 +91,8 @@
 Important:
 ==========
 
-- miner remove graphics looks wrong (cmap instead of gfx?), others too (digger)
+- all done
 
-- do german translation
-
 Less Important:
 ===============
 
@@ -127,8 +125,6 @@
 - Liquids/water is 32, others are 64, this is causing trouble with the
   collision map
 
-- separate gfx/colmap surfaces aren't used
-
 - rework command line parsing so that it actually works properly and
   doesn't depend so much on the order (setting datadir causes trouble
   with translation, since translation need datadir to work)

Modified: trunk/pingus/src/actions/basher.cpp
===================================================================
--- trunk/pingus/src/actions/basher.cpp 2007-09-22 01:23:25 UTC (rev 3215)
+++ trunk/pingus/src/actions/basher.cpp 2007-09-22 01:47:03 UTC (rev 3216)
@@ -33,7 +33,7 @@
 
 Basher::Basher (Pingu* p)
   : PinguAction(p),
-    bash_radius(Resource::load_collision_mask("other/bash_radius")),
+    bash_radius("other/bash_radius_gfx", "other/bash_radius"),
     basher_c(0),
     first_bash(true)
 {

Modified: trunk/pingus/src/actions/bomber.cpp
===================================================================
--- trunk/pingus/src/actions/bomber.cpp 2007-09-22 01:23:25 UTC (rev 3215)
+++ trunk/pingus/src/actions/bomber.cpp 2007-09-22 01:47:03 UTC (rev 3216)
@@ -40,7 +40,7 @@
     sound_played(false),
     gfx_exploded(false),
     colmap_exploded(false),
-    bomber_radius(Resource::load_collision_mask("other/bomber_radius")),
+    bomber_radius("other/bomber_radius_gfx", "other/bomber_radius"),
     explo_surf(Resource::load_sprite("pingus/player" + pingu->get_owner_str() 
+ "/explo"))
 {
   sprite.load(Direction::LEFT,  "pingus/player" + pingu->get_owner_str() + 
"/bomber/left");

Modified: trunk/pingus/src/actions/bridger.cpp
===================================================================
--- trunk/pingus/src/actions/bridger.cpp        2007-09-22 01:23:25 UTC (rev 
3215)
+++ trunk/pingus/src/actions/bridger.cpp        2007-09-22 01:47:03 UTC (rev 
3216)
@@ -35,8 +35,8 @@
 Bridger::Bridger (Pingu* p)
   : PinguAction(p),
     mode(B_BUILDING),
-    brick_l(Resource::load_collision_mask("other/brick_left")),
-    brick_r(Resource::load_collision_mask("other/brick_right")),
+    brick_l("other/brick_left"),
+    brick_r("other/brick_right"),
     bricks(MAX_BRICKS),
     block_build(false),
     name(_("Bridger") + std::string(" (" + StringUtil::to_string(bricks) + 
")"))
@@ -228,9 +228,9 @@
   else
     {
       WorldObj::get_world()->put(brick_r,
-                                              
static_cast<int>(pingu->get_pos().x - 10),
-                                              
static_cast<int>(pingu->get_pos().y),
-                                              Groundtype::GP_BRIDGE);
+                                 static_cast<int>(pingu->get_pos().x - 10),
+                                 static_cast<int>(pingu->get_pos().y),
+                                 Groundtype::GP_BRIDGE);
     }
 }
 

Modified: trunk/pingus/src/actions/digger.cpp
===================================================================
--- trunk/pingus/src/actions/digger.cpp 2007-09-22 01:23:25 UTC (rev 3215)
+++ trunk/pingus/src/actions/digger.cpp 2007-09-22 01:47:03 UTC (rev 3216)
@@ -32,16 +32,9 @@
 
 Digger::Digger (Pingu* p)
   : PinguAction(p),
-    digger_radius(Resource::load_collision_mask("other/digger_radius")),
-    digger_radius_gfx(Resource::load_collision_mask("other/digger_radius")),
+    digger_radius("other/digger_radius_gfx", "other/digger_radius"),
     digger_c(0)
 {
-  digger_radius_width  = digger_radius.get_width();
-  digger_radius_height = digger_radius.get_height();
-
-  digger_radius_gfx_width  = digger_radius_gfx.get_width();
-  digger_radius_gfx_height = digger_radius_gfx.get_height();
-
   sprite = Resource::load_sprite("pingus/player" + pingu->get_owner_str() + 
"/digger/left");
 }
 
@@ -93,8 +86,8 @@
 Digger::dig ()
 {
   WorldObj::get_world()->remove(digger_radius,
-                                static_cast<int>(pingu->get_pos().x - 
(digger_radius_width / 2)),
-                                static_cast<int>(pingu->get_pos().y - 
digger_radius_height + 2));
+                                static_cast<int>(pingu->get_pos().x - 
(digger_radius.get_width() / 2)),
+                                static_cast<int>(pingu->get_pos().y - 
digger_radius.get_height() + 2));
   pingu->set_pos(pingu->get_pos().x, pingu->get_pos().y + 1.0f);
 }
 

Modified: trunk/pingus/src/actions/digger.hpp
===================================================================
--- trunk/pingus/src/actions/digger.hpp 2007-09-22 01:23:25 UTC (rev 3215)
+++ trunk/pingus/src/actions/digger.hpp 2007-09-22 01:47:03 UTC (rev 3216)
@@ -28,22 +28,9 @@
 {
 private:
   CollisionMask digger_radius;
-  CollisionMask digger_radius_gfx;
   Sprite sprite;
   int digger_c;
 
-  /** Width of the digger_radius surface */
-  unsigned int digger_radius_width;
-
-  /** Height of the digger_radius surface */
-  unsigned int digger_radius_height;
-
-  /** Width of the digger_radius_gfx surface */
-  unsigned int digger_radius_gfx_width;
-
-  /** Height of the digger_radius_gfx surface */
-  unsigned int digger_radius_gfx_height;
-
 public:
   Digger(Pingu*);
 

Modified: trunk/pingus/src/actions/miner.cpp
===================================================================
--- trunk/pingus/src/actions/miner.cpp  2007-09-22 01:23:25 UTC (rev 3215)
+++ trunk/pingus/src/actions/miner.cpp  2007-09-22 01:47:03 UTC (rev 3216)
@@ -31,17 +31,13 @@
 
 Miner::Miner (Pingu* p)
   : PinguAction(p),
-    miner_radius(Resource::load_collision_mask("other/bash_radius")),
-    miner_radius_gfx(Resource::load_collision_mask("other/bash_radius_gfx")),
+    miner_radius("other/bash_radius_gfx", "other/bash_radius"),
     slow_count(0)
 {
   sprite.load(Direction::LEFT,  Resource::load_sprite("pingus/player" + 
     pingu->get_owner_str() + "/miner/left"));
   sprite.load(Direction::RIGHT, Resource::load_sprite("pingus/player" + 
     pingu->get_owner_str() + "/miner/right"));
-
-  miner_radius_width = miner_radius.get_width();
-  miner_radius_gfx_width = miner_radius_gfx.get_width();
 }
 
 void
@@ -55,8 +51,8 @@
       if (!(slow_count % 3))
        {
          WorldObj::get_world()->remove(miner_radius,
-                                        static_cast<int>(pingu->get_x() - 
(miner_radius_width / 2) + pingu->direction),
-                                        static_cast<int>(pingu->get_y() - 
miner_radius_width + 1));
+                                        static_cast<int>(pingu->get_x() - 
(miner_radius.get_width() / 2) + pingu->direction),
+                                        static_cast<int>(pingu->get_y() - 
miner_radius.get_width() + 1));
        }
 
       pingu->set_pos(pingu->get_x() + pingu->direction, pingu->get_y() + 1);
@@ -65,8 +61,8 @@
   if (rel_getpixel(0, -1) == Groundtype::GP_NOTHING)
     {
       WorldObj::get_world()->remove(miner_radius,
-                                    static_cast<int>(pingu->get_x() - 
(miner_radius_width / 2) + pingu->direction),
-                                    static_cast<int>(pingu->get_y() - 
miner_radius_width + 3) );
+                                    static_cast<int>(pingu->get_x() - 
(miner_radius.get_width() / 2) + pingu->direction),
+                                    static_cast<int>(pingu->get_y() - 
miner_radius.get_width() + 3) );
       pingu->set_action(Actions::Walker);
     }
   else if (rel_getpixel(0, -1) == Groundtype::GP_SOLID
@@ -76,8 +72,8 @@
        Sound::PingusSound::play_sound("chink");
 
       WorldObj::get_world()->remove(miner_radius,
-                                    static_cast<int>(pingu->get_x() - 
(miner_radius_width / 2) + pingu->direction),
-                                    static_cast<int>(pingu->get_y() - 
miner_radius_width + 1) );
+                                    static_cast<int>(pingu->get_x() - 
(miner_radius.get_width() / 2) + pingu->direction),
+                                    static_cast<int>(pingu->get_y() - 
miner_radius.get_width() + 1) );
       pingu->set_action(Actions::Walker);
 
       // Stop Pingu walking further into the solid.

Modified: trunk/pingus/src/actions/miner.hpp
===================================================================
--- trunk/pingus/src/actions/miner.hpp  2007-09-22 01:23:25 UTC (rev 3215)
+++ trunk/pingus/src/actions/miner.hpp  2007-09-22 01:47:03 UTC (rev 3216)
@@ -29,16 +29,9 @@
 {
 private:
   CollisionMask miner_radius;
-  CollisionMask miner_radius_gfx;
   StateSprite sprite;
   int slow_count;
 
-  /** Width of the miner_radius surface */
-  unsigned int miner_radius_width;
-
-  /** Width of the miner_radius_gfx surface */
-  unsigned int miner_radius_gfx_width;
-
 public:
   Miner (Pingu* p);
   virtual ~Miner () {}

Modified: trunk/pingus/src/collision_mask.cpp
===================================================================
--- trunk/pingus/src/collision_mask.cpp 2007-09-22 01:23:25 UTC (rev 3215)
+++ trunk/pingus/src/collision_mask.cpp 2007-09-22 01:47:03 UTC (rev 3216)
@@ -27,32 +27,35 @@
 {
 }
 
+CollisionMask::CollisionMask(const std::string& gfx_name, const std::string& 
col_name)
+{
+  surface = Resource::load_surface(gfx_name);
+  init_colmap(Resource::load_surface(col_name), col_name);
+}
+
 CollisionMask::CollisionMask(const std::string& name)
 {
-  ResDescriptor res_desc(name);
-  init(res_desc);
+  surface = Resource::load_surface(name);
+  init_colmap(surface, name);
 }
 
 CollisionMask::CollisionMask(const ResDescriptor& res_desc)
   : buffer(0)
 {
-  init(res_desc);
+  surface = Resource::load_surface(res_desc);
+  init_colmap(surface, res_desc.res_name);
 }
 
 void
-CollisionMask::init(const ResDescriptor& res_desc)
+CollisionMask::init_colmap(const Surface& surf, const std::string& surface_res)
 {
-  //std::cout << "CollisionMask: " << name << std::endl;
-  surface = Resource::load_surface(res_desc);
-  //Surface cmap = surface; // Resource::load_surface(System::cut_ext(name) + 
"_cmap");
-
-  int pitch = surface.get_pitch();
-  width  = surface.get_width();
-  height = surface.get_height();
+  int pitch = surf.get_pitch();
+  width  = surf.get_width();
+  height = surf.get_height();
   
   buffer = new uint8_t[width * height];
 
-  SDL_Surface* sdl_surface = surface.get_surface();
+  SDL_Surface* sdl_surface = surf.get_surface();
   SDL_LockSurface(sdl_surface);
 
   if (sdl_surface->format->palette)
@@ -84,7 +87,7 @@
              "  gmask: 0x%08x\n"
              "  bmask: 0x%08x\n"
              "  amask: 0x%08x\n",
-             res_desc.res_name.c_str(),
+             surface_res.c_str(),
              int(sdl_surface->format->BitsPerPixel),
              int(sdl_surface->format->BytesPerPixel),
              (unsigned int)sdl_surface->format->Rmask,

Modified: trunk/pingus/src/collision_mask.hpp
===================================================================
--- trunk/pingus/src/collision_mask.hpp 2007-09-22 01:23:25 UTC (rev 3215)
+++ trunk/pingus/src/collision_mask.hpp 2007-09-22 01:47:03 UTC (rev 3216)
@@ -35,6 +35,7 @@
 
 public:
   CollisionMask();
+  CollisionMask(const std::string& gfx_name, const std::string& col_name);
   CollisionMask(const std::string& name);
   CollisionMask(const ResDescriptor& res_desc);
   ~CollisionMask();
@@ -46,7 +47,7 @@
   uint8_t* get_data() const;
 
 private:
-  void init(const ResDescriptor& res_desc);
+  void init_colmap(const Surface& surf, const std::string& surface_res);
 };
 
 #endif

Modified: trunk/pingus/src/worldobjs/groundpiece.cpp
===================================================================
--- trunk/pingus/src/worldobjs/groundpiece.cpp  2007-09-22 01:23:25 UTC (rev 
3215)
+++ trunk/pingus/src/worldobjs/groundpiece.cpp  2007-09-22 01:47:03 UTC (rev 
3216)
@@ -39,7 +39,7 @@
 Groundpiece::on_startup ()
 {
   // FIXME: using a CollisionMask is kind of unneeded here 
-  CollisionMask mask = Resource::load_collision_mask(desc);
+  CollisionMask mask(desc);
 
   // FIXME: overdrawing of bridges and similar things aren't handled here
   if (gptype == Groundtype::GP_REMOVE)





reply via email to

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