- pupgrade->base.height = pupgrade->base.height + 0.7 * frame_ratio;
- if(pupgrade->base.height > 32)
- pupgrade->base.height = 32;
- }
- else
- {
- /* Move around? */
-
- if (pupgrade->kind == UPGRADE_MINTS ||
- pupgrade->kind == UPGRADE_HERRING)
- {
- pupgrade->base.x = pupgrade->base.x + pupgrade->base.xm * frame_ratio;
- pupgrade->base.y = pupgrade->base.y + pupgrade->base.ym * frame_ratio;
-
- collision_swept_object_map(&pupgrade->old_base,&pupgrade->base);
-
- /* Off the screen? Kill it! */
-
- if (pupgrade->base.x < scroll_x - pupgrade->base.width)
- upgrades.erase(static_cast<std::vector<upgrade_type>::iterator>(pupgrade));
- if (pupgrade->base.y > screen->h)
- 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.))
- {
- if (pupgrade->base.ym > 0)
- {
- if (pupgrade->kind == UPGRADE_MINTS)
- {
- pupgrade->base.ym = 0;
- }
- else if (pupgrade->kind == UPGRADE_HERRING)
- {
- pupgrade->base.ym = -8;
- }
-
- pupgrade->base.y = (int)(pupgrade->base.y / 32) * 32;
- }
- }
- else
- pupgrade->base.ym = pupgrade->base.ym + GRAVITY * frame_ratio;
-
- if (issolid(pupgrade->base.x - 1, (int) pupgrade->base.y))
- {
- if(pupgrade->base.xm < 0)
- pupgrade->base.xm = -pupgrade->base.xm;
- }
- else if (issolid(pupgrade->base.x + pupgrade->base.width, (int) pupgrade->base.y))
- {
- if(pupgrade->base.xm > 0)
- pupgrade->base.xm = -pupgrade->base.xm;
- }
- }
+ /* Move around? */
+ physic.apply(elapsed_time, base.x, base.y, Sector::current()->gravity);
+ if(kind == UPGRADE_GROWUP || kind == UPGRADE_STAR) {
+ collision_swept_object_map(&old_base, &base);
+ }