mirror of
https://github.com/yeslayla/golang-game-framework.git
synced 2025-07-07 11:13:47 +02:00
Simple keyboard input & pause system
This commit is contained in:
28
game/game.go
28
game/game.go
@ -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)
|
||||
|
Reference in New Issue
Block a user