use etxt for debug printing

This commit is contained in:
2024-05-28 13:37:32 +02:00
parent 80ef96ceb7
commit 106ff1970a
4 changed files with 36 additions and 7 deletions

View File

@@ -1,12 +1,15 @@
package main package main
import "github.com/hajimehoshi/ebiten/v2" import (
"github.com/hajimehoshi/ebiten/v2"
)
type Game struct { type Game struct {
ScreenWidth, ScreenHeight, Cellsize int ScreenWidth, ScreenHeight, Cellsize int
Scenes map[SceneName]Scene Scenes map[SceneName]Scene
CurrentScene SceneName CurrentScene SceneName
Config *Config Config *Config
Scale int
} }
func NewGame(config *Config, startscene SceneName) *Game { func NewGame(config *Config, startscene SceneName) *Game {
@@ -34,6 +37,7 @@ func (game *Game) GetCurrentScene() Scene {
} }
func (game *Game) Layout(outsideWidth, outsideHeight int) (int, int) { func (game *Game) Layout(outsideWidth, outsideHeight int) (int, int) {
game.Scale = outsideWidth / 100
return game.ScreenWidth, game.ScreenHeight return game.ScreenWidth, game.ScreenHeight
} }

2
go.sum
View File

@@ -16,6 +16,8 @@ github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA=
github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
github.com/tinne26/etxt v0.0.8 h1:rjb58jkMkapRGLmhBMWnT76E/nMTXC5P1Q956BRZkoc= github.com/tinne26/etxt v0.0.8 h1:rjb58jkMkapRGLmhBMWnT76E/nMTXC5P1Q956BRZkoc=
github.com/tinne26/etxt v0.0.8/go.mod h1:QM/hlNkstsKC39elTFNKAR34xsMb9QoVosf+g9wlYxM= github.com/tinne26/etxt v0.0.8/go.mod h1:QM/hlNkstsKC39elTFNKAR34xsMb9QoVosf+g9wlYxM=
github.com/tinne26/etxt v0.0.9-alpha.6.0.20240409152929-91bfc562becc h1:+USGSXbkrRAy6bz3Qm4GUczhqeXe7XlRfkRexCSFxkw=
github.com/tinne26/etxt v0.0.9-alpha.6.0.20240409152929-91bfc562becc/go.mod h1:Icbd4bDjrXag1oYIhB51CrkMYqRb7YMv0AsrOSfNKfU=
golang.org/x/image v0.16.0 h1:9kloLAKhUufZhA12l5fwnx2NZW39/we1UhBesW433jw= golang.org/x/image v0.16.0 h1:9kloLAKhUufZhA12l5fwnx2NZW39/we1UhBesW433jw=
golang.org/x/image v0.16.0/go.mod h1:ugSZItdV4nOxyqp56HmXwH0Ry0nBCpjnZdpDaIHdoPs= golang.org/x/image v0.16.0/go.mod h1:ugSZItdV4nOxyqp56HmXwH0Ry0nBCpjnZdpDaIHdoPs=
golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M= golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M=

View File

@@ -12,6 +12,7 @@ var FontRenderer = LoadFonts("assets/fonts")
const ( const (
GameFont string = "NotoSans-Regular" GameFont string = "NotoSans-Regular"
GameFontETXT string = "Noto Sans"
FontSizeBig int = 48 FontSizeBig int = 48
FontSizeNormal int = 24 FontSizeNormal int = 24
FontSizeSmall int = 12 FontSizeSmall int = 12
@@ -25,6 +26,7 @@ type Texter struct {
} }
func LoadFonts(dir string) Texter { func LoadFonts(dir string) Texter {
// load the font for use with ebitenui
fontbytes, err := assetfs.ReadFile(dir + "/" + GameFont + ".ttf") fontbytes, err := assetfs.ReadFile(dir + "/" + GameFont + ".ttf")
if err != nil { if err != nil {
log.Fatal(err) log.Fatal(err)
@@ -53,14 +55,26 @@ func LoadFonts(dir string) Texter {
Hinting: font.HintingFull, Hinting: font.HintingFull,
}) })
// load the font for use with etxt
fontlib := etxt.NewFontLibrary() fontlib := etxt.NewFontLibrary()
_, _, err = fontlib.ParseEmbedDirFonts(dir, assetfs) _, _, err = fontlib.ParseEmbedDirFonts(dir, assetfs)
if err != nil { if err != nil {
log.Fatalf("Error while loading fonts: %s", err.Error()) log.Fatalf("Error while loading fonts: %s", err.Error())
} }
if !fontlib.HasFont(GameFont) { /*
log.Fatal("missing font: " + GameFont) err = fontlib.EachFont(
func(fontName string, font *etxt.Font) error {
fmt.Printf("font: %s\n", fontName)
return nil
})
if err != nil {
log.Fatal(err)
}
*/
if !fontlib.HasFont(GameFontETXT) {
log.Fatal("missing font: " + GameFontETXT)
} }
err = fontlib.EachFont(checkMissingRunes) err = fontlib.EachFont(checkMissingRunes)
@@ -72,7 +86,7 @@ func LoadFonts(dir string) Texter {
glyphsCache := etxt.NewDefaultCache(10 * 1024 * 1024) // 10MB glyphsCache := etxt.NewDefaultCache(10 * 1024 * 1024) // 10MB
renderer.SetCacheHandler(glyphsCache.NewHandler()) renderer.SetCacheHandler(glyphsCache.NewHandler())
renderer.SetFont(fontlib.GetFont(GameFont)) renderer.SetFont(fontlib.GetFont(GameFontETXT))
return Texter{ return Texter{
Renderer: renderer, Renderer: renderer,

View File

@@ -9,7 +9,6 @@ import (
"os" "os"
"github.com/hajimehoshi/ebiten/v2" "github.com/hajimehoshi/ebiten/v2"
"github.com/hajimehoshi/ebiten/v2/ebitenutil"
"github.com/hajimehoshi/ebiten/v2/inpututil" "github.com/hajimehoshi/ebiten/v2/inpututil"
"github.com/hajimehoshi/ebiten/v2/vector" "github.com/hajimehoshi/ebiten/v2/vector"
"github.com/tlinden/golsky/rle" "github.com/tlinden/golsky/rle"
@@ -450,6 +449,7 @@ func (scene *ScenePlay) Draw(screen *ebiten.Image) {
scene.Camera.Render(scene.World, screen) scene.Camera.Render(scene.World, screen)
if scene.Config.Debug { if scene.Config.Debug {
paused := "" paused := ""
if scene.Paused { if scene.Paused {
paused = "-- paused --" paused = "-- paused --"
@@ -458,8 +458,17 @@ func (scene *ScenePlay) Draw(screen *ebiten.Image) {
debug := fmt.Sprintf("FPS: %0.2f, TPG: %d, Mem: %0.2f MB, Generations: %d %s", debug := fmt.Sprintf("FPS: %0.2f, TPG: %d, Mem: %0.2f MB, Generations: %d %s",
ebiten.ActualTPS(), scene.TPG, GetMem(), scene.Generations, paused) ebiten.ActualTPS(), scene.TPG, GetMem(), scene.Generations, paused)
ebitenutil.DebugPrint(screen, debug) FontRenderer.Renderer.SetSizePx(10 + scene.Game.Scale/2)
fmt.Println(debug) FontRenderer.Renderer.SetTarget(screen)
FontRenderer.Renderer.SetColor(scene.Black)
FontRenderer.Renderer.Draw(debug, 31, 31)
FontRenderer.Renderer.SetColor(scene.Old)
FontRenderer.Renderer.Draw(debug, 30, 30)
//ebitenutil.DebugPrint(screen, debug)
fmt.Println(debug, scene.Game.Scale)
} }
} }