package mapping

// Rect is a helper type to represent a rectangular area.
type Rect struct {
	X1, Y1, X2, Y2 int
}

// NewRect returns a new Rect type with its properties calculated.
func NewRect(x int, y int, w int, h int) *Rect {
	return &Rect{
		X1: x,
		Y1: y,
		X2: x + w,
		Y2: y + h,
	}
}
// Center returns the center of the Rect.
func (r *Rect) Center() (x, y int) {
	return (r.X1 + r.X2) / 2, (r.Y1 + r.Y2) / 2
}
// Intersect returns a bool representing if the Rect intersects with another.
func (r *Rect) Intersect(other *Rect) bool {
	if r.X1 <= other.X2 && r.X2 >= other.X1 && r.Y1 <= other.Y2 && r.Y2 >= other.Y1 {
		return true
	}
	return false
}