39 lines
899 B
Go
39 lines
899 B
Go
package components
|
|
|
|
import (
|
|
"github.com/hajimehoshi/ebiten/v2"
|
|
"github.com/mlange-42/arche/ecs"
|
|
)
|
|
|
|
// the Bond components binds two different entities together, one
|
|
// manipulates the other
|
|
type Bond struct {
|
|
ecs.Relation
|
|
}
|
|
|
|
// A door has a relation to a switch using the Bond component. The
|
|
// Switch opens or closes the door, depending on player actions. The
|
|
// door itself is merely dump and just does what being told.
|
|
|
|
type Door struct {
|
|
IsOpen bool
|
|
OpenSprite *ebiten.Image
|
|
CloseSprite *ebiten.Image
|
|
}
|
|
|
|
func (door *Door) Open() *ebiten.Image {
|
|
return door.OpenSprite
|
|
}
|
|
|
|
func (door *Door) Close() *ebiten.Image {
|
|
return door.CloseSprite
|
|
}
|
|
|
|
// the switch is being activated when the player runs over it, it can
|
|
// either use a timeout or just stay in its switching position
|
|
type Switch struct {
|
|
IsOpen bool
|
|
OpenSprite *ebiten.Image
|
|
CloseSprite *ebiten.Image
|
|
}
|