-World::add_upgrade(float x, float y, int dir, int kind)
-{
- upgrade_type new_upgrade;
- upgrade_init(&new_upgrade,x,y,dir,kind);
- upgrades.push_back(new_upgrade);
-}
-
-void
-World::add_bullet(float x, float y, float xm, int dir)
-{
- bullet_type new_bullet;
- bullet_init(&new_bullet,x,y,xm,dir);
- bullets.push_back(new_bullet);
-
- play_sound(sounds[SND_SHOOT], SOUND_CENTER_SPEAKER);
-}
-
-
-
-void bouncy_distro_init(bouncy_distro_type* pbouncy_distro, float x, float y)
-{
- pbouncy_distro->base.x = x;
- pbouncy_distro->base.y = y;
- pbouncy_distro->base.ym = -2;
-}
-
-void bouncy_distro_action(bouncy_distro_type* pbouncy_distro)
-{
- pbouncy_distro->base.y = pbouncy_distro->base.y + pbouncy_distro->base.ym * frame_ratio;
-
- pbouncy_distro->base.ym += 0.1 * frame_ratio;
-
- if (pbouncy_distro->base.ym >= 0)
- world.bouncy_distros.erase(static_cast<std::vector<bouncy_distro_type>::iterator>(pbouncy_distro));
-}
-
-void bouncy_distro_draw(bouncy_distro_type* pbouncy_distro)
-{
- texture_draw(&img_distro[0],
- pbouncy_distro->base.x - scroll_x,
- pbouncy_distro->base.y);
-}
-
-void broken_brick_init(broken_brick_type* pbroken_brick, Tile* tile,
- float x, float y, float xm, float ym)
-{
- pbroken_brick->tile = tile;
- pbroken_brick->base.x = x;
- pbroken_brick->base.y = y;
- pbroken_brick->base.xm = xm;
- pbroken_brick->base.ym = ym;
-
- timer_init(&pbroken_brick->timer, true);
- timer_start(&pbroken_brick->timer,200);
-}
-
-void broken_brick_action(broken_brick_type* pbroken_brick)
-{
- pbroken_brick->base.x = pbroken_brick->base.x + pbroken_brick->base.xm * frame_ratio;
- pbroken_brick->base.y = pbroken_brick->base.y + pbroken_brick->base.ym * frame_ratio;
-
- if (!timer_check(&pbroken_brick->timer))
- world.broken_bricks.erase(static_cast<std::vector<broken_brick_type>::iterator>(pbroken_brick));
-}
-
-void broken_brick_draw(broken_brick_type* pbroken_brick)
-{
- SDL_Rect src, dest;
- src.x = rand() % 16;
- src.y = rand() % 16;
- src.w = 16;
- src.h = 16;
-
- dest.x = (int)(pbroken_brick->base.x - scroll_x);
- dest.y = (int)pbroken_brick->base.y;
- dest.w = 16;
- dest.h = 16;
-
- if (pbroken_brick->tile->images.size() > 0)
- texture_draw_part(&pbroken_brick->tile->images[0],
- src.x,src.y,dest.x,dest.y,dest.w,dest.h);
-}
-
-void bouncy_brick_init(bouncy_brick_type* pbouncy_brick, float x, float y)
-{
- pbouncy_brick->base.x = x;
- pbouncy_brick->base.y = y;
- pbouncy_brick->offset = 0;
- pbouncy_brick->offset_m = -BOUNCY_BRICK_SPEED;
- pbouncy_brick->shape = GameSession::current()->get_level()->gettileid(x, y);
-}
-
-void bouncy_brick_action(bouncy_brick_type* pbouncy_brick)