mirror of
https://github.com/hajimehoshi/ebiten.git
synced 2025-01-27 11:12:44 +01:00
internal/uidriver: refactoring: remove the gamepad part
Use the gamepad package instead.
This commit is contained in:
parent
e6e0c6d850
commit
3bdd8097b5
77
input.go
77
input.go
@ -16,6 +16,7 @@ package ebiten
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/hajimehoshi/ebiten/v2/internal/driver"
|
"github.com/hajimehoshi/ebiten/v2/internal/driver"
|
||||||
|
"github.com/hajimehoshi/ebiten/v2/internal/gamepad"
|
||||||
"github.com/hajimehoshi/ebiten/v2/internal/gamepaddb"
|
"github.com/hajimehoshi/ebiten/v2/internal/gamepaddb"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -128,7 +129,11 @@ type GamepadID = driver.GamepadID
|
|||||||
//
|
//
|
||||||
// GamepadSDLID is concurrent-safe.
|
// GamepadSDLID is concurrent-safe.
|
||||||
func GamepadSDLID(id GamepadID) string {
|
func GamepadSDLID(id GamepadID) string {
|
||||||
return uiDriver().Input().GamepadSDLID(id)
|
g := gamepad.Get(id)
|
||||||
|
if g == nil {
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
return g.SDLID()
|
||||||
}
|
}
|
||||||
|
|
||||||
// GamepadName returns a string with the name.
|
// GamepadName returns a string with the name.
|
||||||
@ -141,7 +146,11 @@ func GamepadSDLID(id GamepadID) string {
|
|||||||
//
|
//
|
||||||
// GamepadName is concurrent-safe.
|
// GamepadName is concurrent-safe.
|
||||||
func GamepadName(id GamepadID) string {
|
func GamepadName(id GamepadID) string {
|
||||||
return uiDriver().Input().GamepadName(id)
|
g := gamepad.Get(id)
|
||||||
|
if g == nil {
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
return g.Name()
|
||||||
}
|
}
|
||||||
|
|
||||||
// AppendGamepadIDs appends available gamepad IDs to gamepadIDs, and returns the extended buffer.
|
// AppendGamepadIDs appends available gamepad IDs to gamepadIDs, and returns the extended buffer.
|
||||||
@ -149,7 +158,7 @@ func GamepadName(id GamepadID) string {
|
|||||||
//
|
//
|
||||||
// AppendGamepadIDs is concurrent-safe.
|
// AppendGamepadIDs is concurrent-safe.
|
||||||
func AppendGamepadIDs(gamepadIDs []GamepadID) []GamepadID {
|
func AppendGamepadIDs(gamepadIDs []GamepadID) []GamepadID {
|
||||||
return uiDriver().Input().AppendGamepadIDs(gamepadIDs)
|
return gamepad.AppendGamepadIDs(gamepadIDs)
|
||||||
}
|
}
|
||||||
|
|
||||||
// GamepadIDs returns a slice indicating available gamepad IDs.
|
// GamepadIDs returns a slice indicating available gamepad IDs.
|
||||||
@ -163,14 +172,22 @@ func GamepadIDs() []GamepadID {
|
|||||||
//
|
//
|
||||||
// GamepadAxisNum is concurrent-safe.
|
// GamepadAxisNum is concurrent-safe.
|
||||||
func GamepadAxisNum(id GamepadID) int {
|
func GamepadAxisNum(id GamepadID) int {
|
||||||
return uiDriver().Input().GamepadAxisNum(id)
|
g := gamepad.Get(id)
|
||||||
|
if g == nil {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
return g.AxisCount()
|
||||||
}
|
}
|
||||||
|
|
||||||
// GamepadAxisValue returns a float value [-1.0 - 1.0] of the given gamepad (id)'s axis (axis).
|
// GamepadAxisValue returns a float value [-1.0 - 1.0] of the given gamepad (id)'s axis (axis).
|
||||||
//
|
//
|
||||||
// GamepadAxisValue is concurrent-safe.
|
// GamepadAxisValue is concurrent-safe.
|
||||||
func GamepadAxisValue(id GamepadID, axis int) float64 {
|
func GamepadAxisValue(id GamepadID, axis int) float64 {
|
||||||
return uiDriver().Input().GamepadAxisValue(id, axis)
|
g := gamepad.Get(id)
|
||||||
|
if g == nil {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
return g.Axis(axis)
|
||||||
}
|
}
|
||||||
|
|
||||||
// GamepadAxis returns a float value [-1.0 - 1.0] of the given gamepad (id)'s axis (axis).
|
// GamepadAxis returns a float value [-1.0 - 1.0] of the given gamepad (id)'s axis (axis).
|
||||||
@ -184,7 +201,13 @@ func GamepadAxis(id GamepadID, axis int) float64 {
|
|||||||
//
|
//
|
||||||
// GamepadButtonNum is concurrent-safe.
|
// GamepadButtonNum is concurrent-safe.
|
||||||
func GamepadButtonNum(id GamepadID) int {
|
func GamepadButtonNum(id GamepadID) int {
|
||||||
return uiDriver().Input().GamepadButtonNum(id)
|
g := gamepad.Get(id)
|
||||||
|
if g == nil {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
|
// For backward compatibility, hats are treated as buttons in GLFW.
|
||||||
|
return g.ButtonCount() + g.HatCount()*4
|
||||||
}
|
}
|
||||||
|
|
||||||
// IsGamepadButtonPressed reports whether the given button of the gamepad (id) is pressed or not.
|
// IsGamepadButtonPressed reports whether the given button of the gamepad (id) is pressed or not.
|
||||||
@ -197,7 +220,23 @@ func GamepadButtonNum(id GamepadID) int {
|
|||||||
// The relationships between physical buttons and buttion IDs depend on environments.
|
// The relationships between physical buttons and buttion IDs depend on environments.
|
||||||
// There can be differences even between Chrome and Firefox.
|
// There can be differences even between Chrome and Firefox.
|
||||||
func IsGamepadButtonPressed(id GamepadID, button GamepadButton) bool {
|
func IsGamepadButtonPressed(id GamepadID, button GamepadButton) bool {
|
||||||
return uiDriver().Input().IsGamepadButtonPressed(id, button)
|
g := gamepad.Get(id)
|
||||||
|
if g == nil {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
nbuttons := g.ButtonCount()
|
||||||
|
if int(button) < nbuttons {
|
||||||
|
return g.Button(int(button))
|
||||||
|
}
|
||||||
|
|
||||||
|
// For backward compatibility, hats are treated as buttons in GLFW.
|
||||||
|
if hat := (int(button) - nbuttons) / 4; hat < g.HatCount() {
|
||||||
|
dir := (int(button) - nbuttons) % 4
|
||||||
|
return g.Hat(hat)&(1<<dir) != 0
|
||||||
|
}
|
||||||
|
|
||||||
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
// StandardGamepadAxisValue returns a float value [-1.0 - 1.0] of the given gamepad (id)'s standard axis (axis).
|
// StandardGamepadAxisValue returns a float value [-1.0 - 1.0] of the given gamepad (id)'s standard axis (axis).
|
||||||
@ -206,7 +245,11 @@ func IsGamepadButtonPressed(id GamepadID, button GamepadButton) bool {
|
|||||||
//
|
//
|
||||||
// StandardGamepadAxisValue is concurrent safe.
|
// StandardGamepadAxisValue is concurrent safe.
|
||||||
func StandardGamepadAxisValue(id GamepadID, axis StandardGamepadAxis) float64 {
|
func StandardGamepadAxisValue(id GamepadID, axis StandardGamepadAxis) float64 {
|
||||||
return uiDriver().Input().StandardGamepadAxisValue(id, axis)
|
g := gamepad.Get(id)
|
||||||
|
if g == nil {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
return g.StandardAxisValue(axis)
|
||||||
}
|
}
|
||||||
|
|
||||||
// StandardGamepadButtonValue returns a float value [0.0 - 1.0] of the given gamepad (id)'s standard button (button).
|
// StandardGamepadButtonValue returns a float value [0.0 - 1.0] of the given gamepad (id)'s standard button (button).
|
||||||
@ -215,7 +258,11 @@ func StandardGamepadAxisValue(id GamepadID, axis StandardGamepadAxis) float64 {
|
|||||||
//
|
//
|
||||||
// StandardGamepadButtonValue is concurrent safe.
|
// StandardGamepadButtonValue is concurrent safe.
|
||||||
func StandardGamepadButtonValue(id GamepadID, button StandardGamepadButton) float64 {
|
func StandardGamepadButtonValue(id GamepadID, button StandardGamepadButton) float64 {
|
||||||
return uiDriver().Input().StandardGamepadButtonValue(id, button)
|
g := gamepad.Get(id)
|
||||||
|
if g == nil {
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
return g.StandardButtonValue(button)
|
||||||
}
|
}
|
||||||
|
|
||||||
// IsStandardGamepadButtonPressed reports whether the given gamepad (id)'s standard gamepad button (button) is pressed.
|
// IsStandardGamepadButtonPressed reports whether the given gamepad (id)'s standard gamepad button (button) is pressed.
|
||||||
@ -224,14 +271,22 @@ func StandardGamepadButtonValue(id GamepadID, button StandardGamepadButton) floa
|
|||||||
//
|
//
|
||||||
// IsStandardGamepadButtonPressed is concurrent safe.
|
// IsStandardGamepadButtonPressed is concurrent safe.
|
||||||
func IsStandardGamepadButtonPressed(id GamepadID, button StandardGamepadButton) bool {
|
func IsStandardGamepadButtonPressed(id GamepadID, button StandardGamepadButton) bool {
|
||||||
return uiDriver().Input().IsStandardGamepadButtonPressed(id, button)
|
g := gamepad.Get(id)
|
||||||
|
if g == nil {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
return g.IsStandardButtonPressed(button)
|
||||||
}
|
}
|
||||||
|
|
||||||
// IsStandardGamepadLayoutAvailable reports whether the gamepad (id) has a standard gamepad layout mapping.
|
// IsStandardGamepadLayoutAvailable reports whether the gamepad (id) has a standard gamepad layout mapping.
|
||||||
//
|
//
|
||||||
// IsStandardGamepadLayoutAvailable is concurrent-safe.
|
// IsStandardGamepadLayoutAvailable is concurrent-safe.
|
||||||
func IsStandardGamepadLayoutAvailable(id GamepadID) bool {
|
func IsStandardGamepadLayoutAvailable(id GamepadID) bool {
|
||||||
return uiDriver().Input().IsStandardGamepadLayoutAvailable(id)
|
g := gamepad.Get(id)
|
||||||
|
if g == nil {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
return g.IsStandardLayoutAvailable()
|
||||||
}
|
}
|
||||||
|
|
||||||
// UpdateStandardGamepadLayoutMappings parses the specified string mappings in SDL_GameControllerDB format and
|
// UpdateStandardGamepadLayoutMappings parses the specified string mappings in SDL_GameControllerDB format and
|
||||||
|
@ -14,32 +14,16 @@
|
|||||||
|
|
||||||
package driver
|
package driver
|
||||||
|
|
||||||
import (
|
|
||||||
"time"
|
|
||||||
)
|
|
||||||
|
|
||||||
type GamepadID int
|
type GamepadID int
|
||||||
|
|
||||||
type TouchID int
|
type TouchID int
|
||||||
|
|
||||||
type Input interface {
|
type Input interface {
|
||||||
AppendInputChars(runes []rune) []rune
|
AppendInputChars(runes []rune) []rune
|
||||||
AppendGamepadIDs(gamepadIDs []GamepadID) []GamepadID
|
|
||||||
AppendTouchIDs(touchIDs []TouchID) []TouchID
|
AppendTouchIDs(touchIDs []TouchID) []TouchID
|
||||||
CursorPosition() (x, y int)
|
CursorPosition() (x, y int)
|
||||||
GamepadSDLID(id GamepadID) string
|
|
||||||
GamepadName(id GamepadID) string
|
|
||||||
GamepadAxisValue(id GamepadID, axis int) float64
|
|
||||||
GamepadAxisNum(id GamepadID) int
|
|
||||||
GamepadButtonNum(id GamepadID) int
|
|
||||||
IsGamepadButtonPressed(id GamepadID, button GamepadButton) bool
|
|
||||||
IsKeyPressed(key Key) bool
|
IsKeyPressed(key Key) bool
|
||||||
IsMouseButtonPressed(button MouseButton) bool
|
IsMouseButtonPressed(button MouseButton) bool
|
||||||
IsStandardGamepadButtonPressed(id GamepadID, button StandardGamepadButton) bool
|
|
||||||
IsStandardGamepadLayoutAvailable(id GamepadID) bool
|
|
||||||
StandardGamepadAxisValue(id GamepadID, axis StandardGamepadAxis) float64
|
|
||||||
StandardGamepadButtonValue(id GamepadID, button StandardGamepadButton) float64
|
|
||||||
TouchPosition(id TouchID) (x, y int)
|
TouchPosition(id TouchID) (x, y int)
|
||||||
VibrateGamepad(id GamepadID, duration time.Duration, strongMagnitude float64, weakMagnitude float64)
|
|
||||||
Wheel() (xoff, yoff float64)
|
Wheel() (xoff, yoff float64)
|
||||||
}
|
}
|
||||||
|
@ -1,117 +0,0 @@
|
|||||||
// Copyright 2022 The Ebiten Authors
|
|
||||||
//
|
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
// you may not use this file except in compliance with the License.
|
|
||||||
// You may obtain a copy of the License at
|
|
||||||
//
|
|
||||||
// http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
//
|
|
||||||
// Unless required by applicable law or agreed to in writing, software
|
|
||||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
// See the License for the specific language governing permissions and
|
|
||||||
// limitations under the License.
|
|
||||||
|
|
||||||
//go:build ebitencbackend
|
|
||||||
// +build ebitencbackend
|
|
||||||
|
|
||||||
package cbackend
|
|
||||||
|
|
||||||
import (
|
|
||||||
"time"
|
|
||||||
|
|
||||||
"github.com/hajimehoshi/ebiten/v2/internal/driver"
|
|
||||||
"github.com/hajimehoshi/ebiten/v2/internal/gamepad"
|
|
||||||
)
|
|
||||||
|
|
||||||
func (i *Input) AppendGamepadIDs(gamepadIDs []driver.GamepadID) []driver.GamepadID {
|
|
||||||
return gamepad.AppendGamepadIDs(gamepadIDs)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (i *Input) GamepadSDLID(id driver.GamepadID) string {
|
|
||||||
g := gamepad.Get(id)
|
|
||||||
if g == nil {
|
|
||||||
return ""
|
|
||||||
}
|
|
||||||
return g.SDLID()
|
|
||||||
}
|
|
||||||
|
|
||||||
func (i *Input) GamepadName(id driver.GamepadID) string {
|
|
||||||
g := gamepad.Get(id)
|
|
||||||
if g == nil {
|
|
||||||
return ""
|
|
||||||
}
|
|
||||||
return g.Name()
|
|
||||||
}
|
|
||||||
|
|
||||||
func (i *Input) GamepadAxisValue(id driver.GamepadID, axis int) float64 {
|
|
||||||
g := gamepad.Get(id)
|
|
||||||
if g == nil {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
return g.Axis(axis)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (i *Input) GamepadAxisNum(id driver.GamepadID) int {
|
|
||||||
g := gamepad.Get(id)
|
|
||||||
if g == nil {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
return g.AxisCount()
|
|
||||||
}
|
|
||||||
|
|
||||||
func (i *Input) GamepadButtonNum(id driver.GamepadID) int {
|
|
||||||
g := gamepad.Get(id)
|
|
||||||
if g == nil {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
return g.ButtonCount()
|
|
||||||
}
|
|
||||||
|
|
||||||
func (i *Input) IsGamepadButtonPressed(id driver.GamepadID, button driver.GamepadButton) bool {
|
|
||||||
g := gamepad.Get(id)
|
|
||||||
if g == nil {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
return g.Button(int(button))
|
|
||||||
}
|
|
||||||
|
|
||||||
func (i *Input) IsStandardGamepadButtonPressed(id driver.GamepadID, button driver.StandardGamepadButton) bool {
|
|
||||||
g := gamepad.Get(id)
|
|
||||||
if g == nil {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
return g.IsStandardButtonPressed(button)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (i *Input) IsStandardGamepadLayoutAvailable(id driver.GamepadID) bool {
|
|
||||||
g := gamepad.Get(id)
|
|
||||||
if g == nil {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
return g.IsStandardLayoutAvailable()
|
|
||||||
}
|
|
||||||
|
|
||||||
func (i *Input) StandardGamepadAxisValue(id driver.GamepadID, axis driver.StandardGamepadAxis) float64 {
|
|
||||||
g := gamepad.Get(id)
|
|
||||||
if g == nil {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
return g.StandardAxisValue(axis)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (i *Input) StandardGamepadButtonValue(id driver.GamepadID, button driver.StandardGamepadButton) float64 {
|
|
||||||
g := gamepad.Get(id)
|
|
||||||
if g == nil {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
return g.StandardButtonValue(button)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (i *Input) VibrateGamepad(id driver.GamepadID, duration time.Duration, strongMagnitude float64, weakMagnitude float64) {
|
|
||||||
g := gamepad.Get(id)
|
|
||||||
if g == nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
g.Vibrate(duration, strongMagnitude, weakMagnitude)
|
|
||||||
}
|
|
@ -1,131 +0,0 @@
|
|||||||
// Copyright 2022 The Ebiten Authors
|
|
||||||
//
|
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
// you may not use this file except in compliance with the License.
|
|
||||||
// You may obtain a copy of the License at
|
|
||||||
//
|
|
||||||
// http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
//
|
|
||||||
// Unless required by applicable law or agreed to in writing, software
|
|
||||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
// See the License for the specific language governing permissions and
|
|
||||||
// limitations under the License.
|
|
||||||
|
|
||||||
//go:build !android && !js && !ios
|
|
||||||
// +build !android,!js,!ios
|
|
||||||
|
|
||||||
package glfw
|
|
||||||
|
|
||||||
import (
|
|
||||||
"time"
|
|
||||||
|
|
||||||
"github.com/hajimehoshi/ebiten/v2/internal/driver"
|
|
||||||
gamepadpkg "github.com/hajimehoshi/ebiten/v2/internal/gamepad"
|
|
||||||
)
|
|
||||||
|
|
||||||
func (i *Input) AppendGamepadIDs(gamepadIDs []driver.GamepadID) []driver.GamepadID {
|
|
||||||
return gamepadpkg.AppendGamepadIDs(gamepadIDs)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (i *Input) GamepadSDLID(id driver.GamepadID) string {
|
|
||||||
g := gamepadpkg.Get(id)
|
|
||||||
if g == nil {
|
|
||||||
return ""
|
|
||||||
}
|
|
||||||
return g.SDLID()
|
|
||||||
}
|
|
||||||
|
|
||||||
func (i *Input) GamepadName(id driver.GamepadID) string {
|
|
||||||
g := gamepadpkg.Get(id)
|
|
||||||
if g == nil {
|
|
||||||
return ""
|
|
||||||
}
|
|
||||||
return g.Name()
|
|
||||||
}
|
|
||||||
|
|
||||||
func (i *Input) GamepadAxisNum(id driver.GamepadID) int {
|
|
||||||
g := gamepadpkg.Get(id)
|
|
||||||
if g == nil {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
return g.AxisCount()
|
|
||||||
}
|
|
||||||
|
|
||||||
func (i *Input) GamepadAxisValue(id driver.GamepadID, axis int) float64 {
|
|
||||||
g := gamepadpkg.Get(id)
|
|
||||||
if g == nil {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
return g.Axis(axis)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (i *Input) GamepadButtonNum(id driver.GamepadID) int {
|
|
||||||
g := gamepadpkg.Get(id)
|
|
||||||
if g == nil {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
// For backward compatibility, hats are treated as buttons in GLFW.
|
|
||||||
return g.ButtonCount() + g.HatCount()*4
|
|
||||||
}
|
|
||||||
|
|
||||||
func (i *Input) IsGamepadButtonPressed(id driver.GamepadID, button driver.GamepadButton) bool {
|
|
||||||
g := gamepadpkg.Get(id)
|
|
||||||
if g == nil {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
nbuttons := g.ButtonCount()
|
|
||||||
if int(button) < nbuttons {
|
|
||||||
return g.Button(int(button))
|
|
||||||
}
|
|
||||||
|
|
||||||
// For backward compatibility, hats are treated as buttons in GLFW.
|
|
||||||
if hat := (int(button) - nbuttons) / 4; hat < g.HatCount() {
|
|
||||||
dir := (int(button) - nbuttons) % 4
|
|
||||||
return g.Hat(hat)&(1<<dir) != 0
|
|
||||||
}
|
|
||||||
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
|
|
||||||
func (i *Input) IsStandardGamepadLayoutAvailable(id driver.GamepadID) bool {
|
|
||||||
g := gamepadpkg.Get(id)
|
|
||||||
if g == nil {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
return g.IsStandardLayoutAvailable()
|
|
||||||
}
|
|
||||||
|
|
||||||
func (i *Input) StandardGamepadAxisValue(id driver.GamepadID, axis driver.StandardGamepadAxis) float64 {
|
|
||||||
g := gamepadpkg.Get(id)
|
|
||||||
if g == nil {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
return g.StandardAxisValue(axis)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (i *Input) StandardGamepadButtonValue(id driver.GamepadID, button driver.StandardGamepadButton) float64 {
|
|
||||||
g := gamepadpkg.Get(id)
|
|
||||||
if g == nil {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
return g.StandardButtonValue(button)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (i *Input) IsStandardGamepadButtonPressed(id driver.GamepadID, button driver.StandardGamepadButton) bool {
|
|
||||||
g := gamepadpkg.Get(id)
|
|
||||||
if g == nil {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
return g.IsStandardButtonPressed(button)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (i *Input) VibrateGamepad(id driver.GamepadID, duration time.Duration, strongMagnitude float64, weakMagnitude float64) {
|
|
||||||
g := gamepadpkg.Get(id)
|
|
||||||
if g == nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
g.Vibrate(duration, strongMagnitude, weakMagnitude)
|
|
||||||
}
|
|
@ -16,11 +16,9 @@ package js
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"syscall/js"
|
"syscall/js"
|
||||||
"time"
|
|
||||||
"unicode"
|
"unicode"
|
||||||
|
|
||||||
"github.com/hajimehoshi/ebiten/v2/internal/driver"
|
"github.com/hajimehoshi/ebiten/v2/internal/driver"
|
||||||
"github.com/hajimehoshi/ebiten/v2/internal/gamepad"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
@ -83,61 +81,6 @@ func (i *Input) CursorPosition() (x, y int) {
|
|||||||
return int(xf), int(yf)
|
return int(xf), int(yf)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (i *Input) GamepadSDLID(id driver.GamepadID) string {
|
|
||||||
g := gamepad.Get(id)
|
|
||||||
if g == nil {
|
|
||||||
return ""
|
|
||||||
}
|
|
||||||
return g.SDLID()
|
|
||||||
}
|
|
||||||
|
|
||||||
// GamepadName returns a string containing some information about the controller.
|
|
||||||
// A PS2 controller returned "810-3-USB Gamepad" on Firefox
|
|
||||||
// A Xbox 360 controller returned "xinput" on Firefox and "Xbox 360 Controller (XInput STANDARD GAMEPAD)" on Chrome
|
|
||||||
func (i *Input) GamepadName(id driver.GamepadID) string {
|
|
||||||
g := gamepad.Get(id)
|
|
||||||
if g == nil {
|
|
||||||
return ""
|
|
||||||
}
|
|
||||||
return g.Name()
|
|
||||||
}
|
|
||||||
|
|
||||||
func (i *Input) AppendGamepadIDs(gamepadIDs []driver.GamepadID) []driver.GamepadID {
|
|
||||||
return gamepad.AppendGamepadIDs(gamepadIDs)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (i *Input) GamepadAxisNum(id driver.GamepadID) int {
|
|
||||||
g := gamepad.Get(id)
|
|
||||||
if g == nil {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
return g.AxisCount()
|
|
||||||
}
|
|
||||||
|
|
||||||
func (i *Input) GamepadAxisValue(id driver.GamepadID, axis int) float64 {
|
|
||||||
g := gamepad.Get(id)
|
|
||||||
if g == nil {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
return g.Axis(axis)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (i *Input) GamepadButtonNum(id driver.GamepadID) int {
|
|
||||||
g := gamepad.Get(id)
|
|
||||||
if g == nil {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
return g.ButtonCount()
|
|
||||||
}
|
|
||||||
|
|
||||||
func (i *Input) IsGamepadButtonPressed(id driver.GamepadID, button driver.GamepadButton) bool {
|
|
||||||
g := gamepad.Get(id)
|
|
||||||
if g == nil {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
return g.Button(int(button))
|
|
||||||
}
|
|
||||||
|
|
||||||
func (i *Input) AppendTouchIDs(touchIDs []driver.TouchID) []driver.TouchID {
|
func (i *Input) AppendTouchIDs(touchIDs []driver.TouchID) []driver.TouchID {
|
||||||
for id := range i.touches {
|
for id := range i.touches {
|
||||||
touchIDs = append(touchIDs, id)
|
touchIDs = append(touchIDs, id)
|
||||||
@ -252,10 +195,6 @@ func (i *Input) mouseUp(code int) {
|
|||||||
i.mouseButtonPressed[code] = false
|
i.mouseButtonPressed[code] = false
|
||||||
}
|
}
|
||||||
|
|
||||||
func (i *Input) updateGamepads() {
|
|
||||||
gamepad.Update()
|
|
||||||
}
|
|
||||||
|
|
||||||
func (i *Input) updateFromEvent(e js.Value) {
|
func (i *Input) updateFromEvent(e js.Value) {
|
||||||
// Avoid using js.Value.String() as String creates a Uint8Array via a TextEncoder and causes a heavy
|
// Avoid using js.Value.String() as String creates a Uint8Array via a TextEncoder and causes a heavy
|
||||||
// overhead (#1437).
|
// overhead (#1437).
|
||||||
@ -376,43 +315,3 @@ func (i *Input) updateForGo2Cpp() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (i *Input) IsStandardGamepadLayoutAvailable(id driver.GamepadID) bool {
|
|
||||||
g := gamepad.Get(id)
|
|
||||||
if g == nil {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
return g.IsStandardLayoutAvailable()
|
|
||||||
}
|
|
||||||
|
|
||||||
func (i *Input) StandardGamepadAxisValue(id driver.GamepadID, axis driver.StandardGamepadAxis) float64 {
|
|
||||||
g := gamepad.Get(id)
|
|
||||||
if g == nil {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
return g.StandardAxisValue(axis)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (i *Input) StandardGamepadButtonValue(id driver.GamepadID, button driver.StandardGamepadButton) float64 {
|
|
||||||
g := gamepad.Get(id)
|
|
||||||
if g == nil {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
return g.StandardButtonValue(button)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (i *Input) IsStandardGamepadButtonPressed(id driver.GamepadID, button driver.StandardGamepadButton) bool {
|
|
||||||
g := gamepad.Get(id)
|
|
||||||
if g == nil {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
return g.IsStandardButtonPressed(button)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (i *Input) VibrateGamepad(id driver.GamepadID, duration time.Duration, strongMagnitude float64, weakMagnitude float64) {
|
|
||||||
g := gamepad.Get(id)
|
|
||||||
if g == nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
g.Vibrate(duration, strongMagnitude, weakMagnitude)
|
|
||||||
}
|
|
||||||
|
@ -20,6 +20,7 @@ import (
|
|||||||
|
|
||||||
"github.com/hajimehoshi/ebiten/v2/internal/devicescale"
|
"github.com/hajimehoshi/ebiten/v2/internal/devicescale"
|
||||||
"github.com/hajimehoshi/ebiten/v2/internal/driver"
|
"github.com/hajimehoshi/ebiten/v2/internal/driver"
|
||||||
|
"github.com/hajimehoshi/ebiten/v2/internal/gamepad"
|
||||||
"github.com/hajimehoshi/ebiten/v2/internal/graphicsdriver/opengl"
|
"github.com/hajimehoshi/ebiten/v2/internal/graphicsdriver/opengl"
|
||||||
"github.com/hajimehoshi/ebiten/v2/internal/hooks"
|
"github.com/hajimehoshi/ebiten/v2/internal/hooks"
|
||||||
)
|
)
|
||||||
@ -290,7 +291,7 @@ func (u *UserInterface) updateImpl(force bool) error {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
u.input.updateGamepads()
|
gamepad.Update()
|
||||||
u.input.updateForGo2Cpp()
|
u.input.updateForGo2Cpp()
|
||||||
u.updateSize()
|
u.updateSize()
|
||||||
if force {
|
if force {
|
||||||
|
@ -1,117 +0,0 @@
|
|||||||
// Copyright 2022 The Ebiten Authors
|
|
||||||
//
|
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
// you may not use this file except in compliance with the License.
|
|
||||||
// You may obtain a copy of the License at
|
|
||||||
//
|
|
||||||
// http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
//
|
|
||||||
// Unless required by applicable law or agreed to in writing, software
|
|
||||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
// See the License for the specific language governing permissions and
|
|
||||||
// limitations under the License.
|
|
||||||
|
|
||||||
//go:build android || ios
|
|
||||||
// +build android ios
|
|
||||||
|
|
||||||
package mobile
|
|
||||||
|
|
||||||
import (
|
|
||||||
"time"
|
|
||||||
|
|
||||||
"github.com/hajimehoshi/ebiten/v2/internal/driver"
|
|
||||||
"github.com/hajimehoshi/ebiten/v2/internal/gamepad"
|
|
||||||
)
|
|
||||||
|
|
||||||
func (i *Input) AppendGamepadIDs(gamepadIDs []driver.GamepadID) []driver.GamepadID {
|
|
||||||
return gamepad.AppendGamepadIDs(gamepadIDs)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (i *Input) GamepadSDLID(id driver.GamepadID) string {
|
|
||||||
g := gamepad.Get(id)
|
|
||||||
if g == nil {
|
|
||||||
return ""
|
|
||||||
}
|
|
||||||
return g.SDLID()
|
|
||||||
}
|
|
||||||
|
|
||||||
func (i *Input) GamepadName(id driver.GamepadID) string {
|
|
||||||
g := gamepad.Get(id)
|
|
||||||
if g == nil {
|
|
||||||
return ""
|
|
||||||
}
|
|
||||||
return g.Name()
|
|
||||||
}
|
|
||||||
|
|
||||||
func (i *Input) GamepadAxisNum(id driver.GamepadID) int {
|
|
||||||
g := gamepad.Get(id)
|
|
||||||
if g == nil {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
return g.AxisCount()
|
|
||||||
}
|
|
||||||
|
|
||||||
func (i *Input) GamepadAxisValue(id driver.GamepadID, axis int) float64 {
|
|
||||||
g := gamepad.Get(id)
|
|
||||||
if g == nil {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
return g.Axis(axis)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (i *Input) GamepadButtonNum(id driver.GamepadID) int {
|
|
||||||
g := gamepad.Get(id)
|
|
||||||
if g == nil {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
return g.ButtonCount()
|
|
||||||
}
|
|
||||||
|
|
||||||
func (i *Input) IsGamepadButtonPressed(id driver.GamepadID, button driver.GamepadButton) bool {
|
|
||||||
g := gamepad.Get(id)
|
|
||||||
if g == nil {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
return g.Button(int(button))
|
|
||||||
}
|
|
||||||
|
|
||||||
func (i *Input) IsStandardGamepadLayoutAvailable(id driver.GamepadID) bool {
|
|
||||||
g := gamepad.Get(id)
|
|
||||||
if g == nil {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
return g.IsStandardLayoutAvailable()
|
|
||||||
}
|
|
||||||
|
|
||||||
func (i *Input) IsStandardGamepadButtonPressed(id driver.GamepadID, button driver.StandardGamepadButton) bool {
|
|
||||||
g := gamepad.Get(id)
|
|
||||||
if g == nil {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
return g.IsStandardButtonPressed(button)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (i *Input) StandardGamepadButtonValue(id driver.GamepadID, button driver.StandardGamepadButton) float64 {
|
|
||||||
g := gamepad.Get(id)
|
|
||||||
if g == nil {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
return g.StandardButtonValue(button)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (i *Input) StandardGamepadAxisValue(id driver.GamepadID, axis driver.StandardGamepadAxis) float64 {
|
|
||||||
g := gamepad.Get(id)
|
|
||||||
if g == nil {
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
return g.StandardAxisValue(axis)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (i *Input) VibrateGamepad(id driver.GamepadID, duration time.Duration, strongMagnitude float64, weakMagnitude float64) {
|
|
||||||
g := gamepad.Get(id)
|
|
||||||
if g == nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
g.Vibrate(duration, strongMagnitude, weakMagnitude)
|
|
||||||
}
|
|
@ -16,6 +16,8 @@ package ebiten
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"github.com/hajimehoshi/ebiten/v2/internal/gamepad"
|
||||||
)
|
)
|
||||||
|
|
||||||
// VibrateOptions represents the options for device vibration.
|
// VibrateOptions represents the options for device vibration.
|
||||||
@ -69,5 +71,9 @@ type VibrateGamepadOptions struct {
|
|||||||
//
|
//
|
||||||
// VibrateGamepad is concurrent-safe.
|
// VibrateGamepad is concurrent-safe.
|
||||||
func VibrateGamepad(gamepadID GamepadID, options *VibrateGamepadOptions) {
|
func VibrateGamepad(gamepadID GamepadID, options *VibrateGamepadOptions) {
|
||||||
uiDriver().Input().VibrateGamepad(gamepadID, options.Duration, options.StrongMagnitude, options.WeakMagnitude)
|
g := gamepad.Get(gamepadID)
|
||||||
|
if g == nil {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
g.Vibrate(options.Duration, options.StrongMagnitude, options.WeakMagnitude)
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user