// override this to catch stop falling events protected void stopped_falling() { if (colliding_box_ != null) { y_ = colliding_box_.y() - colliding_box_.get_height() / 2 - Settings.BOX_GAP - get_height() / 2; } if (drive_this_height_ != null) drive_this_height_.set_y(y_); }
public void update() { if (left_driving_box_ != null) { x_ = left_driving_box_.x() + left_driving_box_.get_width() / 2 + Settings.BOX_GAP + get_width() / 2; y_ = left_driving_box_.y(); } else if (falling_) update_position(); if (height_driver_ != null) y_ = height_driver_.y(); check_off_screen(); }
// used by the larger boxes to check collisions protected Collision check_collisions_with_center(float new_x, float new_y) { Iterator<Box> it = BoxManager.instance().boxes().iterator(); while (it.hasNext()) { Box b = it.next(); if (b == this) continue; if (b.ignore_collisions()) continue; if (b.is_inside(new_x, new_y + get_height() / 2 + Settings.BOX_GAP)) { colliding_box_ = b; return Collision.YES; } else if (false && b.is_inside(new_x, (int) (new_y + get_height() / 2 + last_fall_speed_ * 2.0))) return Collision.ABOUT; } return Collision.NONE; }
public void run() { for (Box b : boxes) { b.display(); } }
public boolean collides_with_box(Box box) { if (box == this) return false; return get_rectangle().intersects(box.get_rectangle()); }