Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package gocos2d
- import (
- "github.com/jteeuwen/glfw"
- "time"
- )
- type director struct {
- stack sceneStack
- glWindow window
- }
- func (d *director) Push(s *Scene) {
- d.stack.push(s)
- }
- func (d *director) Replace(s *Scene) {
- d.stack.replace(s)
- }
- func (d *director) Pop() {
- d.stack.pop()
- }
- func (d *director) Get() *Scene {
- return d.stack.currentScene
- }
- func (d *director) SetWindowParams(title string, width, height int, b Bits, fullscreen bool) {
- if title == "" {
- d.glWindow.title = "Gocos2D"
- } else {
- d.glWindow.title = title
- }
- d.glWindow.width = width
- d.glWindow.height = height
- d.glWindow.redBit = b.red
- d.glWindow.greenBit = b.green
- d.glWindow.blueBit = b.blue
- d.glWindow.alphaBit = b.alpha
- d.glWindow.depthBit = b.depth
- d.glWindow.stencilBit = b.stencil
- d.glWindow.fullscreen = fullscreen
- }
- func (d *director) Start() {
- d.initGL()
- d.ClearColor(0, 0, 0, 0)
- }
- func (d *director) Cleanup() {
- println("Shutting Down")
- time.Sleep(500 * time.Millisecond)
- glfw.CloseWindow()
- glfw.Terminate()
- println("Gocos2D ended correctly.")
- }
- func (d *director) Update() {
- if glfw.WindowParam(glfw.Opened) != 1 {
- Running = false
- }
- }
- func (d *director) Draw() {
- if glfw.WindowParam(glfw.Opened) == 1 {
- glfw.SwapBuffers()
- }
- }
- package gocos2d
- import (
- "bytes"
- "github.com/jteeuwen/glfw"
- )
- var (
- Running = true
- directorInitialized = false
- imageBankInitialized = false
- )
- /*The Director is a singleton that is designed to simplify how you manage your game.
- It is used to initialize a openGL context and It maintains a stack of scenes.
- You are able to update and draw your scenes directly by calling Director.Update
- and Director.Draw in your game loop.*/
- func Director() *director {
- if !directorInitialized {
- d := new(director)
- d.stack.init()
- directorInitialized = true
- return d
- }
- println("You can only have one Director.")
- Running = false
- return nil
- }
- func ImageBank() *imageBank {
- if !imageBankInitialized {
- bank := new(imageBank)
- bank.cache = make(map[string]*bytes.Buffer)
- imageBankInitialized = true
- return bank
- }
- println("You can only have one ImageBank.")
- return nil
- }
- func Texture2d(img *bytes.Buffer) (*texture2d, error) {
- tex := new(texture2d)
- var err error
- tex.texture = new(glfw.Image)
- tex.texture, err = glfw.ReadMemoryImage(img.Bytes(), 0)
- if err != nil {
- return nil, err
- }
- return tex, nil
- }
- func Sprite(img *bytes.Buffer) *sprite {
- s := new(sprite)
- var err error
- s.Texture2d, err = Texture2d(img)
- if err != nil {
- println(err)
- }
- return s
- }
- package main
- import (
- "code.google.com/p/gocos2d"
- "fmt"
- )
- var director = gocos2d.Director()
- var bank = gocos2d.ImageBank()
- func main() {
- director.Start()
- load()
- director.ClearColor(0, .25, 1, 0)
- for gocos2d.Running {
- director.Update()
- director.Draw()
- }
- director.Cleanup()
- }
- func load() {
- bank.Cache("groundhog.png", "groundhog")
- groundhog := gocos2d.Sprite(bank.Get("groundhog"))
- fmt.Println("sprite:", groundhog.Texture2d)
- }
Add Comment
Please, Sign In to add comment