{
pbullet->base.width = 4;
pbullet->base.height = 4;
- pbullet->base.alive = YES;
if (dir == RIGHT)
{
void bullet_action(bullet_type* pbullet)
{
- if (pbullet->base.alive)
- {
pbullet->base.x = pbullet->base.x + pbullet->base.xm * frame_ratio;
pbullet->base.y = pbullet->base.y + pbullet->base.ym * frame_ratio;
issolid(pbullet->base.x + 4, pbullet->base.y + 2) ||
issolid(pbullet->base.x, pbullet->base.y + 2))
{
- pbullet->base.alive = NO;
+ bullets.erase(static_cast<std::vector<bullet_type>::iterator>(pbullet));
}
- }
}
void bullet_draw(bullet_type* pbullet)
{
- if (pbullet->base.alive &&
- pbullet->base.x >= scroll_x - pbullet->base.width &&
+ if (pbullet->base.x >= scroll_x - pbullet->base.width &&
pbullet->base.x <= scroll_x + screen->w)
{
texture_draw(&img_bullet, pbullet->base.x - scroll_x, pbullet->base.y,
{
if(c_object == CO_BADGUY)
- pbullet->base.alive = NO;
+ bullets.erase(static_cast<std::vector<bullet_type>::iterator>(pbullet));
}
{
pupgrade->base.width = 32;
pupgrade->base.height = 0;
- pupgrade->base.alive = YES;
pupgrade->kind = kind;
pupgrade->base.x = x;
pupgrade->base.y = y;
void upgrade_action(upgrade_type *pupgrade)
{
- if (pupgrade->base.alive)
- {
+
if (pupgrade->base.height < 32)
{
/* Rise up! */
/* Off the screen? Kill it! */
if (pupgrade->base.x < scroll_x - pupgrade->base.width)
- pupgrade->base.alive = NO;
+ upgrades.erase(static_cast<std::vector<upgrade_type>::iterator>(pupgrade));
if (pupgrade->base.y > screen->h)
- pupgrade->base.alive = NO;
+ upgrades.erase(static_cast<std::vector<upgrade_type>::iterator>(pupgrade));
if (issolid(pupgrade->base.x + 1, pupgrade->base.y + 32.) ||
issolid(pupgrade->base.x + 31., pupgrade->base.y + 32.))
}
}
- }
}
void upgrade_draw(upgrade_type* pupgrade)
{
SDL_Rect dest;
- if (pupgrade->base.alive)
- {
if (pupgrade->base.height < 32)
{
/* Rising up... */
NO_UPDATE);
}
}
- }
}
void upgrade_collision(upgrade_type* pupgrade, void* p_c_object, int c_object)
/* p_c_object is CO_PLAYER, so assign it to pplayer */
pplayer = (player_type*) p_c_object;
- pupgrade->base.alive = NO;
+ upgrades.erase(static_cast<std::vector<upgrade_type>::iterator>(pupgrade));
/* Affect the player: */
{
pplayer->base.height = 32;
pplayer->base.y += 32;
- pplayer->duck = YES;
+ pplayer->duck = true;
}
timer_start(&super_bkgd_timer, 350);
}
else if (pupgrade->kind == UPGRADE_COFFEE)
{
play_sound(sounds[SND_COFFEE], SOUND_CENTER_SPEAKER);
- pplayer->got_coffee = YES;
+ pplayer->got_coffee = true;
timer_start(&super_bkgd_timer, 250);
}
else if (pupgrade->kind == UPGRADE_HERRING)