diff --git a/assets/sprites/door-closed.png b/assets/sprites/door-closed.png new file mode 100644 index 0000000..a2eb837 Binary files /dev/null and b/assets/sprites/door-closed.png differ diff --git a/assets/sprites/door-open.png b/assets/sprites/door-open.png new file mode 100644 index 0000000..dcc664d Binary files /dev/null and b/assets/sprites/door-open.png differ diff --git a/assets/sprites/door.ase b/assets/sprites/door.ase new file mode 100644 index 0000000..dc486ea Binary files /dev/null and b/assets/sprites/door.ase differ diff --git a/assets/sprites/switch-closed.png b/assets/sprites/switch-closed.png new file mode 100644 index 0000000..524c457 Binary files /dev/null and b/assets/sprites/switch-closed.png differ diff --git a/assets/sprites/switch-open.png b/assets/sprites/switch-open.png new file mode 100644 index 0000000..b75df7b Binary files /dev/null and b/assets/sprites/switch-open.png differ diff --git a/assets/sprites/switch.ase b/assets/sprites/switch.ase new file mode 100644 index 0000000..6a42ed6 Binary files /dev/null and b/assets/sprites/switch.ase differ diff --git a/components/pairs.go b/components/pairs.go new file mode 100644 index 0000000..0659a59 --- /dev/null +++ b/components/pairs.go @@ -0,0 +1,38 @@ +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 +}