From 045ec59a63e419efce2a3c7a12810b16213d94f0 Mon Sep 17 00:00:00 2001 From: Kieran Wallbanks Date: Wed, 18 Sep 2024 14:15:44 +0100 Subject: [PATCH] feature: Add ChainGridPositionGenerator --- .../grid/ChainGridPositionGenerator.kt | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 interfaces/src/main/kotlin/com/noxcrew/interfaces/grid/ChainGridPositionGenerator.kt 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() + } +}