123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207 |
- package al
- import "C"
- import "runtime"
- type Joystick struct {
- handle *C.ALLEGRO_JOYSTICK
- }
- func (self *Joystick) Destroy() {
-
-
- }
- func wrapJoystickRaw(handle *C.ALLEGRO_JOYSTICK) *Joystick {
- if handle == nil {
- return nil
- }
- return &Joystick{handle}
- }
- func wrapJoystick(handle *C.ALLEGRO_JOYSTICK) *Joystick {
- self := wrapJoystickRaw(handle)
- if self != nil {
- runtime.SetFinalizer(self, func(me *Joystick) { me.Destroy() })
- }
- return self
- }
- type JoystickState C.ALLEGRO_JOYSTICK_STATE
- func (self *JoystickState) toC() *C.ALLEGRO_JOYSTICK_STATE {
- return (*C.ALLEGRO_JOYSTICK_STATE)(self)
- }
- func (self *JoystickState) GetStickAxis(stick, axis int) float32 {
- if stick >= int(C._AL_MAX_JOYSTICK_STICKS) {
- return 0.0
- }
- if axis >= int(C._AL_MAX_JOYSTICK_AXES) {
- return 0.0
- }
- if axis < 0 {
- return 0.0
- }
- if stick < 0 {
- return 0.0
- }
- return float32(self.stick[C.int(stick)].axis[C.int(axis)])
- }
- func (self *JoystickState) GetButton(button int) int {
- if button >= int(C._AL_MAX_JOYSTICK_BUTTONS) {
- return -1
- }
- if button < 0 {
- return -1
- }
- return int(self.button[C.int(button)])
- }
- const (
- JOYFLAG_DIGITAL = C.ALLEGRO_JOYFLAG_DIGITAL
- JOYFLAG_ANALOGUE = C.ALLEGRO_JOYFLAG_ANALOGUE
- )
- func InstallJoystick() bool {
- return bool(C.al_install_joystick())
- }
- func UninstallJoystick() {
- C.al_uninstall_joystick()
- }
- func IsJoystickInstalled() bool {
- return bool(C.al_is_joystick_installed())
- }
- func GetNumJoysticks() int {
- return int(C.al_get_num_joysticks())
- }
- func GetJoystick(joyn int) *Joystick {
- return wrapJoystick(C.al_get_joystick(C.int(joyn)))
- }
- func (self *Joystick) IsActive() bool {
- return bool(C.al_get_joystick_active(self.handle))
- }
- func (self *Joystick) GetName() string {
- return gostr(C.al_get_joystick_name(self.handle))
- }
- func (self *Joystick) GetNumSticks() int {
- return int(C.al_get_joystick_num_sticks(self.handle))
- }
- func (self *Joystick) GetStickFlags(stick int) int {
- return int(C.al_get_joystick_stick_flags(self.handle, C.int(stick)))
- }
- func (self *Joystick) IsStickDigital(stick int) bool {
- return (JOYFLAG_DIGITAL & self.GetStickFlags(stick)) == JOYFLAG_DIGITAL
- }
- func (self *Joystick) IsStickAnalog(stick int) bool {
- return (JOYFLAG_ANALOGUE & self.GetStickFlags(stick)) == JOYFLAG_ANALOGUE
- }
- func (self *Joystick) GetStickFlagsName(stick int) string {
- if self.IsStickAnalog(stick) {
- if self.IsStickDigital(stick) {
- return "Hybrid"
- } else {
- return "Analog"
- }
- }
- if self.IsStickDigital(stick) {
- return "Digital"
- }
- return "None"
- }
- func (self *Joystick) GetStickName(stick int) string {
- return gostr(C.al_get_joystick_stick_name(self.handle, C.int(stick)))
- }
- func (self *Joystick) GetNumAxes(stick int) int {
- return int(C.al_get_joystick_num_axes(self.handle, C.int(stick)))
- }
- func (self *Joystick) GetAxisName(stick, axis int) string {
- return gostr(C.al_get_joystick_axis_name(self.handle, C.int(stick), C.int(axis)))
- }
- func (self *Joystick) GetNumButtons() int {
- return int(C.al_get_joystick_num_buttons(self.handle))
- }
- func (self *Joystick) GetButtonName(button int) string {
- return gostr(C.al_get_joystick_button_name(self.handle, C.int(button)))
- }
- func (self *Joystick) GetState() *JoystickState {
- state := &JoystickState{}
- C.al_get_joystick_state(self.handle, state.toC())
- return state
- }
- func ReconfigureJoysticks() bool {
- return bool(C.al_reconfigure_joysticks())
- }
- func JoystickEventSource() * EventSource {
- return wrapEventSourceRaw(C.al_get_joystick_event_source())
- }
|