mirror of
https://github.com/hajimehoshi/ebiten.git
synced 2025-01-23 17:32:02 +01:00
mobile: Introduce EventDispatcher to reduce glue code
This commit is contained in:
parent
f251ae8b49
commit
2b477eef5a
@ -29,25 +29,10 @@ import (
|
||||
"github.com/hajimehoshi/ebiten/mobile"
|
||||
)
|
||||
|
||||
func Start() error {
|
||||
mobile.Start(example.Update, example.ScreenWidth, example.ScreenHeight, 2, "Mobile (Ebiten Demo)")
|
||||
return nil
|
||||
}
|
||||
// EventDispacher must be redeclared and exported so that this is available on the Java/Objective-C side.
|
||||
|
||||
func Render() error {
|
||||
return mobile.Render()
|
||||
}
|
||||
type EventDispatcher mobile.EventDispatcher
|
||||
|
||||
// TODO: So many glue codes: Can I reduce those?
|
||||
|
||||
func TouchDown(x, y int) {
|
||||
mobile.TouchDown(x, y)
|
||||
}
|
||||
|
||||
func TouchUp(x, y int) {
|
||||
mobile.TouchUp(x, y)
|
||||
}
|
||||
|
||||
func TouchMove(x, y int) {
|
||||
mobile.TouchMove(x, y)
|
||||
func Start() (EventDispatcher, error) {
|
||||
return mobile.Start(example.Update, example.ScreenWidth, example.ScreenHeight, 2, "Mobile (Ebiten Demo)")
|
||||
}
|
||||
|
@ -26,22 +26,35 @@ import (
|
||||
|
||||
var chError <-chan error
|
||||
|
||||
type EventDispatcher interface {
|
||||
SetScreenSize(width, height int)
|
||||
SetScreenScale(scale int)
|
||||
Render() error
|
||||
TouchDown(x, y int)
|
||||
TouchUp(x, y int)
|
||||
TouchMove(x, y int)
|
||||
}
|
||||
|
||||
// Start starts the game and returns immediately.
|
||||
//
|
||||
// Different from ebiten.Run, this invokes only the game loop and not the main (UI) loop.
|
||||
func Start(f func(*ebiten.Image) error, width, height, scale int, title string) {
|
||||
func Start(f func(*ebiten.Image) error, width, height, scale int, title string) (EventDispatcher, error) {
|
||||
chError = ebiten.RunWithoutMainLoop(f, width, height, scale, title)
|
||||
return &eventDispatcher{}, nil
|
||||
}
|
||||
|
||||
func SetScreenSize(width, height int) {
|
||||
type eventDispatcher struct {
|
||||
}
|
||||
|
||||
func (e *eventDispatcher) SetScreenSize(width, height int) {
|
||||
ui.CurrentUI().SetScreenSize(width, height)
|
||||
}
|
||||
|
||||
func SetScreenScale(scale int) {
|
||||
func (e *eventDispatcher) SetScreenScale(scale int) {
|
||||
ui.CurrentUI().SetScreenScale(scale)
|
||||
}
|
||||
|
||||
func Render() error {
|
||||
func (e *eventDispatcher) Render() error {
|
||||
runtime.LockOSThread()
|
||||
defer runtime.UnlockOSThread()
|
||||
|
||||
@ -51,14 +64,14 @@ func Render() error {
|
||||
return ui.Render(chError)
|
||||
}
|
||||
|
||||
func TouchDown(x, y int) {
|
||||
func (e *eventDispatcher) TouchDown(x, y int) {
|
||||
ui.TouchDown(x, y)
|
||||
}
|
||||
|
||||
func TouchUp(x, y int) {
|
||||
func (e *eventDispatcher) TouchUp(x, y int) {
|
||||
ui.TouchUp(x, y)
|
||||
}
|
||||
|
||||
func TouchMove(x, y int) {
|
||||
func (e *eventDispatcher) TouchMove(x, y int) {
|
||||
ui.TouchMove(x, y)
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user