1
1
mirror of https://github.com/OpenDiablo2/OpenDiablo2 synced 2024-06-22 23:25:23 +00:00
OpenDiablo2/d2core/d2gui/widget.go

106 lines
2.1 KiB
Go
Raw Normal View History

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)
}
}