// RenderGraphic draws the Graphic, g, on the screen at postion (x,y). // 'width' and 'height' specifiy the width and height of the Graphic, g. // // RenderGraphic will panic if: // 1. The Graphic, g, does not contain a Graphic type. // // 2. The toolbox has not been initialised. // // 3. Any one of x, y, width or height are negative func RenderGraphic(g Graphic, x, y, width, height int) { if !initialised { // this stops execution here, so ne need for an else after the if panic(notInitialisedMessage) } if g == nil { panic(nilGraphicMessage) } if x < 0 || y < 0 || width < 0 || height < 0 { panic("One of x, y, width or height is negative.") } var src, dst sdl.Rect src.X = 0 src.Y = 0 src.W = int32(width) src.H = int32(height) dst.X = int32(x) dst.Y = int32(y) dst.W = int32(width) dst.H = int32(height) renderer.Copy(g, &src, &dst) }
func renderGameOver() { var src, dst sdl.Rect src.X = 0 src.Y = 0 src.W = int32(gameOverW) src.H = int32(gameOverH) dst.X = int32(gameOverX) dst.Y = int32(gameOverY) dst.W = int32(gameOverW) dst.H = int32(gameOverH) renderer.Copy(gameOverGfx, &src, &dst) }
func renderComputersScore() { var src, dst sdl.Rect src.X = 0 src.Y = 0 src.W = int32(scoreW) src.H = int32(scoreH) dst.X = int32(computersScoreX) dst.Y = int32(computersScoreY) dst.W = int32(scoreW) dst.H = int32(scoreH) renderer.Copy(scoresGfx[computersScore], &src, &dst) }
// DrawText is func (T *TextWidget) DrawText(text string, rect *sdl.Rect, colorName string, fontName string) { if strings.TrimSpace(text) == "" { return } // log.Println("DRAW:", text, colorName, fontName) font, ok := T.Fonts[fontName] if !ok { font = T.Fonts["default"] } color, ok := T.Colors[colorName] if !ok { colorHex, err := hex.DecodeString(colorName[1:]) if err != nil || len(colorHex) < 3 { color = T.Colors["foreground"] } else { T.AddColor(colorName, colorHex[0], colorHex[1], colorHex[2]) color = T.Colors[colorName] } } message, err := font.RenderUTF8_Blended(text, color) if err != nil { log.Fatal(err) } defer message.Free() srcRect := sdl.Rect{} message.GetClipRect(&srcRect) if fontName != "default" { _, h, _ := T.Fonts["default"].SizeUTF8("A") _, h2, _ := font.SizeUTF8("A") rect.Y -= int32((h2 - h) / 2) } message.Blit(&srcRect, T.Surface, rect) }
func renderBall() { var src, dst sdl.Rect src.X = 0 src.Y = 0 src.W = int32(ballW) src.H = int32(ballH) dst.X = int32(ballX) dst.Y = int32(ballY) dst.W = int32(ballW) dst.H = int32(ballH) renderer.Copy(ball, &src, &dst) }
func renderComputersBat() { var src, dst sdl.Rect src.X = 0 src.Y = 0 src.W = int32(computersBatW) src.H = int32(computersBatH) dst.X = int32(computersBatX) dst.Y = int32(computersBatY) dst.W = int32(computersBatW) dst.H = int32(computersBatH) renderer.Copy(computersBat, &src, &dst) }