[Super-tux-commit] supertux/src badguy.cpp,1.6,1.7 badguy.h,1.10,1.11
Brought to you by:
wkendrick
From: Ingo R. <gr...@us...> - 2004-03-24 15:23:01
|
Update of /cvsroot/super-tux/supertux/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv16253 Modified Files: badguy.cpp badguy.h Log Message: splitted actions commands for different badguys into seperate functions Index: badguy.h =================================================================== RCS file: /cvsroot/super-tux/supertux/src/badguy.h,v retrieving revision 1.10 retrieving revision 1.11 diff -u -d -r1.10 -r1.11 --- badguy.h 24 Mar 2004 15:03:57 -0000 1.10 +++ badguy.h 24 Mar 2004 15:12:16 -0000 1.11 @@ -72,11 +72,18 @@ void badguy_create_bitmasks(); void badguy_init(bad_guy_type* pbad, float x, float y, int kind); + void badguy_action(bad_guy_type* pbad); void badguy_draw(bad_guy_type* pbad); + +void badguy_action_bsod(bad_guy_type* pbad); +void badguy_action_laptop(bad_guy_type* pbad); +void badguy_action_money(bad_guy_type* pbad); + void badguy_draw_bsod(bad_guy_type* pbad); void badguy_draw_laptop(bad_guy_type* pbad); void badguy_draw_money(bad_guy_type* pbad); + void badguy_collision(bad_guy_type* pbad, void* p_c_object, int c_object); #endif /*SUPERTUX_BADGUY_H*/ Index: badguy.cpp =================================================================== RCS file: /cvsroot/super-tux/supertux/src/badguy.cpp,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -r1.6 -r1.7 --- badguy.cpp 24 Mar 2004 15:03:57 -0000 1.6 +++ badguy.cpp 24 Mar 2004 15:12:16 -0000 1.7 @@ -56,286 +56,294 @@ physic_init(&pbad->physic); } -void badguy_action(bad_guy_type* pbad) +void badguy_action_bsod(bad_guy_type* pbad) { + /* --- BLUE SCREEN OF DEATH MONSTER: --- */ - if (pbad->seen) - { - if (pbad->kind == BAD_BSOD) - { - /* --- BLUE SCREEN OF DEATH MONSTER: --- */ - - /* Move left/right: */ - if (pbad->dying == DYING_NOT || - pbad->dying == DYING_FALLING) - { - if (pbad->dir == RIGHT) - pbad->base.x = pbad->base.x + pbad->base.xm * frame_ratio; - else if (pbad->dir == LEFT) - pbad->base.x = pbad->base.x - pbad->base.xm * frame_ratio; - } + /* Move left/right: */ + if (pbad->dying == DYING_NOT || + pbad->dying == DYING_FALLING) + { + if (pbad->dir == RIGHT) + pbad->base.x = pbad->base.x + pbad->base.xm * frame_ratio; + else if (pbad->dir == LEFT) + pbad->base.x = pbad->base.x - pbad->base.xm * frame_ratio; + } - /* Move vertically: */ + /* Move vertically: */ - pbad->base.y = pbad->base.y + pbad->base.ym * frame_ratio; + pbad->base.y = pbad->base.y + pbad->base.ym * frame_ratio; - if (pbad->dying != DYING_FALLING) - collision_swept_object_map(&pbad->old_base,&pbad->base); - if (pbad->base.y > screen->h) - bad_guys.erase(static_cast<std::vector<bad_guy_type>::iterator>(pbad)); + if (pbad->dying != DYING_FALLING) + collision_swept_object_map(&pbad->old_base,&pbad->base); + if (pbad->base.y > screen->h) + bad_guys.erase(static_cast<std::vector<bad_guy_type>::iterator>(pbad)); - /* Bump into things horizontally: */ - - if (!pbad->dying) - { - if (issolid( pbad->base.x, (int) pbad->base.y + 16)) - { - pbad->dir = RIGHT; - } - else if (issolid( pbad->base.x + pbad->base.width, (int) pbad->base.y + 16)) - { - pbad->dir = LEFT; - } - } + /* Bump into things horizontally: */ - /* Fall if we get off the ground: */ + if (!pbad->dying) + { + if (issolid( pbad->base.x, (int) pbad->base.y + 16)) + { + pbad->dir = RIGHT; + } + else if (issolid( pbad->base.x + pbad->base.width, (int) pbad->base.y + 16)) + { + pbad->dir = LEFT; + } + } - if (pbad->dying != DYING_FALLING) - { - if (!issolid(pbad->base.x+16, pbad->base.y + 32)) - { - if(!physic_is_set(&pbad->physic)) - { - physic_set_state(&pbad->physic,PH_VT); - physic_set_start_vy(&pbad->physic,2.); - } + /* Fall if we get off the ground: */ - pbad->base.ym = physic_get_velocity(&pbad->physic); - } - else - { - /* Land: */ + if (pbad->dying != DYING_FALLING) + { + if (!issolid(pbad->base.x+16, pbad->base.y + 32)) + { + if(!physic_is_set(&pbad->physic)) + { + physic_set_state(&pbad->physic,PH_VT); + physic_set_start_vy(&pbad->physic,2.); + } - if (pbad->base.ym > 0) - { - pbad->base.y = (int)(pbad->base.y / 32) * 32; - pbad->base.ym = 0; - } - physic_init(&pbad->physic); - } - } - else - { - if(!physic_is_set(&pbad->physic)) - { - physic_set_state(&pbad->physic,PH_VT); - physic_set_start_vy(&pbad->physic,2.); - } - pbad->base.ym = physic_get_velocity(&pbad->physic); - } + pbad->base.ym = physic_get_velocity(&pbad->physic); + } + else + { + /* Land: */ - if (pbad->base.y > screen->h) - bad_guys.erase(static_cast<std::vector<bad_guy_type>::iterator>(pbad)); - } - else if (pbad->kind == BAD_LAPTOP) + if (pbad->base.ym > 0) { - /* --- LAPTOP MONSTER: --- */ - - /* Move left/right: */ + pbad->base.y = (int)(pbad->base.y / 32) * 32; + pbad->base.ym = 0; + } + physic_init(&pbad->physic); + } + } + else + { + if(!physic_is_set(&pbad->physic)) + { + physic_set_state(&pbad->physic,PH_VT); + physic_set_start_vy(&pbad->physic,2.); + } + pbad->base.ym = physic_get_velocity(&pbad->physic); + } - if (pbad->mode == NORMAL || pbad->mode == KICK) - { - if (pbad->dying == DYING_NOT || - pbad->dying == DYING_FALLING) - { - if (pbad->dir == RIGHT) - pbad->base.x = pbad->base.x + pbad->base.xm * frame_ratio; - else if (pbad->dir == LEFT) - pbad->base.x = pbad->base.x - pbad->base.xm * frame_ratio; - } - } - else if (pbad->mode == HELD) - { /* FIXME: The pbad object shouldn't know about pplayer objects. */ - /* If we're holding the laptop */ - pbad->dir=tux.dir; - if(pbad->dir==RIGHT) - { - pbad->base.x = tux.base.x + 16; - pbad->base.y = tux.base.y + tux.base.height/1.5 - pbad->base.height; - } - else /* facing left */ - { - pbad->base.x = tux.base.x - 16; - pbad->base.y = tux.base.y + tux.base.height/1.5 - pbad->base.height; - } - if(collision_object_map(&pbad->base)) - { - pbad->base.x = tux.base.x; - pbad->base.y = tux.base.y + tux.base.height/1.5 - pbad->base.height; - } + if (pbad->base.y > screen->h) + bad_guys.erase(static_cast<std::vector<bad_guy_type>::iterator>(pbad)); +} - if(tux.input.fire != DOWN) /* SHOOT! */ - { - if(pbad->dir == LEFT) - pbad->base.x -= 24; - else - pbad->base.x += 24; +void badguy_action_laptop(bad_guy_type* pbad) +{ + /* --- LAPTOP MONSTER: --- */ - pbad->mode=KICK; - pbad->base.xm = 8; - pbad->base.ym = 8; - play_sound(sounds[SND_KICK],SOUND_CENTER_SPEAKER); - } - } + /* Move left/right: */ + if (pbad->mode == NORMAL || pbad->mode == KICK) + { + if (pbad->dying == DYING_NOT || + pbad->dying == DYING_FALLING) + { + if (pbad->dir == RIGHT) + pbad->base.x = pbad->base.x + pbad->base.xm * frame_ratio; + else if (pbad->dir == LEFT) + pbad->base.x = pbad->base.x - pbad->base.xm * frame_ratio; + } + } + else if (pbad->mode == HELD) + { /* FIXME: The pbad object shouldn't know about pplayer objects. */ + /* If we're holding the laptop */ + pbad->dir=tux.dir; + if(pbad->dir==RIGHT) + { + pbad->base.x = tux.base.x + 16; + pbad->base.y = tux.base.y + tux.base.height/1.5 - pbad->base.height; + } + else /* facing left */ + { + pbad->base.x = tux.base.x - 16; + pbad->base.y = tux.base.y + tux.base.height/1.5 - pbad->base.height; + } + if(collision_object_map(&pbad->base)) + { + pbad->base.x = tux.base.x; + pbad->base.y = tux.base.y + tux.base.height/1.5 - pbad->base.height; + } - /* Move vertically: */ + if(tux.input.fire != DOWN) /* SHOOT! */ + { + if(pbad->dir == LEFT) + pbad->base.x -= 24; + else + pbad->base.x += 24; - if(pbad->mode != HELD) - pbad->base.y = pbad->base.y + pbad->base.ym * frame_ratio; + pbad->mode=KICK; + pbad->base.xm = 8; + pbad->base.ym = 8; + play_sound(sounds[SND_KICK],SOUND_CENTER_SPEAKER); + } + } - if (pbad->dying != DYING_FALLING) - collision_swept_object_map(&pbad->old_base,&pbad->base); - if (pbad->base.y > screen->h) - bad_guys.erase(static_cast<std::vector<bad_guy_type>::iterator>(pbad)); - /* Bump into things horizontally: */ - /* Bump into things horizontally: */ + /* Move vertically: */ - if (!pbad->dying) - { - int changed = pbad->dir; - if (issolid( pbad->base.x, (int) pbad->base.y + 16)) - { - pbad->dir = RIGHT; - } - else if (issolid( pbad->base.x + pbad->base.width, (int) pbad->base.y + 16)) - { - pbad->dir = LEFT; - } - if(pbad->mode == KICK && changed != pbad->dir) - { - /* handle stereo sound */ - /* FIXME: In theory a badguy object doesn't know anything about player objects */ - if (tux.base.x > pbad->base.x) - play_sound(sounds[SND_RICOCHET], SOUND_LEFT_SPEAKER); - else if (tux.base.x < pbad->base.x) - play_sound(sounds[SND_RICOCHET], SOUND_RIGHT_SPEAKER); - else - play_sound(sounds[SND_RICOCHET], SOUND_CENTER_SPEAKER); - } + if(pbad->mode != HELD) + pbad->base.y = pbad->base.y + pbad->base.ym * frame_ratio; - } + if (pbad->dying != DYING_FALLING) + collision_swept_object_map(&pbad->old_base,&pbad->base); + if (pbad->base.y > screen->h) + bad_guys.erase(static_cast<std::vector<bad_guy_type>::iterator>(pbad)); + /* Bump into things horizontally: */ + /* Bump into things horizontally: */ - /* Fall if we get off the ground: */ + if (!pbad->dying) + { + int changed = pbad->dir; + if (issolid( pbad->base.x, (int) pbad->base.y + 16)) + { + pbad->dir = RIGHT; + } + else if (issolid( pbad->base.x + pbad->base.width, (int) pbad->base.y + 16)) + { + pbad->dir = LEFT; + } + if(pbad->mode == KICK && changed != pbad->dir) + { + /* handle stereo sound */ + /* FIXME: In theory a badguy object doesn't know anything about player objects */ + if (tux.base.x > pbad->base.x) + play_sound(sounds[SND_RICOCHET], SOUND_LEFT_SPEAKER); + else if (tux.base.x < pbad->base.x) + play_sound(sounds[SND_RICOCHET], SOUND_RIGHT_SPEAKER); + else + play_sound(sounds[SND_RICOCHET], SOUND_CENTER_SPEAKER); + } - if (pbad->dying != DYING_FALLING) - { - if (!issolid(pbad->base.x+16, pbad->base.y + 32)) - { - if(!physic_is_set(&pbad->physic)) - { - physic_set_state(&pbad->physic,PH_VT); - physic_set_start_vy(&pbad->physic,0.); - } + } - if(pbad->mode != HELD) - { - pbad->base.ym = physic_get_velocity(&pbad->physic); - } - } - else - { - /* Land: */ - if (pbad->base.ym > 0) - { - pbad->base.y = (int)(pbad->base.y / 32) * 32; - pbad->base.ym = 0; - } - physic_init(&pbad->physic); - } - } - else - { - if(!physic_is_set(&pbad->physic)) - { - physic_set_state(&pbad->physic,PH_VT); - physic_set_start_vy(&pbad->physic,0.); - } - pbad->base.ym = physic_get_velocity(&pbad->physic); - } + /* Fall if we get off the ground: */ + if (pbad->dying != DYING_FALLING) + { + if (!issolid(pbad->base.x+16, pbad->base.y + 32)) + { + if(!physic_is_set(&pbad->physic)) + { + physic_set_state(&pbad->physic,PH_VT); + physic_set_start_vy(&pbad->physic,0.); + } + if(pbad->mode != HELD) + { + pbad->base.ym = physic_get_velocity(&pbad->physic); } - else if (pbad->kind == BAD_MONEY) + } + else + { + /* Land: */ + + if (pbad->base.ym > 0) { - /* --- MONEY BAGS: --- */ + pbad->base.y = (int)(pbad->base.y / 32) * 32; + pbad->base.ym = 0; + } + physic_init(&pbad->physic); + } + } + else + { + if(!physic_is_set(&pbad->physic)) + { + physic_set_state(&pbad->physic,PH_VT); + physic_set_start_vy(&pbad->physic,0.); + } + pbad->base.ym = physic_get_velocity(&pbad->physic); + } +} +void badguy_action_money(bad_guy_type* pbad) +{ + /* --- MONEY BAGS: --- */ - /* Move vertically: */ - pbad->base.y = pbad->base.y + pbad->base.ym * frame_ratio; + /* Move vertically: */ - if (pbad->dying != DYING_FALLING) - collision_swept_object_map(&pbad->old_base,&pbad->base); + pbad->base.y = pbad->base.y + pbad->base.ym * frame_ratio; - if (pbad->base.y > screen->h) - bad_guys.erase(static_cast<std::vector<bad_guy_type>::iterator>(pbad)); + if (pbad->dying != DYING_FALLING) + collision_swept_object_map(&pbad->old_base,&pbad->base); - if(physic_get_state(&pbad->physic) == -1) - { - physic_set_state(&pbad->physic,PH_VT); - physic_set_start_vy(&pbad->physic,0.); - } + if (pbad->base.y > screen->h) + bad_guys.erase(static_cast<std::vector<bad_guy_type>::iterator>(pbad)); - if (pbad->dying != DYING_FALLING) - { - if(issolid(pbad->base.x, pbad->base.y + 32)) - { - physic_set_state(&pbad->physic,PH_VT); - physic_set_start_vy(&pbad->physic,6.); - pbad->base.ym = physic_get_velocity(&pbad->physic); - } - else if(issolid(pbad->base.x, pbad->base.y)) - { /* This works, but isn't the best solution imagineable */ - physic_set_state(&pbad->physic,PH_VT); - physic_set_start_vy(&pbad->physic,0.); - pbad->base.ym = physic_get_velocity(&pbad->physic); - ++pbad->base.y; - } - else - { - pbad->base.ym = physic_get_velocity(&pbad->physic); - } - } - else - { - if(!physic_is_set(&pbad->physic)) - { - physic_set_state(&pbad->physic,PH_VT); - physic_set_start_vy(&pbad->physic,0.); - } - pbad->base.ym = physic_get_velocity(&pbad->physic); - } - } - else if (pbad->kind == -1) - {} + if(physic_get_state(&pbad->physic) == -1) + { + physic_set_state(&pbad->physic,PH_VT); + physic_set_start_vy(&pbad->physic,0.); + } + if (pbad->dying != DYING_FALLING) + { + if(issolid(pbad->base.x, pbad->base.y + 32)) + { + physic_set_state(&pbad->physic,PH_VT); + physic_set_start_vy(&pbad->physic,6.); + pbad->base.ym = physic_get_velocity(&pbad->physic); } - else if (pbad->kind == -1) - {} + else if(issolid(pbad->base.x, pbad->base.y)) + { /* This works, but isn't the best solution imagineable */ + physic_set_state(&pbad->physic,PH_VT); + physic_set_start_vy(&pbad->physic,0.); + pbad->base.ym = physic_get_velocity(&pbad->physic); + ++pbad->base.y; + } + else + { + pbad->base.ym = physic_get_velocity(&pbad->physic); + } + } + else + { + if(!physic_is_set(&pbad->physic)) + { + physic_set_state(&pbad->physic,PH_VT); + physic_set_start_vy(&pbad->physic,0.); + } + pbad->base.ym = physic_get_velocity(&pbad->physic); + } +} - /* Handle mode timer: */ +void badguy_action(bad_guy_type* pbad) +{ + if (pbad->seen) + { + switch (pbad->kind) + { + case BAD_BSOD: + badguy_action_bsod(pbad); + break; + + case BAD_LAPTOP: + badguy_action_bsod(pbad); + break; + + case BAD_MONEY: + badguy_action_money(pbad); + break; + } + } + /* Handle mode timer: */ if (pbad->mode == FLAT && pbad->mode != HELD) { if(!timer_check(&pbad->timer)) - { - pbad->mode = NORMAL; - pbad->base.xm = 4; + { + pbad->mode = NORMAL; + pbad->base.xm = 4; } } else if (pbad->mode == KICK) @@ -343,9 +351,7 @@ timer_check(&pbad->timer); } - - /* Handle dying timer: */ - + // Handle dying timer: if (pbad->dying == DYING_SQUISHED) { /* Remove it if time's up: */ @@ -353,19 +359,18 @@ bad_guys.erase(static_cast<std::vector<bad_guy_type>::iterator>(pbad)); } - - /* Remove if it's far off the screen: */ - + // Remove if it's far off the screen: if (pbad->base.x < scroll_x - OFFSCREEN_DISTANCE) + { bad_guys.erase(static_cast<std::vector<bad_guy_type>::iterator>(pbad)); + return; + } else /* !seen */ { - /* Once it's on screen, it's activated! */ - + // Once it's on screen, it's activated! if (pbad->base.x <= scroll_x + screen->w + OFFSCREEN_DISTANCE) pbad->seen = true; } - /*}*/ } void badguy_draw_bsod(bad_guy_type* pbad) |