func (g *Game) Draw(d grid.DrawableGrid) { gridutil.SingleBox(d, d.GridSize(), grid.White, grid.Black) gridutil.Text(d, image.Point{X: 2, Y: 2}, "Hello moo", grid.Red, grid.Black) var arrow int switch g.dir { case 0: arrow = 24 case 1: arrow = 26 case 2: arrow = 25 case 3: arrow = 27 } d.Set(g.x, g.y, arrow, grid.Green, grid.Black) }
func Text(d grid.DrawableGrid, start image.Point, text string, fore, back grid.Color) { x := start.X y := start.Y for { r, l := utf8.DecodeRuneInString(text) if l == 0 { return } if l == 1 && r == utf8.RuneError { panic(fmt.Errorf("Invalid utf-8")) } if l > 1 { panic(fmt.Errorf("Non-ascii character: '%c (%d)'", r, r)) } d.Set(x, y, int(r), fore, back) x++ text = text[l:] } }
func drawBox(d grid.DrawableGrid, bounds image.Rectangle, fore, back grid.Color, parts []int) { for x := bounds.Min.X + 1; x < bounds.Max.X-1; x++ { d.Set(x, bounds.Min.Y, parts[0], fore, back) d.Set(x, bounds.Max.Y-1, parts[0], fore, back) } for y := bounds.Min.Y + 1; y < bounds.Max.Y-1; y++ { d.Set(0, y, parts[1], fore, back) d.Set(bounds.Max.X-1, y, parts[1], fore, back) } d.Set(bounds.Min.X, bounds.Min.Y, parts[2], fore, back) d.Set(bounds.Max.X-1, bounds.Min.Y, parts[3], fore, back) d.Set(bounds.Max.X-1, bounds.Max.Y-1, parts[4], fore, back) d.Set(bounds.Min.X, bounds.Max.Y-1, parts[5], fore, back) }