59 lines
977 B
Go
59 lines
977 B
Go
package ui
|
|
|
|
import (
|
|
"log"
|
|
"runtime"
|
|
|
|
"github.com/veandco/go-sdl2/sdl"
|
|
"github.com/veandco/go-sdl2/ttf"
|
|
)
|
|
|
|
const (
|
|
windowWidth = 800
|
|
windowHeight = 600
|
|
)
|
|
|
|
func init() {
|
|
runtime.LockOSThread()
|
|
}
|
|
|
|
func Run(romPath string) {
|
|
if err := sdl.Init(sdl.INIT_EVERYTHING); err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
defer sdl.Quit()
|
|
|
|
if err := ttf.Init(); err != nil {
|
|
log.Fatal((err))
|
|
}
|
|
defer ttf.Quit()
|
|
|
|
window, err := sdl.CreateWindow(
|
|
"GB Player",
|
|
sdl.WINDOWPOS_UNDEFINED,
|
|
sdl.WINDOWPOS_UNDEFINED,
|
|
windowWidth, windowHeight,
|
|
sdl.WINDOW_SHOWN)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
defer window.Destroy()
|
|
|
|
renderer, err := sdl.CreateRenderer(window, -1, 0)
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
defer renderer.Destroy()
|
|
renderer.RenderSetVSync(true)
|
|
|
|
font, err := ttf.OpenFont("SourceCodePro.ttf", 18)
|
|
if err != nil {
|
|
log.Fatal(err)
|
|
}
|
|
defer font.Close()
|
|
font.SetStyle(ttf.STYLE_BOLD)
|
|
|
|
controller := NewController(window, renderer, font)
|
|
controller.Start(romPath)
|
|
}
|