package land

type PositionedObject interface {
	GetPosition() Vector2D
	GetSize() Vector2D
}

func IsOverlapWithPoint(obj PositionedObject, point Vector2D) bool {
	return point.X >= obj.GetPosition().X && point.X <= obj.GetPosition().X+obj.GetSize().X &&
		point.Y >= obj.GetPosition().Y && point.Y <= obj.GetPosition().Y+obj.GetSize().Y
}

type CollidableObject interface {
	GetPosition() Vector2D
	GetSize() Vector2D
	OnCollide(other CollidableObject)
}

func checkCollisionBetweenObject(a, b CollidableObject) bool {
	aPos := a.GetPosition()
	aSize := a.GetSize()
	bPos := b.GetPosition()
	bSize := b.GetSize()
	return aPos.X < bPos.X+bSize.X &&
		aPos.X+aSize.X > bPos.X &&
		aPos.Y < bPos.Y+bSize.Y &&
		aPos.Y+aSize.Y > bPos.Y
}
