diff --git a/game.go b/game.go index c5f017c..6df9bea 100644 --- a/game.go +++ b/game.go @@ -1,12 +1,15 @@ package main -import "github.com/hajimehoshi/ebiten/v2" +import ( + "github.com/hajimehoshi/ebiten/v2" +) type Game struct { ScreenWidth, ScreenHeight, Cellsize int Scenes map[SceneName]Scene CurrentScene SceneName Config *Config + Scale int } 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) { + game.Scale = outsideWidth / 100 return game.ScreenWidth, game.ScreenHeight } diff --git a/go.sum b/go.sum index 25f5685..094afd4 100644 --- a/go.sum +++ b/go.sum @@ -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/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.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/go.mod h1:ugSZItdV4nOxyqp56HmXwH0Ry0nBCpjnZdpDaIHdoPs= golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M= diff --git a/loader-fonts.go b/loader-fonts.go index 7ba5e28..e144762 100644 --- a/loader-fonts.go +++ b/loader-fonts.go @@ -12,6 +12,7 @@ var FontRenderer = LoadFonts("assets/fonts") const ( GameFont string = "NotoSans-Regular" + GameFontETXT string = "Noto Sans" FontSizeBig int = 48 FontSizeNormal int = 24 FontSizeSmall int = 12 @@ -25,6 +26,7 @@ type Texter struct { } func LoadFonts(dir string) Texter { + // load the font for use with ebitenui fontbytes, err := assetfs.ReadFile(dir + "/" + GameFont + ".ttf") if err != nil { log.Fatal(err) @@ -53,14 +55,26 @@ func LoadFonts(dir string) Texter { Hinting: font.HintingFull, }) + // load the font for use with etxt fontlib := etxt.NewFontLibrary() _, _, err = fontlib.ParseEmbedDirFonts(dir, assetfs) if err != nil { 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) @@ -72,7 +86,7 @@ func LoadFonts(dir string) Texter { glyphsCache := etxt.NewDefaultCache(10 * 1024 * 1024) // 10MB renderer.SetCacheHandler(glyphsCache.NewHandler()) - renderer.SetFont(fontlib.GetFont(GameFont)) + renderer.SetFont(fontlib.GetFont(GameFontETXT)) return Texter{ Renderer: renderer, diff --git a/scene-play.go b/scene-play.go index 72a2017..2466acd 100644 --- a/scene-play.go +++ b/scene-play.go @@ -9,7 +9,6 @@ import ( "os" "github.com/hajimehoshi/ebiten/v2" - "github.com/hajimehoshi/ebiten/v2/ebitenutil" "github.com/hajimehoshi/ebiten/v2/inpututil" "github.com/hajimehoshi/ebiten/v2/vector" "github.com/tlinden/golsky/rle" @@ -450,6 +449,7 @@ func (scene *ScenePlay) Draw(screen *ebiten.Image) { scene.Camera.Render(scene.World, screen) if scene.Config.Debug { + paused := "" if scene.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", ebiten.ActualTPS(), scene.TPG, GetMem(), scene.Generations, paused) - ebitenutil.DebugPrint(screen, debug) - fmt.Println(debug) + FontRenderer.Renderer.SetSizePx(10 + scene.Game.Scale/2) + 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) } }