mirror of
				https://github.com/yeslayla/golang-game-framework.git
				synced 2025-11-04 08:43:06 +01:00 
			
		
		
		
	Simple keyboard input & pause system
This commit is contained in:
		@ -1,7 +1,18 @@
 | 
			
		||||
package node
 | 
			
		||||
 | 
			
		||||
type ProcessMode uint8
 | 
			
		||||
 | 
			
		||||
const (
 | 
			
		||||
	DefaultProcessMode ProcessMode = iota
 | 
			
		||||
	PausedProcessMode
 | 
			
		||||
	ActiveProcessMode
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
type INode interface {
 | 
			
		||||
	GetName() string
 | 
			
		||||
	Update() error
 | 
			
		||||
	ready(INode) error
 | 
			
		||||
	IsProcessing() bool
 | 
			
		||||
	GetProcessMode() ProcessMode
 | 
			
		||||
	SetProcessMode(ProcessMode)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										37
									
								
								node/node.go
									
									
									
									
									
								
							
							
						
						
									
										37
									
								
								node/node.go
									
									
									
									
									
								
							@ -7,9 +7,10 @@ import (
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
type Node struct {
 | 
			
		||||
	Name     string
 | 
			
		||||
	children []INode
 | 
			
		||||
	parent   INode
 | 
			
		||||
	Name        string
 | 
			
		||||
	children    []INode
 | 
			
		||||
	parent      INode
 | 
			
		||||
	processMode ProcessMode
 | 
			
		||||
 | 
			
		||||
	onReadyMethods  []func() error
 | 
			
		||||
	onUpdateMethods []func() error
 | 
			
		||||
@ -41,9 +42,11 @@ func (node *Node) Update() error {
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	for _, updateMethod := range node.onUpdateMethods {
 | 
			
		||||
		if err := updateMethod(); err != nil {
 | 
			
		||||
			return err
 | 
			
		||||
	if node.IsProcessing() {
 | 
			
		||||
		for _, updateMethod := range node.onUpdateMethods {
 | 
			
		||||
			if err := updateMethod(); err != nil {
 | 
			
		||||
				return err
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
@ -86,6 +89,25 @@ func (node *Node) OnDraw2D(callback func(rendering.Renderer2D) error) {
 | 
			
		||||
	node.onDraw2dMethods = append(node.onDraw2dMethods, callback)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (node *Node) IsProcessing() bool {
 | 
			
		||||
	if node.processMode == DefaultProcessMode {
 | 
			
		||||
		if node.parent != nil {
 | 
			
		||||
			return node.parent.IsProcessing()
 | 
			
		||||
		}
 | 
			
		||||
		return true
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return node.processMode == ActiveProcessMode
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (node *Node) GetProcessMode() ProcessMode {
 | 
			
		||||
	return node.processMode
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (node *Node) SetProcessMode(mode ProcessMode) {
 | 
			
		||||
	node.processMode = mode
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func (node *Node) GetName() string {
 | 
			
		||||
	return node.Name
 | 
			
		||||
}
 | 
			
		||||
@ -115,6 +137,7 @@ func (node *Node) GetParent() INode {
 | 
			
		||||
 | 
			
		||||
func NewNode() Node {
 | 
			
		||||
	return Node{
 | 
			
		||||
		children: []INode{},
 | 
			
		||||
		children:    []INode{},
 | 
			
		||||
		processMode: DefaultProcessMode,
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user