// 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) }
func CreateMenus(window *sdl.Window, surface *sdl.Surface, renderer *sdl.Renderer, controlManager *inputManager.ControlManager) inputManager.Update { progress := float64(0) mutex := sync.Mutex{} dx := 4 * surface.W / 8 startRect := sdl.Rect{surface.W / 4, 4 * surface.H / 7, 0, 2 * surface.H / 7} midBackgroundRect := sdl.Rect{surface.W / 4, 4 * surface.H / 7, dx, 2 * surface.H / 7} backgroundRect := sdl.Rect{surface.W/4 - 5, 4*surface.H/7 - 5, dx + 10, 2*surface.H/7 + 10} var mainMenu *Menu go asyncMenuCreator(renderer, &mutex, &progress, &mainMenu, surface.W, surface.H, window, controlManager) return func(state int) int { if controlManager.Player1.BF || controlManager.Player2.BF { controlManager.Running = false return -1 } mutex.Lock() startRect.W = int32(float64(dx) * progress) surface.FillRect(&backgroundRect, 0xffff0000) surface.FillRect(&midBackgroundRect, 0xff000000) surface.FillRect(&startRect, 0xffff0000) window.UpdateSurface() if progress == 1 { menuInfo := MenuInfo{0, controlManager, renderer, &sdl.Rect{0, 0, surface.W, surface.H}} inputManager.UpdateFunctions = append(inputManager.UpdateFunctions, mainMenu.Open(0, &menuInfo)) return -1 } mutex.Unlock() return 0 } }
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) }