69 lines
1.2 KiB
Go
69 lines
1.2 KiB
Go
|
|
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
|
||
|
|
}
|