//basic box class, for invaders, cannon, city bits...
class Boxish {
  float x,y;
  float w,h;
  color c;

  Boxish(float px,float py,float pw,float ph) {
    x = px;
    y = py;
    w = pw;
    h = ph;
    c = color(255);
  }

  void draw() {
    noStroke();
    fill(c);
    rect(x,y,w,h);
  }

  boolean hit(Boxish b) {
    if(overlap(this.x,this.x+this.w,b.x,b.x+b.w)&&
      overlap(this.y,this.y+this.h,b.y,b.y+b.h)) {
      return true;
    }
    return false;
  }

  boolean hit(float px, float py){
     if(px >= x && px <=  x + w && py >= y && py <= y + h){
        return true; 
     }
     return false;
  }



  boolean overlap(float line1val1,float line1val2,float line2val1,float line2val2) {
    float line1min = min(line1val1,line1val2);
    float line1max = max(line1val1,line1val2);
    float line2min = min(line2val1,line2val2);
    float line2max = max(line2val1,line2val2);

    if(line1min < line2min && line1max < line2min) {
      return false;
    }
    if(line1min > line2max && line1max > line2max) {
      return false;
    }  


    return true;
  }
}