Files
groovy/examples/splashmenu/menu.go

69 lines
1.2 KiB
Go
Raw Normal View History

package splashmenu
import (
"image/color"
"log"
"github.com/hajimehoshi/ebiten/v2"
"github.com/hajimehoshi/ebiten/v2/examples/resources/fonts"
"github.com/hajimehoshi/ebiten/v2/inpututil"
"github.com/hajimehoshi/ebiten/v2/text"
"golang.org/x/image/font"
"golang.org/x/image/font/opentype"
)
var (
menuFont font.Face
)
func init() {
tt, err := opentype.Parse(fonts.PressStart2P_ttf)
if err != nil {
log.Fatal(err)
}
const dpi = 72
menuFont, err = opentype.NewFace(tt, &opentype.FaceOptions{
Size: 12,
DPI: dpi,
Hinting: font.HintingVertical,
})
if err != nil {
log.Fatal(err)
}
}
type Menu struct {
bgcolor color.RGBA
completed bool
}
func NewMenu() Menu {
return Menu{
bgcolor: color.RGBA{0x33, 0x33, 0x99, 0xFF},
completed: false,
}
}
func (m *Menu) Draw(screen *ebiten.Image) {
screen.Fill(m.bgcolor)
text.Draw(screen, "menu", menuFont, 40, 40, color.White)
}
func (m *Menu) Update() error {
var keysPressed []ebiten.Key
keysPressed = inpututil.AppendPressedKeys(keysPressed[:0])
for _, k := range keysPressed {
if k == ebiten.KeyEnter {
m.completed = true
}
}
return nil
}
func (m *Menu) Completed() bool {
return m.completed
}