max12354678910

Untitled

Oct 15th, 2017
117
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Go 1.54 KB | None | 0 0
  1. package GameEngine
  2.  
  3. import ("github.com/veandco/go-sdl2/sdl"
  4.     "github.com/ByteArena/box2d")
  5.  
  6. type graphicsInterface struct {
  7.     window        *sdl.Window
  8.     renderer      *sdl.Renderer
  9. }
  10.  
  11. func (r *graphicsInterface) LoadImage(path string) (Sprite){
  12.     i, _ := sdl.LoadBMP("./assets/images/test1.bmp")
  13.     image, _ := r.renderer.CreateTextureFromSurface(i)
  14.     _, _, width, height, _ := image.Query()
  15.     rect := &sdl.Rect{0, 0, width, height}
  16.     bodyDef := box2d.MakeB2BodyDef()
  17.     bodyDef.Position.Set(0, -10)
  18.     body := World.CreateBody(&bodyDef)
  19.     shape := box2d.MakeB2CircleShape()
  20.     shape.B2Shape.M_radius = 0.5
  21.     body.CreateFixture(shape, 0.0)
  22.  
  23.     return Sprite{image, rect, body}
  24. }
  25.  
  26. func (r *graphicsInterface) Blit(sprite Sprite) {
  27.     r.renderer.Copy(sprite.Texture, nil, sprite.Rect)
  28. }
  29.  
  30. func (r *graphicsInterface) Flip() {
  31.     r.renderer.Present()
  32.     r.renderer.Clear()
  33. }
  34.  
  35. func (r *graphicsInterface) Destroy() {
  36.     r.renderer.Destroy()
  37.     r.window.Destroy()
  38.     sdl.Quit()
  39. }
  40.  
  41. func CreateGraphicsInterface(fullscreen bool) (graphicsInterface){
  42.     gi := graphicsInterface{}
  43.     const windowTitle string = "GoGame"
  44.     var windowFlags uint32 = uint32(sdl.WINDOW_SHOWN)
  45.     if fullscreen {
  46.         windowFlags = windowFlags | uint32(sdl.WINDOW_FULLSCREEN_DESKTOP)
  47.     }
  48.  
  49.     window, _ := sdl.CreateWindow(windowTitle, 0, 0, 0, 0, windowFlags)
  50.     renderer, _ := sdl.CreateRenderer(window, -1, sdl.RENDERER_PRESENTVSYNC)
  51.  
  52.     gi = graphicsInterface{window: window, renderer: renderer}
  53.  
  54.     return gi
  55. }
  56.  
  57. type Sprite struct {
  58.     Texture *sdl.Texture
  59.     Rect *sdl.Rect
  60.     Body *box2d.B2Body
  61. }
Add Comment
Please, Sign In to add comment