Implement hypertext (badly)

This commit is contained in:
2020-03-22 23:29:40 +00:00
parent 971b3178d6
commit c67ee206cd
4 changed files with 82 additions and 23 deletions

View File

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