Skip to content

Commit 2663264

Browse files
committed
feat: enhance number range functionality with OpenEndRange support
1 parent 83b640a commit 2663264

File tree

1 file changed

+48
-7
lines changed
  • surf-api-bukkit/surf-api-bukkit-api/src/main/kotlin/dev/slne/surf/surfapi/bukkit/api/dialog/builder

1 file changed

+48
-7
lines changed

surf-api-bukkit/surf-api-bukkit-api/src/main/kotlin/dev/slne/surf/surfapi/bukkit/api/dialog/builder/DialogInputBuilder.kt

Lines changed: 48 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -52,9 +52,26 @@ class DialogInputBuilder {
5252
fun <N> numberRange(
5353
key: String,
5454
range: ClosedRange<N>,
55-
block: NumberRangeDialogInput<N>.() -> Unit,
55+
block: NumberRangeDialogInput.() -> Unit,
5656
): DialogInput where N : Number, N : Comparable<N> {
57-
val input = NumberRangeDialogInput(key, range).apply(block).build()
57+
val input =
58+
NumberRangeDialogInput(key, range.start.toFloat(), range.endInclusive.toFloat()).apply(
59+
block
60+
).build()
61+
inputs.add(input)
62+
return input
63+
}
64+
65+
fun <N> numberRange(
66+
key: String,
67+
range: OpenEndRange<N>,
68+
block: NumberRangeDialogInput.() -> Unit,
69+
): DialogInput where N : Number, N : Comparable<N> {
70+
val input = NumberRangeDialogInput(
71+
key,
72+
range.start.toFloat(),
73+
(range.endExclusive.toLong() - 1).toFloat()
74+
).apply(block).build()
5875
inputs.add(input)
5976
return input
6077
}
@@ -77,6 +94,29 @@ class DialogInputBuilder {
7794
simpleNumberRange(key, range, SurfComponentBuilder(block))
7895
}
7996

97+
fun <N> simpleNumberRange(
98+
key: String,
99+
range: OpenEndRange<N>,
100+
label: Component,
101+
) where N : Number, N : Comparable<N> {
102+
val input =
103+
DialogInput.numberRange(
104+
key,
105+
label,
106+
range.start.toFloat(),
107+
(range.endExclusive.toLong() - 1).toFloat()
108+
)
109+
inputs.add(input.build())
110+
}
111+
112+
fun <N> simpleNumberRange(
113+
key: String,
114+
range: OpenEndRange<N>,
115+
block: SurfComponentBuilder.() -> Unit,
116+
) where N : Number, N : Comparable<N> {
117+
simpleNumberRange(key, range, SurfComponentBuilder(block))
118+
}
119+
80120
fun singleOption(
81121
key: String,
82122
block: DialogInputBuilder.SingleOptionDialogInput.() -> Unit,
@@ -191,10 +231,11 @@ class DialogInputBuilder {
191231
}
192232
}
193233

194-
class NumberRangeDialogInput<N>(
234+
class NumberRangeDialogInput(
195235
private val key: String,
196-
private val range: ClosedRange<N>,
197-
) where N : Number, N : Comparable<N> {
236+
private val start: Float,
237+
private val end: Float,
238+
) {
198239
var label: Component? = null
199240
var initial: Float? = null
200241
var width: @Range(from = 1, to = 1024) Int? = null
@@ -231,8 +272,8 @@ class DialogInputBuilder {
231272
val builder = DialogInput.numberRange(
232273
key,
233274
label,
234-
range.start.toFloat(),
235-
range.endInclusive.toFloat()
275+
start,
276+
end
236277
)
237278
with(builder) {
238279
initial?.let { initial(it) }

0 commit comments

Comments
 (0)