49 lines
1,015 B
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()
|
|
}
|
|
}
|