stone/examples/hello/main.go
2022-11-06 15:59:06 -05:00

61 lines
1.4 KiB
Go

package main
import "fmt"
import "time"
import "git.tebibyte.media/sashakoshka/stone"
import _ "git.tebibyte.media/sashakoshka/stone/backends/pixel"
func main () {
application := stone.Application { }
err := application.Run(run)
if err != nil { panic(err) }
}
func run (application *stone.Application) {
currentTime := time.Time { }
frameDelay := time.Second / 2
textBuffer := ""
for {
typed := application.Typed()
textBuffer += typed
shouldRender :=
application.Resized() ||
time.Since(currentTime) > frameDelay ||
len(typed) > 0
if shouldRender {
currentTime = time.Now()
application.ResetDot()
fmt.Fprintln(application, "hellorld!")
hour := currentTime.Hour()
minute := currentTime.Minute()
second := currentTime.Second()
application.SetRune(0, 1, rune(hour / 10 + 48))
application.SetRune(1, 1, rune(hour % 10 + 48))
application.SetRune(2, 1, ':')
application.SetRune(3, 1, rune(minute / 10 + 48))
application.SetRune(4, 1, rune(minute % 10 + 48))
application.SetRune(5, 1, ':')
application.SetRune(6, 1, rune(second / 10 + 48))
application.SetRune(7, 1, rune(second % 10 + 48))
application.Dot.X = 0
application.Dot.Y = 2
fmt.Fprintln(application, textBuffer)
}
if application.Pressed(stone.MouseButtonLeft) {
x, y := application.MousePosition()
application.SetRune(x, y, '#')
}
if !application.Await(frameDelay) { break }
}
}