75 lines
1.4 KiB
Go
75 lines
1.4 KiB
Go
|
package doodle
|
||
|
|
||
|
import (
|
||
|
"git.kirsle.net/apps/doodle/events"
|
||
|
"git.kirsle.net/apps/doodle/render"
|
||
|
"git.kirsle.net/apps/doodle/ui"
|
||
|
)
|
||
|
|
||
|
// MainScene implements the main menu of Doodle.
|
||
|
type MainScene struct {
|
||
|
}
|
||
|
|
||
|
// Name of the scene.
|
||
|
func (s *MainScene) Name() string {
|
||
|
return "Main"
|
||
|
}
|
||
|
|
||
|
// Setup the scene.
|
||
|
func (s *MainScene) Setup(d *Doodle) error {
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
// Loop the editor scene.
|
||
|
func (s *MainScene) Loop(d *Doodle, ev *events.State) error {
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
// Draw the pixels on this frame.
|
||
|
func (s *MainScene) Draw(d *Doodle) error {
|
||
|
// Clear the canvas and fill it with white.
|
||
|
d.Engine.Clear(render.White)
|
||
|
|
||
|
label := ui.NewLabel(render.Text{
|
||
|
Text: "Doodle v" + Version,
|
||
|
Size: 26,
|
||
|
Color: render.Pink,
|
||
|
Stroke: render.SkyBlue,
|
||
|
Shadow: render.Black,
|
||
|
})
|
||
|
label.Compute(d.Engine)
|
||
|
label.MoveTo(render.Point{
|
||
|
X: (d.width / 2) - (label.Size().W / 2),
|
||
|
Y: 120,
|
||
|
})
|
||
|
label.Present(d.Engine)
|
||
|
|
||
|
button := ui.NewButton(*ui.NewLabel(render.Text{
|
||
|
Text: "New Map",
|
||
|
Size: 14,
|
||
|
Color: render.Black,
|
||
|
}))
|
||
|
button.Compute(d.Engine)
|
||
|
|
||
|
button.MoveTo(render.Point{
|
||
|
X: (d.width / 2) - (button.Size().W / 2),
|
||
|
Y: 200,
|
||
|
})
|
||
|
button.Present(d.Engine)
|
||
|
|
||
|
button.SetText("Load Map")
|
||
|
button.Compute(d.Engine)
|
||
|
button.MoveTo(render.Point{
|
||
|
X: (d.width / 2) - (button.Size().W / 2),
|
||
|
Y: 260,
|
||
|
})
|
||
|
button.Present(d.Engine)
|
||
|
|
||
|
return nil
|
||
|
}
|
||
|
|
||
|
// Destroy the scene.
|
||
|
func (s *MainScene) Destroy() error {
|
||
|
return nil
|
||
|
}
|