mirror of
https://github.com/hajimehoshi/ebiten.git
synced 2024-12-26 11:48:55 +01:00
parent
5d2c8ad9be
commit
99a6b1b03e
6
input.go
6
input.go
@ -32,7 +32,7 @@ import (
|
|||||||
//
|
//
|
||||||
// Keyboards don't work on iOS yet (#1090).
|
// Keyboards don't work on iOS yet (#1090).
|
||||||
func InputChars() []rune {
|
func InputChars() []rune {
|
||||||
return uiDriver().Input().RuneBuffer()
|
return uiDriver().Input().AppendInputChars(nil)
|
||||||
}
|
}
|
||||||
|
|
||||||
// IsKeyPressed returns a boolean indicating whether key is pressed.
|
// IsKeyPressed returns a boolean indicating whether key is pressed.
|
||||||
@ -140,7 +140,7 @@ func GamepadName(id GamepadID) string {
|
|||||||
//
|
//
|
||||||
// GamepadIDs always returns an empty slice on iOS.
|
// GamepadIDs always returns an empty slice on iOS.
|
||||||
func GamepadIDs() []GamepadID {
|
func GamepadIDs() []GamepadID {
|
||||||
return uiDriver().Input().GamepadIDs()
|
return uiDriver().Input().AppendGamepadIDs(nil)
|
||||||
}
|
}
|
||||||
|
|
||||||
// GamepadAxisNum returns the number of axes of the gamepad (id).
|
// GamepadAxisNum returns the number of axes of the gamepad (id).
|
||||||
@ -198,7 +198,7 @@ type TouchID = driver.TouchID
|
|||||||
//
|
//
|
||||||
// TouchIDs is concurrent-safe.
|
// TouchIDs is concurrent-safe.
|
||||||
func TouchIDs() []TouchID {
|
func TouchIDs() []TouchID {
|
||||||
return uiDriver().Input().TouchIDs()
|
return uiDriver().Input().AppendTouchIDs(nil)
|
||||||
}
|
}
|
||||||
|
|
||||||
// TouchPosition returns the position for the touch of the specified ID.
|
// TouchPosition returns the position for the touch of the specified ID.
|
||||||
|
@ -19,18 +19,18 @@ type GamepadID int
|
|||||||
type TouchID int
|
type TouchID int
|
||||||
|
|
||||||
type Input interface {
|
type Input interface {
|
||||||
|
AppendInputChars(runes []rune) []rune
|
||||||
|
AppendGamepadIDs(gamepadIDs []GamepadID) []GamepadID
|
||||||
|
AppendTouchIDs(touchIDs []TouchID) []TouchID
|
||||||
CursorPosition() (x, y int)
|
CursorPosition() (x, y int)
|
||||||
GamepadSDLID(id GamepadID) string
|
GamepadSDLID(id GamepadID) string
|
||||||
GamepadName(id GamepadID) string
|
GamepadName(id GamepadID) string
|
||||||
GamepadAxis(id GamepadID, axis int) float64
|
GamepadAxis(id GamepadID, axis int) float64
|
||||||
GamepadAxisNum(id GamepadID) int
|
GamepadAxisNum(id GamepadID) int
|
||||||
GamepadButtonNum(id GamepadID) int
|
GamepadButtonNum(id GamepadID) int
|
||||||
GamepadIDs() []GamepadID
|
|
||||||
IsGamepadButtonPressed(id GamepadID, button GamepadButton) bool
|
IsGamepadButtonPressed(id GamepadID, button GamepadButton) bool
|
||||||
IsKeyPressed(key Key) bool
|
IsKeyPressed(key Key) bool
|
||||||
IsMouseButtonPressed(button MouseButton) bool
|
IsMouseButtonPressed(button MouseButton) bool
|
||||||
RuneBuffer() []rune
|
|
||||||
TouchIDs() []TouchID
|
|
||||||
TouchPosition(id TouchID) (x, y int)
|
TouchPosition(id TouchID) (x, y int)
|
||||||
Wheel() (xoff, yoff float64)
|
Wheel() (xoff, yoff float64)
|
||||||
}
|
}
|
||||||
|
@ -67,20 +67,19 @@ func (i *Input) CursorPosition() (x, y int) {
|
|||||||
return i.cursorX, i.cursorY
|
return i.cursorX, i.cursorY
|
||||||
}
|
}
|
||||||
|
|
||||||
func (i *Input) GamepadIDs() []driver.GamepadID {
|
func (i *Input) AppendGamepadIDs(gamepadIDs []driver.GamepadID) []driver.GamepadID {
|
||||||
if !i.ui.isRunning() {
|
if !i.ui.isRunning() {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
i.ui.m.RLock()
|
i.ui.m.RLock()
|
||||||
defer i.ui.m.RUnlock()
|
defer i.ui.m.RUnlock()
|
||||||
r := make([]driver.GamepadID, 0, len(i.gamepads))
|
|
||||||
for id, g := range i.gamepads {
|
for id, g := range i.gamepads {
|
||||||
if g.valid {
|
if g.valid {
|
||||||
r = append(r, driver.GamepadID(id))
|
gamepadIDs = append(gamepadIDs, driver.GamepadID(id))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return r
|
return gamepadIDs
|
||||||
}
|
}
|
||||||
|
|
||||||
func (i *Input) GamepadSDLID(id driver.GamepadID) string {
|
func (i *Input) GamepadSDLID(id driver.GamepadID) string {
|
||||||
@ -161,21 +160,17 @@ func (i *Input) IsGamepadButtonPressed(id driver.GamepadID, button driver.Gamepa
|
|||||||
return i.gamepads[id].buttonPressed[button]
|
return i.gamepads[id].buttonPressed[button]
|
||||||
}
|
}
|
||||||
|
|
||||||
func (i *Input) TouchIDs() []driver.TouchID {
|
func (i *Input) AppendTouchIDs(touchIDs []driver.TouchID) []driver.TouchID {
|
||||||
if !i.ui.isRunning() {
|
if !i.ui.isRunning() {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
i.ui.m.RLock()
|
i.ui.m.RLock()
|
||||||
defer i.ui.m.RUnlock()
|
defer i.ui.m.RUnlock()
|
||||||
if len(i.touches) == 0 {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
ids := make([]driver.TouchID, 0, len(i.touches))
|
|
||||||
for id := range i.touches {
|
for id := range i.touches {
|
||||||
ids = append(ids, id)
|
touchIDs = append(touchIDs, id)
|
||||||
}
|
}
|
||||||
return ids
|
return touchIDs
|
||||||
}
|
}
|
||||||
|
|
||||||
func (i *Input) TouchPosition(id driver.TouchID) (x, y int) {
|
func (i *Input) TouchPosition(id driver.TouchID) (x, y int) {
|
||||||
@ -193,16 +188,14 @@ func (i *Input) TouchPosition(id driver.TouchID) (x, y int) {
|
|||||||
return 0, 0
|
return 0, 0
|
||||||
}
|
}
|
||||||
|
|
||||||
func (i *Input) RuneBuffer() []rune {
|
func (i *Input) AppendInputChars(runes []rune) []rune {
|
||||||
if !i.ui.isRunning() {
|
if !i.ui.isRunning() {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
i.ui.m.RLock()
|
i.ui.m.RLock()
|
||||||
defer i.ui.m.RUnlock()
|
defer i.ui.m.RUnlock()
|
||||||
rs := make([]rune, len(i.runeBuffer))
|
return append(runes, i.runeBuffer...)
|
||||||
copy(rs, i.runeBuffer)
|
|
||||||
return rs
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (i *Input) resetForFrame() {
|
func (i *Input) resetForFrame() {
|
||||||
|
@ -114,16 +114,11 @@ func (i *Input) GamepadName(id driver.GamepadID) string {
|
|||||||
return g.name
|
return g.name
|
||||||
}
|
}
|
||||||
|
|
||||||
func (i *Input) GamepadIDs() []driver.GamepadID {
|
func (i *Input) AppendGamepadIDs(gamepadIDs []driver.GamepadID) []driver.GamepadID {
|
||||||
if len(i.gamepads) == 0 {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
r := make([]driver.GamepadID, 0, len(i.gamepads))
|
|
||||||
for id := range i.gamepads {
|
for id := range i.gamepads {
|
||||||
r = append(r, id)
|
gamepadIDs = append(gamepadIDs, id)
|
||||||
}
|
}
|
||||||
return r
|
return gamepadIDs
|
||||||
}
|
}
|
||||||
|
|
||||||
func (i *Input) GamepadAxisNum(id driver.GamepadID) int {
|
func (i *Input) GamepadAxisNum(id driver.GamepadID) int {
|
||||||
@ -164,16 +159,11 @@ func (i *Input) IsGamepadButtonPressed(id driver.GamepadID, button driver.Gamepa
|
|||||||
return g.buttonPressed[button]
|
return g.buttonPressed[button]
|
||||||
}
|
}
|
||||||
|
|
||||||
func (i *Input) TouchIDs() []driver.TouchID {
|
func (i *Input) AppendTouchIDs(touchIDs []driver.TouchID) []driver.TouchID {
|
||||||
if len(i.touches) == 0 {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
ids := make([]driver.TouchID, 0, len(i.touches))
|
|
||||||
for id := range i.touches {
|
for id := range i.touches {
|
||||||
ids = append(ids, id)
|
touchIDs = append(touchIDs, id)
|
||||||
}
|
}
|
||||||
return ids
|
return touchIDs
|
||||||
}
|
}
|
||||||
|
|
||||||
func (i *Input) TouchPosition(id driver.TouchID) (x, y int) {
|
func (i *Input) TouchPosition(id driver.TouchID) (x, y int) {
|
||||||
@ -187,10 +177,8 @@ func (i *Input) TouchPosition(id driver.TouchID) (x, y int) {
|
|||||||
return 0, 0
|
return 0, 0
|
||||||
}
|
}
|
||||||
|
|
||||||
func (i *Input) RuneBuffer() []rune {
|
func (i *Input) AppendInputChars(runes []rune) []rune {
|
||||||
rs := make([]rune, len(i.runeBuffer))
|
return append(runes, i.runeBuffer...)
|
||||||
copy(rs, i.runeBuffer)
|
|
||||||
return rs
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (i *Input) resetForFrame() {
|
func (i *Input) resetForFrame() {
|
||||||
|
@ -38,15 +38,14 @@ func (i *Input) CursorPosition() (x, y int) {
|
|||||||
return 0, 0
|
return 0, 0
|
||||||
}
|
}
|
||||||
|
|
||||||
func (i *Input) GamepadIDs() []driver.GamepadID {
|
func (i *Input) AppendGamepadIDs(gamepadIDs []driver.GamepadID) []driver.GamepadID {
|
||||||
i.ui.m.RLock()
|
i.ui.m.RLock()
|
||||||
defer i.ui.m.RUnlock()
|
defer i.ui.m.RUnlock()
|
||||||
|
|
||||||
ids := make([]driver.GamepadID, 0, len(i.gamepads))
|
|
||||||
for _, g := range i.gamepads {
|
for _, g := range i.gamepads {
|
||||||
ids = append(ids, g.ID)
|
gamepadIDs = append(gamepadIDs, g.ID)
|
||||||
}
|
}
|
||||||
return ids
|
return gamepadIDs
|
||||||
}
|
}
|
||||||
|
|
||||||
func (i *Input) GamepadSDLID(id driver.GamepadID) string {
|
func (i *Input) GamepadSDLID(id driver.GamepadID) string {
|
||||||
@ -133,19 +132,14 @@ func (i *Input) IsGamepadButtonPressed(id driver.GamepadID, button driver.Gamepa
|
|||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
func (i *Input) TouchIDs() []driver.TouchID {
|
func (i *Input) AppendTouchIDs(touchIDs []driver.TouchID) []driver.TouchID {
|
||||||
i.ui.m.RLock()
|
i.ui.m.RLock()
|
||||||
defer i.ui.m.RUnlock()
|
defer i.ui.m.RUnlock()
|
||||||
|
|
||||||
if len(i.touches) == 0 {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
ids := make([]driver.TouchID, 0, len(i.touches))
|
|
||||||
for id := range i.touches {
|
for id := range i.touches {
|
||||||
ids = append(ids, id)
|
touchIDs = append(touchIDs, id)
|
||||||
}
|
}
|
||||||
return ids
|
return touchIDs
|
||||||
}
|
}
|
||||||
|
|
||||||
func (i *Input) TouchPosition(id driver.TouchID) (x, y int) {
|
func (i *Input) TouchPosition(id driver.TouchID) (x, y int) {
|
||||||
@ -160,13 +154,10 @@ func (i *Input) TouchPosition(id driver.TouchID) (x, y int) {
|
|||||||
return 0, 0
|
return 0, 0
|
||||||
}
|
}
|
||||||
|
|
||||||
func (i *Input) RuneBuffer() []rune {
|
func (i *Input) AppendInputChars(runes []rune) []rune {
|
||||||
i.ui.m.RLock()
|
i.ui.m.Lock()
|
||||||
defer i.ui.m.RUnlock()
|
defer i.ui.m.Unlock()
|
||||||
|
return append(runes, i.runes...)
|
||||||
rs := make([]rune, len(i.runes))
|
|
||||||
copy(rs, i.runes)
|
|
||||||
return rs
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (i *Input) IsKeyPressed(key driver.Key) bool {
|
func (i *Input) IsKeyPressed(key driver.Key) bool {
|
||||||
|
Loading…
Reference in New Issue
Block a user