mirror of
https://github.com/OpenDiablo2/OpenDiablo2
synced 2024-10-06 02:03:57 -04:00
106 lines
2.1 KiB
Go
106 lines
2.1 KiB
Go
|
package d2gui
|
||
|
|
||
|
import (
|
||
|
"github.com/OpenDiablo2/OpenDiablo2/d2core/d2input"
|
||
|
"github.com/OpenDiablo2/OpenDiablo2/d2core/d2render"
|
||
|
)
|
||
|
|
||
|
type MouseHandler func(d2input.MouseEvent)
|
||
|
type MouseMoveHandler func(d2input.MouseMoveEvent)
|
||
|
|
||
|
type widget interface {
|
||
|
render(target d2render.Surface) error
|
||
|
advance(elapsed float64) error
|
||
|
|
||
|
onMouseEnter(event d2input.MouseMoveEvent)
|
||
|
onMouseLeave(event d2input.MouseMoveEvent)
|
||
|
onMouseOver(event d2input.MouseMoveEvent)
|
||
|
onMouseClick(event d2input.MouseEvent)
|
||
|
|
||
|
getPosition() (int, int)
|
||
|
getSize() (int, int)
|
||
|
getLayer() int
|
||
|
isVisible() bool
|
||
|
}
|
||
|
|
||
|
type widgetBase struct {
|
||
|
x int
|
||
|
y int
|
||
|
layer int
|
||
|
visible bool
|
||
|
|
||
|
mouseEnterHandler MouseMoveHandler
|
||
|
mouseLeaveHandler MouseMoveHandler
|
||
|
mouseMoveHandler MouseMoveHandler
|
||
|
mouseClickHandler MouseHandler
|
||
|
}
|
||
|
|
||
|
func (w *widgetBase) SetPosition(x, y int) {
|
||
|
w.x = x
|
||
|
w.y = y
|
||
|
}
|
||
|
|
||
|
func (w *widgetBase) SetLayer(layer int) {
|
||
|
w.layer = layer
|
||
|
}
|
||
|
|
||
|
func (w *widgetBase) SetVisible(visible bool) {
|
||
|
w.visible = visible
|
||
|
}
|
||
|
|
||
|
func (w *widgetBase) SetMouseEnterHandler(handler MouseMoveHandler) {
|
||
|
w.mouseEnterHandler = handler
|
||
|
}
|
||
|
|
||
|
func (w *widgetBase) SetMouseLeaveHandler(handler MouseMoveHandler) {
|
||
|
w.mouseLeaveHandler = handler
|
||
|
}
|
||
|
|
||
|
func (w *widgetBase) SetMouseMoveHandler(handler MouseMoveHandler) {
|
||
|
w.mouseMoveHandler = handler
|
||
|
}
|
||
|
|
||
|
func (w *widgetBase) SetMouseClickHandler(handler MouseHandler) {
|
||
|
w.mouseClickHandler = handler
|
||
|
}
|
||
|
|
||
|
func (w *widgetBase) getPosition() (int, int) {
|
||
|
return w.x, w.y
|
||
|
}
|
||
|
|
||
|
func (w *widgetBase) getLayer() int {
|
||
|
return w.layer
|
||
|
}
|
||
|
|
||
|
func (w *widgetBase) isVisible() bool {
|
||
|
return w.visible
|
||
|
}
|
||
|
|
||
|
func (w *widgetBase) advance(elapsed float64) error {
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
func (w *widgetBase) onMouseEnter(event d2input.MouseMoveEvent) {
|
||
|
if w.mouseEnterHandler != nil {
|
||
|
w.mouseEnterHandler(event)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func (w *widgetBase) onMouseLeave(event d2input.MouseMoveEvent) {
|
||
|
if w.mouseLeaveHandler != nil {
|
||
|
w.mouseLeaveHandler(event)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func (w *widgetBase) onMouseOver(event d2input.MouseMoveEvent) {
|
||
|
if w.mouseMoveHandler != nil {
|
||
|
w.mouseMoveHandler(event)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func (w *widgetBase) onMouseClick(event d2input.MouseEvent) {
|
||
|
if w.mouseClickHandler != nil {
|
||
|
w.mouseClickHandler(event)
|
||
|
}
|
||
|
}
|