From 6e368f066feee7702039620c1a1721f7dd60da12 Mon Sep 17 00:00:00 2001 From: Marvin Blum Date: Sat, 21 May 2016 13:53:27 +0200 Subject: [PATCH] Started texture mapped fonts demo. --- demo/text/assets/dejavu.json | 28 ++++++++++++++++++ demo/text/assets/dejavu.png | Bin 0 -> 23476 bytes demo/text/text.go | 55 +++++++++++++++++++++++++++++++++++ 3 files changed, 83 insertions(+) create mode 100644 demo/text/assets/dejavu.json create mode 100644 demo/text/assets/dejavu.png create mode 100644 demo/text/text.go diff --git a/demo/text/assets/dejavu.json b/demo/text/assets/dejavu.json new file mode 100644 index 0000000..6201777 --- /dev/null +++ b/demo/text/assets/dejavu.json @@ -0,0 +1,28 @@ +[ + { + "char": "A", + "x": 0, + "y": 0 + }, + { + "char": "b", + "x": 1, + "y": 0 + }, + { + "char": "e", + "x": 2, + "y": 0 + }, + { + "char": "r", + "x": 0, + "y": 1 + }, + { + "char": "'", + "x": 3, + "y": 0, + "offset": 0.5 + } +] diff --git a/demo/text/assets/dejavu.png b/demo/text/assets/dejavu.png new file mode 100644 index 0000000000000000000000000000000000000000..1b0ba3207de67a5a3c460c57b0c335ce189992f4 GIT binary patch literal 23476 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 z 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 literal 0 HcmV?d00001 diff --git a/demo/text/text.go b/demo/text/text.go new file mode 100644 index 0000000..6924f5e --- /dev/null +++ b/demo/text/text.go @@ -0,0 +1,55 @@ +package main + +import ( + "github.com/DeKugelschieber/go-game" +) + +const ( + gopher_path = "src/github.com/DeKugelschieber/go-game/demo/sprite/assets/gopher.png" +) + +type Game struct{} + +func (g *Game) Setup() { + // load texture + _, err := goga.LoadRes(gopher_path) + + if err != nil { + panic(err) + } + + // create sprite + tex, err := goga.GetTex("gopher.png") + + if err != nil { + panic(err) + } + + sprite := goga.NewSprite(tex) + renderer, ok := goga.GetSystemByName("spriteRenderer").(*goga.SpriteRenderer) + + if !ok { + panic("Could not find renderer") + } + + renderer.Add(sprite.Actor, sprite.Pos2D, sprite.Tex) + + culling, ok := goga.GetSystemByName("culling2d").(*goga.Culling2D) + + if !ok { + panic("Could not find culling") + } + + culling.Add(sprite.Actor, sprite.Pos2D) +} + +func (g *Game) Update(delta float64) {} + +func main() { + game := Game{} + options := goga.RunOptions{ClearColor: goga.Vec4{1, 1, 1, 0}, + Resizable: true, + SetViewportOnResize: true, + ExitOnClose: true} + goga.Run(&game, &options) +}