last_light/main.go

53 lines
838 B
Go

package main
import (
"fmt"
"log"
"mvvasilev/last_light/game"
"mvvasilev/last_light/render"
"os"
"github.com/gdamore/tcell/v2"
"github.com/gdamore/tcell/v2/views"
)
func main() {
c, err := render.CreateRenderContext()
if err != nil {
log.Fatalf("%~v", err)
}
g := game.CreateGame()
c.HandleInput(func(ev *tcell.EventKey) {
if ev.Key() == tcell.KeyCtrlC {
c.Stop()
os.Exit(0)
}
g.Input(ev)
})
defStyle := tcell.StyleDefault.Background(tcell.ColorReset).Foreground(tcell.ColorReset)
c.HandleRender(func(view views.View, deltaTime int64) {
fps := 1_000_000 / deltaTime
fpsText := render.CreateText(0, 0, 16, 1, fmt.Sprintf("%v FPS", fps), defStyle)
keepGoing := g.Tick(deltaTime)
if !keepGoing {
c.Stop()
os.Exit(0)
}
g.Draw(view)
fpsText.Draw(view)
})
c.BeginRendering()
}