Implement hypertext (badly)
This commit is contained in:
@@ -23,7 +23,7 @@ import (
|
||||
type Interface struct {
|
||||
Name string
|
||||
menu *assetstore.Menu
|
||||
static []*assetstore.Sprite // Static elements in the interface
|
||||
static []*staticElement
|
||||
ticks int
|
||||
widgets []*Widget
|
||||
}
|
||||
@@ -75,15 +75,24 @@ func (i *Interface) Update(screenX, screenY int) error {
|
||||
}
|
||||
|
||||
func (i *Interface) Draw(screen *ebiten.Image) error {
|
||||
var tooltip string // Draw this last, so it's on top of everything
|
||||
|
||||
mousePt := i.getMousePos(screen.Size())
|
||||
geo := i.scale(screen.Size())
|
||||
do := &ebiten.DrawImageOptions{GeoM: geo}
|
||||
|
||||
for _, sprite := range i.static {
|
||||
do.GeoM.Translate(geo.Apply(float64(sprite.XOffset), float64(sprite.YOffset)))
|
||||
if err := screen.DrawImage(sprite.Image, do); err != nil {
|
||||
return err
|
||||
for _, s := range i.static {
|
||||
if s.image != nil {
|
||||
do.GeoM.Translate(geo.Apply(float64(s.bounds.Min.X), float64(s.bounds.Min.X)))
|
||||
if err := screen.DrawImage(s.image, do); err != nil {
|
||||
return err
|
||||
}
|
||||
do.GeoM = geo
|
||||
}
|
||||
|
||||
if mousePt.In(s.bounds) && s.tooltip != "" {
|
||||
tooltip = s.tooltip
|
||||
}
|
||||
do.GeoM = geo
|
||||
}
|
||||
|
||||
for _, widget := range i.widgets {
|
||||
@@ -103,11 +112,16 @@ func (i *Interface) Draw(screen *ebiten.Image) error {
|
||||
do.GeoM = geo
|
||||
|
||||
if widget.hoverState && widget.Tooltip != "" {
|
||||
mouseX, mouseY := ebiten.CursorPosition()
|
||||
ebitenutil.DebugPrintAt(screen, widget.Tooltip, mouseX+16, mouseY-16)
|
||||
tooltip = widget.Tooltip
|
||||
}
|
||||
}
|
||||
|
||||
if tooltip != "" {
|
||||
cX, cY := ebiten.CursorPosition()
|
||||
|
||||
ebitenutil.DebugPrintAt(screen, tooltip, cX+16, cY-16)
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user