From 12dadbc2e4e4c4c2b15ea3c5a1c72e046421e9ec Mon Sep 17 00:00:00 2001 From: Kezz Date: Wed, 14 Aug 2024 16:57:34 +0100 Subject: [PATCH] feature: More grid position generator API (#10) - Makes GridPositionGenerator implement Iterable - Adds a utility constructor to create a GridBoxGenerator from 4 ints --- .../kotlin/com/noxcrew/interfaces/grid/GridBoxGenerator.kt | 5 +++++ .../com/noxcrew/interfaces/grid/GridPositionGenerator.kt | 6 +++++- 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/interfaces/src/main/kotlin/com/noxcrew/interfaces/grid/GridBoxGenerator.kt b/interfaces/src/main/kotlin/com/noxcrew/interfaces/grid/GridBoxGenerator.kt index 5f6e9b0..5bc316b 100644 --- a/interfaces/src/main/kotlin/com/noxcrew/interfaces/grid/GridBoxGenerator.kt +++ b/interfaces/src/main/kotlin/com/noxcrew/interfaces/grid/GridBoxGenerator.kt @@ -9,6 +9,11 @@ public data class GridBoxGenerator( private val max: GridPoint ) : GridPositionGenerator { + public constructor(x1: Int, y1: Int, x2: Int, y2: Int) : this(GridPoint(x1, y1), GridPoint(x2, y2)) + + override fun iterator(): Iterator = + (min..max).iterator() + override fun generate(): List = (min..max).toList() } diff --git a/interfaces/src/main/kotlin/com/noxcrew/interfaces/grid/GridPositionGenerator.kt b/interfaces/src/main/kotlin/com/noxcrew/interfaces/grid/GridPositionGenerator.kt index 72be421..801e89a 100644 --- a/interfaces/src/main/kotlin/com/noxcrew/interfaces/grid/GridPositionGenerator.kt +++ b/interfaces/src/main/kotlin/com/noxcrew/interfaces/grid/GridPositionGenerator.kt @@ -1,8 +1,12 @@ package com.noxcrew.interfaces.grid /** Generates a set of [GridPoint]'s. */ -public fun interface GridPositionGenerator { +public fun interface GridPositionGenerator : Iterable { /** Returns a list of [GridPoint]'s. */ public fun generate(): List + + override fun iterator(): Iterator { + return generate().iterator() + } }