diff --git a/interfaces/src/main/kotlin/com/noxcrew/interfaces/grid/ChainGridPositionGenerator.kt b/interfaces/src/main/kotlin/com/noxcrew/interfaces/grid/ChainGridPositionGenerator.kt new file mode 100644 index 0000000..743b46f --- /dev/null +++ b/interfaces/src/main/kotlin/com/noxcrew/interfaces/grid/ChainGridPositionGenerator.kt @@ -0,0 +1,20 @@ +package com.noxcrew.interfaces.grid + +/** A grid position generator that chains together two other generators. */ +public data class ChainGridPositionGenerator( + /** The first generator. */ + private val first: GridPositionGenerator, + /** The second generator. */ + private val second: GridPositionGenerator, +) : GridPositionGenerator { + + public companion object { + /** Adds two grid position generators together. */ + public operator fun GridPositionGenerator.plus(second: GridPositionGenerator): ChainGridPositionGenerator = + ChainGridPositionGenerator(this, second) + } + + override fun generate(): List { + return first.generate() + second.generate() + } +}