// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
// 02111-1307, USA.
-
+#include <algorithm>
#include "world.h"
#include "tile.h"
#include "gameloop.h"
base.ym += 0.1 * frame_ratio;
if (base.ym >= 0)
- World::current()->bouncy_distros.erase(static_cast<std::vector<BouncyDistro>::iterator>(this));
+ {
+ std::vector<BouncyDistro*>::iterator i
+ = std::find(World::current()->bouncy_distros.begin(),
+ World::current()->bouncy_distros.end(),
+ this);
+ if (i != World::current()->bouncy_distros.end())
+ World::current()->bouncy_distros.erase(i);
+ }
}
void
BouncyDistro::draw()
{
img_distro[0]->draw(base.x - scroll_x,
- base.y);
+ base.y - scroll_y);
}
base.y = base.y + base.ym * frame_ratio;
if (!timer.check())
- World::current()->broken_bricks.erase(static_cast<std::vector<BrokenBrick>::iterator>(this));
+ {
+ std::vector<BrokenBrick*>::iterator i
+ = std::find(World::current()->broken_bricks.begin(),
+ World::current()->broken_bricks.end(),
+ this);
+ if (i != World::current()->broken_bricks.end())
+ World::current()->broken_bricks.erase(i);
+ }
}
void
src.h = 16;
dest.x = (int)(base.x - scroll_x);
- dest.y = (int)base.y;
+ dest.y = (int)(base.y - scroll_y);
dest.w = 16;
dest.h = 16;
/* Stop bouncing? */
if (offset >= 0)
- World::current()->bouncy_bricks.erase(static_cast<std::vector<BouncyBrick>::iterator>(this));
+ {
+ std::vector<BouncyBrick*>::iterator i
+ = std::find(World::current()->bouncy_bricks.begin(),
+ World::current()->bouncy_bricks.end(),
+ this);
+ if (i != World::current()->bouncy_bricks.end())
+ World::current()->bouncy_bricks.erase(i);
+ }
}
void
base.x <= scroll_x + screen->w)
{
dest.x = (int)(base.x - scroll_x);
- dest.y = (int)base.y;
+ dest.y = (int)(base.y - scroll_y);
dest.w = 32;
dest.h = 32;
// paint it later at on offseted position
if(plevel->bkgd_image[0] == '\0')
{
- fillrect(base.x - scroll_x, base.y,
+ fillrect(base.x - scroll_x, base.y - scroll_y,
32,32,
plevel->bkgd_top.red, plevel->bkgd_top.green, plevel->bkgd_top.blue, 0);
// FIXME: doesn't respect the gradient, futhermore is this necessary at all??
}
Tile::draw(base.x - scroll_x,
- base.y + offset,
+ base.y - scroll_y + offset,
shape);
}
}
base.y = base.y - 2 * frame_ratio;
if(!timer.check())
- World::current()->floating_scores.erase(static_cast<std::vector<FloatingScore>::iterator>(this));
+ {
+ std::vector<FloatingScore*>::iterator i
+ = std::find(World::current()->floating_scores.begin(),
+ World::current()->floating_scores.end(),
+ this);
+ if (i != World::current()->floating_scores.end())
+ World::current()->floating_scores.erase(i);
+ }
}
void