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 Id, Ref string } // 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 Id string } 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 Ref string // the IId of the door }