1
0
Fork 0
tetris-go/main.go

49 lines
1,015 B
Go

package main
import (
"tetris/assets"
"tetris/engine/audio"
"tetris/engine/graphics"
"tetris/engine/render"
"tetris/game/state/handlers"
"tetris/game/state/machine"
rl "github.com/gen2brain/raylib-go/raylib"
)
func main() {
render.Init(render.Config{
Title: "Tetris",
WindowWidth: 685,
WindowHeight: 600,
RenderWidth: 685,
RenderHeight: 600,
ScaleFlags: render.SCALE_INTEGER,
})
defer render.Exit()
audio.Init()
defer audio.Exit()
audio.LoadLibrary(assets.LoadSound())
// Load texture
texture := graphics.LoadTextureFromMemory(".png", assets.Sprite)
defer rl.UnloadTexture(texture)
render.SetTexture(texture)
render.SetFont(&assets.Font)
// Setup state machine.
fsm := machine.New()
fsm.Register("menu", &handlers.Menu{})
fsm.Register("gameover", &handlers.GameOver{})
fsm.Register("gameplay", handlers.NewGamePlay())
fsm.Start("gameplay")
// Enter game loop
for !rl.WindowShouldClose() {
audio.Update()
fsm.Update(rl.GetFrameTime())
fsm.Render()
}
}