project-ely/internal/game/window/window.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)
}
})
}
}