36 lines
560 B
Go
36 lines
560 B
Go
package land
|
|
|
|
import "github.com/veandco/go-sdl2/sdl"
|
|
|
|
type Object interface {
|
|
Create()
|
|
Update()
|
|
AddChild(child Object)
|
|
GetChildren() []Object
|
|
}
|
|
|
|
type DrawableObject interface {
|
|
Draw(pen *sdl.Renderer)
|
|
}
|
|
|
|
type BaseObject struct {
|
|
Children []Object
|
|
}
|
|
|
|
func (p *BaseObject) Create() {}
|
|
|
|
func (p *BaseObject) Update() {
|
|
// Update each child
|
|
for _, child := range p.Children {
|
|
child.Update()
|
|
}
|
|
}
|
|
|
|
func (p *BaseObject) AddChild(child Object) {
|
|
p.Children = append(p.Children, child)
|
|
}
|
|
|
|
func (p *BaseObject) GetChildren() []Object {
|
|
return p.Children
|
|
}
|