package allg5

// #include <allegro5/allegro.h>
import "C"

type MouseButton uint

const (
	MouseButtonLeft   MouseButton = 1
	MouseButtonRight              = 2
	MouseButtonMiddle             = 3
)

type MouseCursor uint

const (
	MouseCursorNone        MouseCursor = 0
	MouseCursorDefault                 = 1
	MouseCursorArrow                   = 2
	MouseCursorBusy                    = 3
	MouseCursorQuestion                = 4
	MouseCursorEdit                    = 5
	MouseCursorMove                    = 6
	MouseCursorResizeN                 = 7
	MouseCursorResizeW                 = 8
	MouseCursorResizeS                 = 9
	MouseCursorResizeE                 = 10
	MouseCursorResizeNW                = 11
	MouseCursorResizeSW                = 12
	MouseCursorResizeSE                = 13
	MouseCursorResizeNE                = 14
	MouseCursorProgress                = 15
	MouseCursorPrecision               = 16
	MouseCursorLink                    = 17
	MouseCursorAltSelect               = 18
	MouseCursorUnavailable             = 19
)

func IsMouseButtonDown(b MouseButton) bool {
	var state C.ALLEGRO_MOUSE_STATE
	C.al_get_mouse_state(&state)
	return bool(C.al_mouse_button_down(&state, C.int(b)))
}

func IsAnyMouseButtonDown(buttons ...MouseButton) bool {
	var state C.ALLEGRO_MOUSE_STATE
	C.al_get_mouse_state(&state)
	for _, b := range buttons {
		if bool(C.al_mouse_button_down(&state, C.int(b))) {
			return true
		}
	}
	return false
}