48 lines
1.1 KiB
Go
48 lines
1.1 KiB
Go
package pncdsl
|
|
|
|
import (
|
|
"github.com/hajimehoshi/ebiten/v2"
|
|
"github.com/hajimehoshi/ebiten/v2/inpututil"
|
|
"github.com/hajimehoshi/ebiten/v2/vector"
|
|
)
|
|
|
|
// HotspotDebug overlays a colored outline on every hotspot of the current
|
|
// scene. F1 toggles it at runtime; the default is off.
|
|
type HotspotDebug struct {
|
|
Name string
|
|
Enabled bool
|
|
// ToggleKey, if non-zero, overrides the default F1 toggle.
|
|
ToggleKey ebiten.Key
|
|
}
|
|
|
|
func (h *HotspotDebug) GetName() string { return h.Name }
|
|
|
|
func (h *HotspotDebug) Tick(ctx *UICtx) {
|
|
key := h.ToggleKey
|
|
if key == 0 {
|
|
key = ebiten.KeyF1
|
|
}
|
|
if inpututil.IsKeyJustPressed(key) {
|
|
h.Enabled = !h.Enabled
|
|
}
|
|
}
|
|
|
|
func (h *HotspotDebug) Draw(dst *ebiten.Image, ctx *UICtx) {
|
|
if !h.Enabled {
|
|
return
|
|
}
|
|
g := ctx.Game
|
|
if g.currentScene == "" {
|
|
return
|
|
}
|
|
col := g.Theme().HotspotOutline
|
|
s := g.SceneManager.MustGet(g.currentScene)
|
|
for _, hs := range s.Hotspots {
|
|
b := hs.Area.Bounds()
|
|
vector.StrokeRect(dst, float32(b.X), float32(b.Y), float32(b.W), float32(b.H), 1, col, false)
|
|
if hs.Label != "" {
|
|
g.DrawText(dst, hs.Label, int(b.X)+1, int(b.Y)+1, col)
|
|
}
|
|
}
|
|
}
|