[Top][All Lists]
[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)
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Pingus-CVS] r3216 - in trunk/pingus: . src src/actions src/worldobjs,
grumbel at BerliOS <=