Simple keyboard input & pause system

This commit is contained in:
2022-07-17 20:19:02 -04:00
parent cb1bdec005
commit 994f9a06c8
12 changed files with 418 additions and 17 deletions

View File

@ -3,15 +3,17 @@ package game
import (
"log"
"github.com/manleydev/golang-game-framework/input"
"github.com/manleydev/golang-game-framework/node"
"github.com/manleydev/golang-game-framework/rendering"
"github.com/manleydev/golang-game-framework/sdl"
)
func Run(root *node.Node, renderer rendering.Renderer2D) {
func Run(root *node.Node, renderer rendering.Renderer2D, inputHandler input.InputHandler) {
texture := sdl.NewSdlTexture2D(renderer, "gopher.bmp")
g := node.NewSprite2D(texture)
g.Name = "Gopher"
defer root.AddChild(g)
g.OnReady(func() error {
@ -19,12 +21,32 @@ func Run(root *node.Node, renderer rendering.Renderer2D) {
return nil
})
speed := 0.01
g.OnUpdate(func() error {
g.Rotation += 0.01
if inputHandler.IsKeyJustPressed(sdl.SCANCODE_SPACE) {
speed = -speed
}
g.Rotation += speed
return nil
})
g.Name = "Gopher"
controller := node.NewNode()
controller.Name = "Controller"
defer root.AddChild(&controller)
controller.OnUpdate(func() error {
if inputHandler.IsKeyJustPressed(sdl.SCANCODE_ESCAPE) {
if g.IsProcessing() {
g.SetProcessMode(node.PausedProcessMode)
} else {
g.SetProcessMode(node.DefaultProcessMode)
}
}
return nil
})
camera := node.NewCamera2D(&renderer, rendering.NewStandardCamera())
defer root.AddChild(camera)