mirror of
https://github.com/hajimehoshi/ebiten.git
synced 2024-12-24 18:58:54 +01:00
Remove support of Go 1.13 and Go 1.14
Updates #1258 Updates #1415 Updates #1462
This commit is contained in:
parent
4276e2964e
commit
a627c41217
2
.github/workflows/test.yml
vendored
2
.github/workflows/test.yml
vendored
@ -7,7 +7,7 @@ jobs:
|
|||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
os: [ubuntu-latest, macos-latest, windows-latest]
|
os: [ubuntu-latest, macos-latest, windows-latest]
|
||||||
go: ['1.13.15', '1.14.15', '1.15.13', '1.16.5']
|
go: ['1.15.13', '1.16.5']
|
||||||
name: Test with Go ${{ matrix.go }} on ${{ matrix.os }}
|
name: Test with Go ${{ matrix.go }} on ${{ matrix.os }}
|
||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
env:
|
env:
|
||||||
|
@ -24,7 +24,6 @@ import (
|
|||||||
"unsafe"
|
"unsafe"
|
||||||
|
|
||||||
"github.com/hajimehoshi/ebiten/v2/audio/internal/go2cpp"
|
"github.com/hajimehoshi/ebiten/v2/audio/internal/go2cpp"
|
||||||
"github.com/hajimehoshi/ebiten/v2/internal/jsutil"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func IsAvailable() bool {
|
func IsAvailable() bool {
|
||||||
@ -206,7 +205,7 @@ func (p *player) appendBufferImpl(audioBuffer js.Value) {
|
|||||||
// appendBuffer is called as the 'ended' callback of a buffer.
|
// appendBuffer is called as the 'ended' callback of a buffer.
|
||||||
// 'this' is an AudioBufferSourceNode that already finishes its playing.
|
// 'this' is an AudioBufferSourceNode that already finishes its playing.
|
||||||
for i, n := range p.bufferSourceNodes {
|
for i, n := range p.bufferSourceNodes {
|
||||||
if jsutil.Equal(n, audioBuffer) {
|
if n.Equal(audioBuffer) {
|
||||||
p.bufferSourceNodes = append(p.bufferSourceNodes[:i], p.bufferSourceNodes[i+1:]...)
|
p.bufferSourceNodes = append(p.bufferSourceNodes[:i], p.bufferSourceNodes[i+1:]...)
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
@ -42,27 +42,27 @@ type (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func (t textureNative) equal(rhs textureNative) bool {
|
func (t textureNative) equal(rhs textureNative) bool {
|
||||||
return jsutil.Equal(js.Value(t), js.Value(rhs))
|
return js.Value(t).Equal(js.Value(rhs))
|
||||||
}
|
}
|
||||||
|
|
||||||
func (f framebufferNative) equal(rhs framebufferNative) bool {
|
func (f framebufferNative) equal(rhs framebufferNative) bool {
|
||||||
return jsutil.Equal(js.Value(f), js.Value(rhs))
|
return js.Value(f).Equal(js.Value(rhs))
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s shader) equal(rhs shader) bool {
|
func (s shader) equal(rhs shader) bool {
|
||||||
return jsutil.Equal(js.Value(s), js.Value(rhs))
|
return js.Value(s).Equal(js.Value(rhs))
|
||||||
}
|
}
|
||||||
|
|
||||||
func (b buffer) equal(rhs buffer) bool {
|
func (b buffer) equal(rhs buffer) bool {
|
||||||
return jsutil.Equal(js.Value(b), js.Value(rhs))
|
return js.Value(b).Equal(js.Value(rhs))
|
||||||
}
|
}
|
||||||
|
|
||||||
func (u uniformLocation) equal(rhs uniformLocation) bool {
|
func (u uniformLocation) equal(rhs uniformLocation) bool {
|
||||||
return jsutil.Equal(js.Value(u), js.Value(rhs))
|
return js.Value(u).Equal(js.Value(rhs))
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p program) equal(rhs program) bool {
|
func (p program) equal(rhs program) bool {
|
||||||
return jsutil.Equal(p.value, rhs.value) && p.id == rhs.id
|
return p.value.Equal(rhs.value) && p.id == rhs.id
|
||||||
}
|
}
|
||||||
|
|
||||||
var InvalidTexture = textureNative(js.Null())
|
var InvalidTexture = textureNative(js.Null())
|
||||||
@ -107,9 +107,9 @@ func (c *context) initGL() {
|
|||||||
gl = canvas.Call("getContext", "webgl2", attr)
|
gl = canvas.Call("getContext", "webgl2", attr)
|
||||||
} else {
|
} else {
|
||||||
gl = canvas.Call("getContext", "webgl", attr)
|
gl = canvas.Call("getContext", "webgl", attr)
|
||||||
if jsutil.Equal(gl, js.Null()) {
|
if !gl.Truthy() {
|
||||||
gl = canvas.Call("getContext", "experimental-webgl", attr)
|
gl = canvas.Call("getContext", "experimental-webgl", attr)
|
||||||
if jsutil.Equal(gl, js.Null()) {
|
if !gl.Truthy() {
|
||||||
panic("opengl: getContext failed")
|
panic("opengl: getContext failed")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -166,7 +166,7 @@ func (c *context) scissor(x, y, width, height int) {
|
|||||||
func (c *context) newTexture(width, height int) (textureNative, error) {
|
func (c *context) newTexture(width, height int) (textureNative, error) {
|
||||||
gl := c.gl
|
gl := c.gl
|
||||||
t := gl.createTexture.Invoke()
|
t := gl.createTexture.Invoke()
|
||||||
if jsutil.Equal(t, js.Null()) {
|
if !t.Truthy() {
|
||||||
return textureNative(js.Null()), errors.New("opengl: glGenTexture failed")
|
return textureNative(js.Null()), errors.New("opengl: glGenTexture failed")
|
||||||
}
|
}
|
||||||
gl.pixelStorei.Invoke(gles.UNPACK_ALIGNMENT, 4)
|
gl.pixelStorei.Invoke(gles.UNPACK_ALIGNMENT, 4)
|
||||||
@ -287,7 +287,7 @@ func (c *context) newFragmentShader(source string) (shader, error) {
|
|||||||
func (c *context) newShader(shaderType int, source string) (shader, error) {
|
func (c *context) newShader(shaderType int, source string) (shader, error) {
|
||||||
gl := c.gl
|
gl := c.gl
|
||||||
s := gl.createShader.Invoke(int(shaderType))
|
s := gl.createShader.Invoke(int(shaderType))
|
||||||
if jsutil.Equal(s, js.Null()) {
|
if !s.Truthy() {
|
||||||
return shader(js.Null()), fmt.Errorf("opengl: glCreateShader failed: shader type: %d", shaderType)
|
return shader(js.Null()), fmt.Errorf("opengl: glCreateShader failed: shader type: %d", shaderType)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -309,7 +309,7 @@ func (c *context) deleteShader(s shader) {
|
|||||||
func (c *context) newProgram(shaders []shader, attributes []string) (program, error) {
|
func (c *context) newProgram(shaders []shader, attributes []string) (program, error) {
|
||||||
gl := c.gl
|
gl := c.gl
|
||||||
v := gl.createProgram.Invoke()
|
v := gl.createProgram.Invoke()
|
||||||
if jsutil.Equal(v, js.Null()) {
|
if !v.Truthy() {
|
||||||
return program{}, errors.New("opengl: glCreateProgram failed")
|
return program{}, errors.New("opengl: glCreateProgram failed")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,25 +0,0 @@
|
|||||||
// Copyright 2019 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.
|
|
||||||
|
|
||||||
// +build !go1.14
|
|
||||||
|
|
||||||
package jsutil
|
|
||||||
|
|
||||||
import (
|
|
||||||
"syscall/js"
|
|
||||||
)
|
|
||||||
|
|
||||||
func Equal(a, b js.Value) bool {
|
|
||||||
return a == b
|
|
||||||
}
|
|
@ -1,25 +0,0 @@
|
|||||||
// Copyright 2019 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.
|
|
||||||
|
|
||||||
// +build go1.14
|
|
||||||
|
|
||||||
package jsutil
|
|
||||||
|
|
||||||
import (
|
|
||||||
"syscall/js"
|
|
||||||
)
|
|
||||||
|
|
||||||
func Equal(a, b js.Value) bool {
|
|
||||||
return a.Equal(b)
|
|
||||||
}
|
|
@ -20,7 +20,6 @@ import (
|
|||||||
"unicode"
|
"unicode"
|
||||||
|
|
||||||
"github.com/hajimehoshi/ebiten/v2/internal/driver"
|
"github.com/hajimehoshi/ebiten/v2/internal/driver"
|
||||||
"github.com/hajimehoshi/ebiten/v2/internal/jsutil"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
@ -48,7 +47,7 @@ func jsKeyToID(key js.Value) int {
|
|||||||
// js.Value cannot be used as a map key.
|
// js.Value cannot be used as a map key.
|
||||||
// As the number of keys is around 100, just a dumb loop should work.
|
// As the number of keys is around 100, just a dumb loop should work.
|
||||||
for i, k := range jsKeys {
|
for i, k := range jsKeys {
|
||||||
if jsutil.Equal(k, key) {
|
if k.Equal(key) {
|
||||||
return i
|
return i
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -343,7 +342,7 @@ 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).
|
||||||
switch t := e.Get("type"); {
|
switch t := e.Get("type"); {
|
||||||
case jsutil.Equal(t, stringKeydown):
|
case t.Equal(stringKeydown):
|
||||||
c := e.Get("code")
|
c := e.Get("code")
|
||||||
if c.Type() != js.TypeString {
|
if c.Type() != js.TypeString {
|
||||||
code := e.Get("keyCode").Int()
|
code := e.Get("keyCode").Int()
|
||||||
@ -358,20 +357,20 @@ func (i *Input) updateFromEvent(e js.Value) {
|
|||||||
i.keyDownEdge(code)
|
i.keyDownEdge(code)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if jsutil.Equal(c, driverKeyToJSKey[driver.KeyArrowUp]) ||
|
if c.Equal(driverKeyToJSKey[driver.KeyArrowUp]) ||
|
||||||
jsutil.Equal(c, driverKeyToJSKey[driver.KeyArrowDown]) ||
|
c.Equal(driverKeyToJSKey[driver.KeyArrowDown]) ||
|
||||||
jsutil.Equal(c, driverKeyToJSKey[driver.KeyArrowLeft]) ||
|
c.Equal(driverKeyToJSKey[driver.KeyArrowLeft]) ||
|
||||||
jsutil.Equal(c, driverKeyToJSKey[driver.KeyArrowRight]) ||
|
c.Equal(driverKeyToJSKey[driver.KeyArrowRight]) ||
|
||||||
jsutil.Equal(c, driverKeyToJSKey[driver.KeyBackspace]) ||
|
c.Equal(driverKeyToJSKey[driver.KeyBackspace]) ||
|
||||||
jsutil.Equal(c, driverKeyToJSKey[driver.KeyTab]) {
|
c.Equal(driverKeyToJSKey[driver.KeyTab]) {
|
||||||
e.Call("preventDefault")
|
e.Call("preventDefault")
|
||||||
}
|
}
|
||||||
i.keyDown(c)
|
i.keyDown(c)
|
||||||
case jsutil.Equal(t, stringKeypress):
|
case t.Equal(stringKeypress):
|
||||||
if r := rune(e.Get("charCode").Int()); unicode.IsPrint(r) {
|
if r := rune(e.Get("charCode").Int()); unicode.IsPrint(r) {
|
||||||
i.runeBuffer = append(i.runeBuffer, r)
|
i.runeBuffer = append(i.runeBuffer, r)
|
||||||
}
|
}
|
||||||
case jsutil.Equal(t, stringKeyup):
|
case t.Equal(stringKeyup):
|
||||||
if e.Get("code").Type() != js.TypeString {
|
if e.Get("code").Type() != js.TypeString {
|
||||||
// Assume that UA is Edge.
|
// Assume that UA is Edge.
|
||||||
code := e.Get("keyCode").Int()
|
code := e.Get("keyCode").Int()
|
||||||
@ -379,21 +378,21 @@ func (i *Input) updateFromEvent(e js.Value) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
i.keyUp(e.Get("code"))
|
i.keyUp(e.Get("code"))
|
||||||
case jsutil.Equal(t, stringMousedown):
|
case t.Equal(stringMousedown):
|
||||||
button := e.Get("button").Int()
|
button := e.Get("button").Int()
|
||||||
i.mouseDown(button)
|
i.mouseDown(button)
|
||||||
i.setMouseCursorFromEvent(e)
|
i.setMouseCursorFromEvent(e)
|
||||||
case jsutil.Equal(t, stringMouseup):
|
case t.Equal(stringMouseup):
|
||||||
button := e.Get("button").Int()
|
button := e.Get("button").Int()
|
||||||
i.mouseUp(button)
|
i.mouseUp(button)
|
||||||
i.setMouseCursorFromEvent(e)
|
i.setMouseCursorFromEvent(e)
|
||||||
case jsutil.Equal(t, stringMousemove):
|
case t.Equal(stringMousemove):
|
||||||
i.setMouseCursorFromEvent(e)
|
i.setMouseCursorFromEvent(e)
|
||||||
case jsutil.Equal(t, stringWheel):
|
case t.Equal(stringWheel):
|
||||||
// TODO: What if e.deltaMode is not DOM_DELTA_PIXEL?
|
// TODO: What if e.deltaMode is not DOM_DELTA_PIXEL?
|
||||||
i.wheelX = -e.Get("deltaX").Float()
|
i.wheelX = -e.Get("deltaX").Float()
|
||||||
i.wheelY = -e.Get("deltaY").Float()
|
i.wheelY = -e.Get("deltaY").Float()
|
||||||
case jsutil.Equal(t, stringTouchstart) || jsutil.Equal(t, stringTouchend) || jsutil.Equal(t, stringTouchmove):
|
case t.Equal(stringTouchstart) || t.Equal(stringTouchend) || t.Equal(stringTouchmove):
|
||||||
i.updateTouchesFromEvent(e)
|
i.updateTouchesFromEvent(e)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -22,7 +22,6 @@ import (
|
|||||||
"github.com/hajimehoshi/ebiten/v2/internal/driver"
|
"github.com/hajimehoshi/ebiten/v2/internal/driver"
|
||||||
"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"
|
||||||
"github.com/hajimehoshi/ebiten/v2/internal/jsutil"
|
|
||||||
"github.com/hajimehoshi/ebiten/v2/internal/restorable"
|
"github.com/hajimehoshi/ebiten/v2/internal/restorable"
|
||||||
)
|
)
|
||||||
|
|
||||||
@ -560,7 +559,7 @@ func (u *UserInterface) Run(context driver.UIContext) error {
|
|||||||
if u.initFocused && window.Truthy() {
|
if u.initFocused && window.Truthy() {
|
||||||
// Do not focus the canvas when the current document is in an iframe.
|
// Do not focus the canvas when the current document is in an iframe.
|
||||||
// Otherwise, the parent page tries to focus the iframe on every loading, which is annoying (#1373).
|
// Otherwise, the parent page tries to focus the iframe on every loading, which is annoying (#1373).
|
||||||
isInIframe := !jsutil.Equal(window.Get("location"), window.Get("parent").Get("location"))
|
isInIframe := !window.Get("location").Equal(window.Get("parent").Get("location"))
|
||||||
if !isInIframe {
|
if !isInIframe {
|
||||||
canvas.Call("focus")
|
canvas.Call("focus")
|
||||||
}
|
}
|
||||||
@ -602,7 +601,7 @@ func (u *UserInterface) SetScreenTransparent(transparent bool) {
|
|||||||
|
|
||||||
func (u *UserInterface) IsScreenTransparent() bool {
|
func (u *UserInterface) IsScreenTransparent() bool {
|
||||||
bodyStyle := document.Get("body").Get("style")
|
bodyStyle := document.Get("body").Get("style")
|
||||||
return jsutil.Equal(bodyStyle.Get("backgroundColor"), stringTransparent)
|
return bodyStyle.Get("backgroundColor").Equal(stringTransparent)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (u *UserInterface) ResetForFrame() {
|
func (u *UserInterface) ResetForFrame() {
|
||||||
|
Loading…
Reference in New Issue
Block a user