Skip to content

Commit 05e261a

Browse files
Use new pageCount and lineCount providers from gui for dsl
1 parent c0bb61f commit 05e261a

File tree

2 files changed

+17
-11
lines changed

2 files changed

+17
-11
lines changed

invui-kotlin/src/main/kotlin/xyz/xenondevs/invui/dsl/PagedGuiDsl.kt

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,16 @@
33
package xyz.xenondevs.invui.dsl
44

55
import xyz.xenondevs.commons.provider.Provider
6+
import xyz.xenondevs.commons.provider.flatten
67
import xyz.xenondevs.commons.provider.mutableProvider
8+
import xyz.xenondevs.commons.provider.provider
79
import xyz.xenondevs.invui.ExperimentalReactiveApi
810
import xyz.xenondevs.invui.dsl.property.MutableProviderDslProperty
911
import xyz.xenondevs.invui.dsl.property.ProviderDslProperty
1012
import xyz.xenondevs.invui.gui.Gui
1113
import xyz.xenondevs.invui.gui.IngredientPreset
1214
import xyz.xenondevs.invui.gui.PagedGui
15+
import xyz.xenondevs.invui.gui.pageCountProvider
1316
import xyz.xenondevs.invui.gui.setContent
1417
import xyz.xenondevs.invui.gui.setPage
1518
import xyz.xenondevs.invui.inventory.Inventory
@@ -42,20 +45,18 @@ internal abstract class PagedGuiDslImpl<C : Any>(
4245
presets: List<IngredientPreset>
4346
) : GuiDslImpl<PagedGui<C>, PagedGui.Builder<C>>(structure, presets), PagedGuiDsl<C> {
4447

48+
private val internalPageCount = mutableProvider { provider(0) }
49+
4550
override val content = ProviderDslProperty(emptyList<C>())
4651
override val page = MutableProviderDslProperty(0)
47-
override val pageCount = mutableProvider(0)
52+
override val pageCount = internalPageCount.flatten()
4853

4954
override fun applyToBuilder(builder: PagedGui.Builder<C>) {
5055
super.applyToBuilder(builder)
5156
builder.apply {
5257
setContent(content)
5358
setPage(page)
54-
55-
addModifier { gui ->
56-
pageCount.set(gui.pageCount)
57-
gui.addPageCountChangeHandler { _, p -> pageCount.set(p) }
58-
}
59+
addModifier { internalPageCount.set(it.pageCountProvider) }
5960
}
6061
}
6162

invui-kotlin/src/main/kotlin/xyz/xenondevs/invui/dsl/ScrollGuiDsl.kt

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,17 @@
33
package xyz.xenondevs.invui.dsl
44

55
import xyz.xenondevs.commons.provider.Provider
6+
import xyz.xenondevs.commons.provider.flatten
67
import xyz.xenondevs.commons.provider.mutableProvider
8+
import xyz.xenondevs.commons.provider.provider
79
import xyz.xenondevs.invui.ExperimentalReactiveApi
810
import xyz.xenondevs.invui.dsl.property.MutableProviderDslProperty
911
import xyz.xenondevs.invui.dsl.property.ProviderDslProperty
1012
import xyz.xenondevs.invui.gui.Gui
1113
import xyz.xenondevs.invui.gui.IngredientPreset
1214
import xyz.xenondevs.invui.gui.ScrollGui
15+
import xyz.xenondevs.invui.gui.lineCountProvider
16+
import xyz.xenondevs.invui.gui.maxLineProvider
1317
import xyz.xenondevs.invui.gui.setContent
1418
import xyz.xenondevs.invui.gui.setLine
1519
import xyz.xenondevs.invui.inventory.Inventory
@@ -43,9 +47,12 @@ internal abstract class ScrollGuiDslImpl<C : Any>(
4347
presets: List<IngredientPreset>
4448
) : GuiDslImpl<ScrollGui<C>, ScrollGui.Builder<C>>(structure, presets), ScrollGuiDsl<C> {
4549

50+
private val internalLineCount = mutableProvider { provider(0) }
51+
private val internalMaxLine = mutableProvider { provider(0) }
52+
4653
override val content = ProviderDslProperty(emptyList<C>())
4754
override val line = MutableProviderDslProperty(0)
48-
override val lineCount = mutableProvider(0)
55+
override val lineCount = internalLineCount.flatten()
4956
override val maxLine = mutableProvider(0)
5057

5158
override fun applyToBuilder(builder: ScrollGui.Builder<C>) {
@@ -55,10 +62,8 @@ internal abstract class ScrollGuiDslImpl<C : Any>(
5562
setLine(line)
5663

5764
addModifier { gui ->
58-
lineCount.set(gui.lineCount)
59-
maxLine.set(gui.maxLine)
60-
gui.addLineCountChangeHandler { _, l -> lineCount.set(l) }
61-
gui.addLineCountChangeHandler { _, _ -> maxLine.set(gui.maxLine) }
65+
internalLineCount.set(gui.lineCountProvider)
66+
internalMaxLine.set(gui.maxLineProvider)
6267
}
6368
}
6469
}

0 commit comments

Comments
 (0)