Guest User

Untitled

a guest
Sep 15th, 2018
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Go 3.48 KB | None | 0 0
  1. package gocos2d
  2.  
  3. import (
  4.     "github.com/jteeuwen/glfw"
  5.     "time"
  6. )
  7.  
  8. type director struct {
  9.     stack       sceneStack
  10.     glWindow    window
  11. }
  12.  
  13. func (d *director) Push(s *Scene) {
  14.     d.stack.push(s)
  15. }
  16. func (d *director) Replace(s *Scene) {
  17.     d.stack.replace(s)
  18. }
  19. func (d *director) Pop() {
  20.     d.stack.pop()
  21. }
  22. func (d *director) Get() *Scene {
  23.     return d.stack.currentScene
  24. }
  25. func (d *director) SetWindowParams(title string, width, height int, b Bits, fullscreen bool) {
  26.     if title == "" {
  27.         d.glWindow.title = "Gocos2D"
  28.     } else {
  29.         d.glWindow.title = title
  30.     }
  31.     d.glWindow.width = width
  32.     d.glWindow.height = height
  33.     d.glWindow.redBit = b.red
  34.     d.glWindow.greenBit = b.green
  35.     d.glWindow.blueBit = b.blue
  36.     d.glWindow.alphaBit = b.alpha
  37.     d.glWindow.depthBit = b.depth
  38.     d.glWindow.stencilBit = b.stencil
  39.     d.glWindow.fullscreen = fullscreen
  40. }
  41. func (d *director) Start() {
  42.     d.initGL()
  43.     d.ClearColor(0, 0, 0, 0)
  44. }
  45. func (d *director) Cleanup() {
  46.     println("Shutting Down")
  47.     time.Sleep(500 * time.Millisecond)
  48.     glfw.CloseWindow()
  49.     glfw.Terminate()
  50.     println("Gocos2D ended correctly.")
  51. }
  52. func (d *director) Update() {
  53.     if glfw.WindowParam(glfw.Opened) != 1 {
  54.         Running = false
  55.     }
  56. }
  57. func (d *director) Draw() {
  58.     if glfw.WindowParam(glfw.Opened) == 1 {
  59.         glfw.SwapBuffers()
  60.     }
  61. }
  62.  
  63.  
  64. package gocos2d
  65.  
  66. import (
  67.         "bytes"
  68.         "github.com/jteeuwen/glfw"
  69.        
  70. )
  71.  
  72. var (
  73.         Running              = true
  74.         directorInitialized  = false
  75.         imageBankInitialized = false
  76. )
  77.  
  78. /*The Director is a singleton that is designed to simplify how you manage your game.
  79. It is used to initialize a openGL context and It maintains a stack of scenes.
  80. You are able to update and draw your scenes directly by calling Director.Update
  81. and Director.Draw in your game loop.*/
  82. func Director() *director {
  83.         if !directorInitialized {
  84.                 d := new(director)
  85.                 d.stack.init()
  86.                 directorInitialized = true
  87.                 return d
  88.         }
  89.         println("You can only have one Director.")
  90.         Running = false
  91.         return nil
  92. }
  93. func ImageBank() *imageBank {
  94.         if !imageBankInitialized {
  95.                 bank := new(imageBank)
  96.                 bank.cache = make(map[string]*bytes.Buffer)
  97.                 imageBankInitialized = true
  98.                 return bank
  99.         }
  100.         println("You can only have one ImageBank.")
  101.         return nil
  102. }
  103. func Texture2d(img *bytes.Buffer) (*texture2d, error) {
  104.         tex := new(texture2d)
  105.         var err error
  106.         tex.texture = new(glfw.Image)
  107.         tex.texture, err = glfw.ReadMemoryImage(img.Bytes(), 0)
  108.         if err != nil {
  109.                 return nil, err
  110.         }
  111.         return tex, nil
  112. }
  113. func Sprite(img *bytes.Buffer) *sprite {
  114.         s := new(sprite)
  115.         var err error
  116.         s.Texture2d, err = Texture2d(img)
  117.         if err != nil {
  118.                 println(err)
  119.         }
  120.         return s
  121. }
  122.  
  123.  
  124.  
  125. package main
  126.  
  127. import (
  128.         "code.google.com/p/gocos2d"
  129.         "fmt"
  130. )
  131.  
  132. var director = gocos2d.Director()
  133. var bank = gocos2d.ImageBank()
  134.  
  135. func main() {
  136.         director.Start()
  137.         load()
  138.         director.ClearColor(0, .25, 1, 0)
  139.         for gocos2d.Running {
  140.                 director.Update()
  141.                 director.Draw()
  142.         }
  143.         director.Cleanup()
  144. }
  145.  
  146. func load() {
  147.         bank.Cache("groundhog.png", "groundhog")
  148.         groundhog := gocos2d.Sprite(bank.Get("groundhog"))
  149.         fmt.Println("sprite:", groundhog.Texture2d)
  150. }
Add Comment
Please, Sign In to add comment