// $Id$
//
// SuperTux
-// Copyright (C) 2004 SuperTux Development Team, see AUTHORS for details
+// Copyright (C) 2000 Bill Kendrick <bill@newbreedsoftware.com>
+// Copyright (C) 2004 Tobias Glaesser <tobi.web@gmx.de>
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-
+// 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()
{
- texture_draw(&img_distro[0],
- base.x - scroll_x,
- base.y);
+ img_distro[0]->draw(base.x - scroll_x,
+ base.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
dest.h = 16;
if (tile->images.size() > 0)
- texture_draw_part(&tile->images[0],
- src.x,src.y,dest.x,dest.y,dest.w,dest.h);
+ tile->images[0]->draw_part(src.x,src.y,dest.x,dest.y,dest.w,dest.h);
}
void
/* 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
BouncyBrick::draw()
{
- int s;
SDL_Rect dest;
if (base.x >= scroll_x - 32 &&
{
fillrect(base.x - scroll_x, base.y,
32,32,
- plevel->bkgd_red, plevel->bkgd_green, plevel->bkgd_blue, 0);
+ 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??
}
else
{
- s = (int)scroll_x / 30;
- texture_draw_part(&plevel->img_bkgd, dest.x + s, dest.y,
- dest.x, dest.y,dest.w,dest.h);
+ int s = ((int)scroll_x / 2)%640;
+ plevel->img_bkgd->draw_part(dest.x + s, dest.y,
+ dest.x, dest.y,dest.w,dest.h);
}
Tile::draw(base.x - scroll_x,
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
{
char str[10];
sprintf(str, "%d", value);
- text_draw(&gold_text, str, (int)base.x + 16 - strlen(str) * 8, (int)base.y, 1);
+ gold_text->draw(str, (int)base.x + 16 - strlen(str) * 8, (int)base.y, 1);
}
/* EOF */