mirror of
https://github.com/hajimehoshi/ebiten.git
synced 2024-12-24 18:58:54 +01:00
parent
4c76356803
commit
e505098e55
@ -192,7 +192,7 @@ func (i *Input) mouseUp(code int) {
|
|||||||
i.mouseButtonPressed[code] = false
|
i.mouseButtonPressed[code] = false
|
||||||
}
|
}
|
||||||
|
|
||||||
func (i *Input) updateFromEvent(e js.Value) {
|
func (i *Input) updateFromEvent(e js.Value) error {
|
||||||
// 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).
|
||||||
switch t := e.Get("type"); {
|
switch t := e.Get("type"); {
|
||||||
@ -208,7 +208,7 @@ func (i *Input) updateFromEvent(e js.Value) {
|
|||||||
c := e.Get("code")
|
c := e.Get("code")
|
||||||
if c.Type() != js.TypeString {
|
if c.Type() != js.TypeString {
|
||||||
i.keyDownEdge(e.Get("keyCode").Int())
|
i.keyDownEdge(e.Get("keyCode").Int())
|
||||||
return
|
return nil
|
||||||
}
|
}
|
||||||
i.keyDown(c)
|
i.keyDown(c)
|
||||||
case t.Equal(stringKeyup):
|
case t.Equal(stringKeyup):
|
||||||
@ -216,7 +216,7 @@ func (i *Input) updateFromEvent(e js.Value) {
|
|||||||
if c.Type() != js.TypeString {
|
if c.Type() != js.TypeString {
|
||||||
// Assume that UA is Edge.
|
// Assume that UA is Edge.
|
||||||
i.keyUpEdge(e.Get("keyCode").Int())
|
i.keyUpEdge(e.Get("keyCode").Int())
|
||||||
return
|
return nil
|
||||||
}
|
}
|
||||||
i.keyUp(c)
|
i.keyUp(c)
|
||||||
case t.Equal(stringMousedown):
|
case t.Equal(stringMousedown):
|
||||||
@ -237,7 +237,7 @@ func (i *Input) updateFromEvent(e js.Value) {
|
|||||||
i.updateTouchesFromEvent(e)
|
i.updateTouchesFromEvent(e)
|
||||||
}
|
}
|
||||||
|
|
||||||
i.ui.forceUpdateOnMinimumFPSMode()
|
return i.ui.forceUpdateOnMinimumFPSMode()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (i *Input) setMouseCursorFromEvent(e js.Value) {
|
func (i *Input) setMouseCursorFromEvent(e js.Value) {
|
||||||
|
@ -82,6 +82,8 @@ type userInterfaceImpl struct {
|
|||||||
|
|
||||||
lastDeviceScaleFactor float64
|
lastDeviceScaleFactor float64
|
||||||
|
|
||||||
|
err error
|
||||||
|
|
||||||
context *context
|
context *context
|
||||||
input Input
|
input Input
|
||||||
}
|
}
|
||||||
@ -324,6 +326,10 @@ func (u *userInterfaceImpl) loop(game Game) <-chan error {
|
|||||||
|
|
||||||
var cf js.Func
|
var cf js.Func
|
||||||
f := func() {
|
f := func() {
|
||||||
|
if u.err != nil {
|
||||||
|
errCh <- u.err
|
||||||
|
return
|
||||||
|
}
|
||||||
if u.needsUpdate() {
|
if u.needsUpdate() {
|
||||||
u.onceUpdateCalled = true
|
u.onceUpdateCalled = true
|
||||||
u.renderingScheduled = false
|
u.renderingScheduled = false
|
||||||
@ -482,8 +488,9 @@ func init() {
|
|||||||
func setWindowEventHandlers(v js.Value) {
|
func setWindowEventHandlers(v js.Value) {
|
||||||
v.Call("addEventListener", "resize", js.FuncOf(func(this js.Value, args []js.Value) interface{} {
|
v.Call("addEventListener", "resize", js.FuncOf(func(this js.Value, args []js.Value) interface{} {
|
||||||
theUI.updateScreenSize()
|
theUI.updateScreenSize()
|
||||||
if err := theUI.updateImpl(true); err != nil {
|
if err := theUI.updateImpl(true); err != nil && theUI.err != nil {
|
||||||
panic(err)
|
theUI.err = err
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}))
|
}))
|
||||||
@ -497,13 +504,19 @@ func setCanvasEventHandlers(v js.Value) {
|
|||||||
|
|
||||||
e := args[0]
|
e := args[0]
|
||||||
e.Call("preventDefault")
|
e.Call("preventDefault")
|
||||||
theUI.input.updateFromEvent(e)
|
if err := theUI.input.updateFromEvent(e); err != nil && theUI.err != nil {
|
||||||
|
theUI.err = err
|
||||||
|
return nil
|
||||||
|
}
|
||||||
return nil
|
return nil
|
||||||
}))
|
}))
|
||||||
v.Call("addEventListener", "keyup", js.FuncOf(func(this js.Value, args []js.Value) interface{} {
|
v.Call("addEventListener", "keyup", js.FuncOf(func(this js.Value, args []js.Value) interface{} {
|
||||||
e := args[0]
|
e := args[0]
|
||||||
e.Call("preventDefault")
|
e.Call("preventDefault")
|
||||||
theUI.input.updateFromEvent(e)
|
if err := theUI.input.updateFromEvent(e); err != nil && theUI.err != nil {
|
||||||
|
theUI.err = err
|
||||||
|
return nil
|
||||||
|
}
|
||||||
return nil
|
return nil
|
||||||
}))
|
}))
|
||||||
|
|
||||||
@ -514,25 +527,37 @@ func setCanvasEventHandlers(v js.Value) {
|
|||||||
|
|
||||||
e := args[0]
|
e := args[0]
|
||||||
e.Call("preventDefault")
|
e.Call("preventDefault")
|
||||||
theUI.input.updateFromEvent(e)
|
if err := theUI.input.updateFromEvent(e); err != nil && theUI.err != nil {
|
||||||
|
theUI.err = err
|
||||||
|
return nil
|
||||||
|
}
|
||||||
return nil
|
return nil
|
||||||
}))
|
}))
|
||||||
v.Call("addEventListener", "mouseup", js.FuncOf(func(this js.Value, args []js.Value) interface{} {
|
v.Call("addEventListener", "mouseup", js.FuncOf(func(this js.Value, args []js.Value) interface{} {
|
||||||
e := args[0]
|
e := args[0]
|
||||||
e.Call("preventDefault")
|
e.Call("preventDefault")
|
||||||
theUI.input.updateFromEvent(e)
|
if err := theUI.input.updateFromEvent(e); err != nil && theUI.err != nil {
|
||||||
|
theUI.err = err
|
||||||
|
return nil
|
||||||
|
}
|
||||||
return nil
|
return nil
|
||||||
}))
|
}))
|
||||||
v.Call("addEventListener", "mousemove", js.FuncOf(func(this js.Value, args []js.Value) interface{} {
|
v.Call("addEventListener", "mousemove", js.FuncOf(func(this js.Value, args []js.Value) interface{} {
|
||||||
e := args[0]
|
e := args[0]
|
||||||
e.Call("preventDefault")
|
e.Call("preventDefault")
|
||||||
theUI.input.updateFromEvent(e)
|
if err := theUI.input.updateFromEvent(e); err != nil && theUI.err != nil {
|
||||||
|
theUI.err = err
|
||||||
|
return nil
|
||||||
|
}
|
||||||
return nil
|
return nil
|
||||||
}))
|
}))
|
||||||
v.Call("addEventListener", "wheel", js.FuncOf(func(this js.Value, args []js.Value) interface{} {
|
v.Call("addEventListener", "wheel", js.FuncOf(func(this js.Value, args []js.Value) interface{} {
|
||||||
e := args[0]
|
e := args[0]
|
||||||
e.Call("preventDefault")
|
e.Call("preventDefault")
|
||||||
theUI.input.updateFromEvent(e)
|
if err := theUI.input.updateFromEvent(e); err != nil && theUI.err != nil {
|
||||||
|
theUI.err = err
|
||||||
|
return nil
|
||||||
|
}
|
||||||
return nil
|
return nil
|
||||||
}))
|
}))
|
||||||
|
|
||||||
@ -543,19 +568,28 @@ func setCanvasEventHandlers(v js.Value) {
|
|||||||
|
|
||||||
e := args[0]
|
e := args[0]
|
||||||
e.Call("preventDefault")
|
e.Call("preventDefault")
|
||||||
theUI.input.updateFromEvent(e)
|
if err := theUI.input.updateFromEvent(e); err != nil && theUI.err != nil {
|
||||||
|
theUI.err = err
|
||||||
|
return nil
|
||||||
|
}
|
||||||
return nil
|
return nil
|
||||||
}))
|
}))
|
||||||
v.Call("addEventListener", "touchend", js.FuncOf(func(this js.Value, args []js.Value) interface{} {
|
v.Call("addEventListener", "touchend", js.FuncOf(func(this js.Value, args []js.Value) interface{} {
|
||||||
e := args[0]
|
e := args[0]
|
||||||
e.Call("preventDefault")
|
e.Call("preventDefault")
|
||||||
theUI.input.updateFromEvent(e)
|
if err := theUI.input.updateFromEvent(e); err != nil && theUI.err != nil {
|
||||||
|
theUI.err = err
|
||||||
|
return nil
|
||||||
|
}
|
||||||
return nil
|
return nil
|
||||||
}))
|
}))
|
||||||
v.Call("addEventListener", "touchmove", js.FuncOf(func(this js.Value, args []js.Value) interface{} {
|
v.Call("addEventListener", "touchmove", js.FuncOf(func(this js.Value, args []js.Value) interface{} {
|
||||||
e := args[0]
|
e := args[0]
|
||||||
e.Call("preventDefault")
|
e.Call("preventDefault")
|
||||||
theUI.input.updateFromEvent(e)
|
if err := theUI.input.updateFromEvent(e); err != nil && theUI.err != nil {
|
||||||
|
theUI.err = err
|
||||||
|
return nil
|
||||||
|
}
|
||||||
return nil
|
return nil
|
||||||
}))
|
}))
|
||||||
|
|
||||||
@ -575,11 +609,11 @@ func setCanvasEventHandlers(v js.Value) {
|
|||||||
}))
|
}))
|
||||||
}
|
}
|
||||||
|
|
||||||
func (u *userInterfaceImpl) forceUpdateOnMinimumFPSMode() {
|
func (u *userInterfaceImpl) forceUpdateOnMinimumFPSMode() error {
|
||||||
if u.fpsMode != FPSModeVsyncOffMinimum {
|
if u.fpsMode != FPSModeVsyncOffMinimum {
|
||||||
return
|
return nil
|
||||||
}
|
}
|
||||||
u.updateImpl(true)
|
return u.updateImpl(true)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (u *userInterfaceImpl) Run(game Game) error {
|
func (u *userInterfaceImpl) Run(game Game) error {
|
||||||
|
Loading…
Reference in New Issue
Block a user