mirror of
https://github.com/yeslayla/golang-game-framework.git
synced 2025-04-28 12:15:36 +02:00
Work towards deletion system
This commit is contained in:
parent
994f9a06c8
commit
987ef9502f
29
game/game.go
29
game/game.go
@ -21,19 +21,34 @@ func Run(root *node.Node, renderer rendering.Renderer2D, inputHandler input.Inpu
|
|||||||
return nil
|
return nil
|
||||||
})
|
})
|
||||||
|
|
||||||
speed := 0.01
|
rotation_speed := 0.01
|
||||||
|
speed := 0.02
|
||||||
g.OnUpdate(func() error {
|
g.OnUpdate(func() error {
|
||||||
|
|
||||||
if inputHandler.IsKeyJustPressed(sdl.SCANCODE_SPACE) {
|
if inputHandler.IsKeyJustReleased(sdl.SCANCODE_SPACE) {
|
||||||
speed = -speed
|
rotation_speed = -rotation_speed
|
||||||
}
|
}
|
||||||
|
|
||||||
g.Rotation += speed
|
if inputHandler.IsKeyDown(sdl.SCANCODE_D) {
|
||||||
|
g.Position.X += speed
|
||||||
|
}
|
||||||
|
if inputHandler.IsKeyDown(sdl.SCANCODE_A) {
|
||||||
|
g.Position.X -= speed
|
||||||
|
}
|
||||||
|
if inputHandler.IsKeyDown(sdl.SCANCODE_S) {
|
||||||
|
g.Position.Y += speed
|
||||||
|
}
|
||||||
|
if inputHandler.IsKeyDown(sdl.SCANCODE_W) {
|
||||||
|
g.Position.Y -= speed
|
||||||
|
}
|
||||||
|
|
||||||
|
g.Rotation += rotation_speed
|
||||||
return nil
|
return nil
|
||||||
})
|
})
|
||||||
|
|
||||||
controller := node.NewNode()
|
controller := node.NewNode()
|
||||||
controller.Name = "Controller"
|
controller.Name = "Controller"
|
||||||
|
controller.SetProcessMode(node.ActiveProcessMode)
|
||||||
defer root.AddChild(&controller)
|
defer root.AddChild(&controller)
|
||||||
|
|
||||||
controller.OnUpdate(func() error {
|
controller.OnUpdate(func() error {
|
||||||
@ -45,6 +60,12 @@ func Run(root *node.Node, renderer rendering.Renderer2D, inputHandler input.Inpu
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if inputHandler.IsKeyJustPressed(sdl.SCANCODE_P) {
|
||||||
|
if err := g.Free(); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@ -15,4 +15,5 @@ type INode interface {
|
|||||||
IsProcessing() bool
|
IsProcessing() bool
|
||||||
GetProcessMode() ProcessMode
|
GetProcessMode() ProcessMode
|
||||||
SetProcessMode(ProcessMode)
|
SetProcessMode(ProcessMode)
|
||||||
|
Free() error
|
||||||
}
|
}
|
||||||
|
21
node/node.go
21
node/node.go
@ -1,6 +1,7 @@
|
|||||||
package node
|
package node
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"fmt"
|
||||||
"log"
|
"log"
|
||||||
|
|
||||||
"github.com/manleydev/golang-game-framework/rendering"
|
"github.com/manleydev/golang-game-framework/rendering"
|
||||||
@ -112,6 +113,26 @@ func (node *Node) GetName() string {
|
|||||||
return node.Name
|
return node.Name
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (node *Node) Free() error {
|
||||||
|
|
||||||
|
var parent *Node = node.parent.(*Node)
|
||||||
|
if err := parent.removeChild(node); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
node.parent = nil
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func (node *Node) removeChild(target *Node) error {
|
||||||
|
for i, child := range node.children {
|
||||||
|
if child == target {
|
||||||
|
node.children = append(node.children[:i], node.children[i+1:]...)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return fmt.Errorf("Could not remove child '%s', child not found on parent!", target.Name)
|
||||||
|
}
|
||||||
|
|
||||||
func (node *Node) GetChild(index int) INode {
|
func (node *Node) GetChild(index int) INode {
|
||||||
if index < len(node.children) {
|
if index < len(node.children) {
|
||||||
return nil
|
return nil
|
||||||
|
Loading…
x
Reference in New Issue
Block a user