52 lines
799 B
Go
52 lines
799 B
Go
package window
|
|
|
|
import (
|
|
"log"
|
|
|
|
"github.com/veandco/go-sdl2/sdl"
|
|
)
|
|
|
|
type window struct {
|
|
SdlWindow *sdl.Window
|
|
KeyStates map[sdl.Keycode]bool
|
|
}
|
|
|
|
func NewWindow(title string) (*window, error) {
|
|
var (
|
|
err error
|
|
sdlWindow *sdl.Window
|
|
)
|
|
|
|
sdl.Do(func() {
|
|
sdlWindow, err = sdl.CreateWindow(
|
|
title,
|
|
sdl.WINDOWPOS_UNDEFINED,
|
|
sdl.WINDOWPOS_UNDEFINED,
|
|
SDL_WINDOW_WIDTH,
|
|
SDL_WINDOW_HEIGHT,
|
|
SDL_WINDOW_FLAGS)
|
|
})
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
keyStates := make(map[sdl.Keycode]bool)
|
|
gw := &window{
|
|
SdlWindow: sdlWindow,
|
|
KeyStates: keyStates,
|
|
}
|
|
|
|
return gw, nil
|
|
}
|
|
|
|
func (g *window) Cleanup() {
|
|
if g.SdlWindow != nil {
|
|
sdl.Do(func() {
|
|
err := g.SdlWindow.Destroy()
|
|
if err != nil {
|
|
log.Printf("error destroying SdlWindow: %v\n", err)
|
|
}
|
|
})
|
|
}
|
|
}
|