mirror of
https://github.com/hajimehoshi/ebiten.git
synced 2025-01-12 12:08:58 +01:00
Refactoring
This commit is contained in:
parent
b70884ca40
commit
aeab5f3437
@ -137,7 +137,7 @@ func ebiten_MouseStateUpdated(nativeWindow unsafe.Pointer, inputType C.InputType
|
|||||||
|
|
||||||
if inputType == C.InputTypeMouseUp {
|
if inputType == C.InputTypeMouseUp {
|
||||||
e := ui.MouseStateUpdatedEvent{-1, -1}
|
e := ui.MouseStateUpdatedEvent{-1, -1}
|
||||||
w.notifyInputStateUpdated(e)
|
w.notify(e)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -155,13 +155,13 @@ func ebiten_MouseStateUpdated(nativeWindow unsafe.Pointer, inputType C.InputType
|
|||||||
y = w.screenHeight - 1
|
y = w.screenHeight - 1
|
||||||
}
|
}
|
||||||
e := ui.MouseStateUpdatedEvent{x, y}
|
e := ui.MouseStateUpdatedEvent{x, y}
|
||||||
w.notifyInputStateUpdated(e)
|
w.notify(e)
|
||||||
}
|
}
|
||||||
|
|
||||||
//export ebiten_WindowClosed
|
//export ebiten_WindowClosed
|
||||||
func ebiten_WindowClosed(nativeWindow unsafe.Pointer) {
|
func ebiten_WindowClosed(nativeWindow unsafe.Pointer) {
|
||||||
w := windows[nativeWindow]
|
w := windows[nativeWindow]
|
||||||
w.closed = true
|
w.closed = true
|
||||||
w.notifyWindowClosed(ui.WindowClosedEvent{})
|
w.notify(ui.WindowClosedEvent{})
|
||||||
delete(windows, nativeWindow)
|
delete(windows, nativeWindow)
|
||||||
}
|
}
|
||||||
|
@ -10,6 +10,29 @@ type windowEvents struct {
|
|||||||
windowClosed chan ui.WindowClosedEvent // initialized lazily
|
windowClosed chan ui.WindowClosedEvent // initialized lazily
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (w *windowEvents) notify(e interface{}) {
|
||||||
|
go func() {
|
||||||
|
w.doNotify(e)
|
||||||
|
}()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (w *windowEvents) doNotify(e interface{}) {
|
||||||
|
switch e := e.(type) {
|
||||||
|
case ui.ScreenSizeUpdatedEvent:
|
||||||
|
if w.screenSizeUpdated != nil {
|
||||||
|
w.screenSizeUpdated <- e
|
||||||
|
}
|
||||||
|
case ui.MouseStateUpdatedEvent:
|
||||||
|
if w.mouseStateUpdated != nil {
|
||||||
|
w.mouseStateUpdated <- e
|
||||||
|
}
|
||||||
|
case ui.WindowClosedEvent:
|
||||||
|
if w.windowClosed != nil {
|
||||||
|
w.windowClosed <- e
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func (w *windowEvents) ScreenSizeUpdated() <-chan ui.ScreenSizeUpdatedEvent {
|
func (w *windowEvents) ScreenSizeUpdated() <-chan ui.ScreenSizeUpdatedEvent {
|
||||||
if w.screenSizeUpdated != nil {
|
if w.screenSizeUpdated != nil {
|
||||||
return w.screenSizeUpdated
|
return w.screenSizeUpdated
|
||||||
@ -18,15 +41,6 @@ func (w *windowEvents) ScreenSizeUpdated() <-chan ui.ScreenSizeUpdatedEvent {
|
|||||||
return w.screenSizeUpdated
|
return w.screenSizeUpdated
|
||||||
}
|
}
|
||||||
|
|
||||||
func (w *windowEvents) notifyScreenSizeUpdated(e ui.ScreenSizeUpdatedEvent) {
|
|
||||||
if w.screenSizeUpdated == nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
go func() {
|
|
||||||
w.screenSizeUpdated <- e
|
|
||||||
}()
|
|
||||||
}
|
|
||||||
|
|
||||||
func (w *windowEvents) MouseStateUpdated() <-chan ui.MouseStateUpdatedEvent {
|
func (w *windowEvents) MouseStateUpdated() <-chan ui.MouseStateUpdatedEvent {
|
||||||
if w.mouseStateUpdated != nil {
|
if w.mouseStateUpdated != nil {
|
||||||
return w.mouseStateUpdated
|
return w.mouseStateUpdated
|
||||||
@ -35,15 +49,6 @@ func (w *windowEvents) MouseStateUpdated() <-chan ui.MouseStateUpdatedEvent {
|
|||||||
return w.mouseStateUpdated
|
return w.mouseStateUpdated
|
||||||
}
|
}
|
||||||
|
|
||||||
func (w *windowEvents) notifyInputStateUpdated(e ui.MouseStateUpdatedEvent) {
|
|
||||||
if w.mouseStateUpdated == nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
go func() {
|
|
||||||
w.mouseStateUpdated <- e
|
|
||||||
}()
|
|
||||||
}
|
|
||||||
|
|
||||||
func (w *windowEvents) WindowClosed() <-chan ui.WindowClosedEvent {
|
func (w *windowEvents) WindowClosed() <-chan ui.WindowClosedEvent {
|
||||||
if w.windowClosed != nil {
|
if w.windowClosed != nil {
|
||||||
return w.windowClosed
|
return w.windowClosed
|
||||||
@ -51,12 +56,3 @@ func (w *windowEvents) WindowClosed() <-chan ui.WindowClosedEvent {
|
|||||||
w.windowClosed = make(chan ui.WindowClosedEvent)
|
w.windowClosed = make(chan ui.WindowClosedEvent)
|
||||||
return w.windowClosed
|
return w.windowClosed
|
||||||
}
|
}
|
||||||
|
|
||||||
func (w *windowEvents) notifyWindowClosed(e ui.WindowClosedEvent) {
|
|
||||||
if w.windowClosed == nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
go func() {
|
|
||||||
w.windowClosed <- e
|
|
||||||
}()
|
|
||||||
}
|
|
||||||
|
Loading…
Reference in New Issue
Block a user