Skip to content

Commit 4842f28

Browse files
DSL: move params of onXY functions to receiver
1 parent a25749d commit 4842f28

File tree

4 files changed

+31
-23
lines changed

4 files changed

+31
-23
lines changed

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

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,16 @@ import xyz.xenondevs.invui.window.CraftingWindow
1212
fun craftingWindow(viewer: Player, craftingWindow: CraftingWindowDsl.() -> Unit): CraftingWindow =
1313
CraftingWindowDslImpl(viewer).apply(craftingWindow).build()
1414

15+
@ExperimentalDslApi
16+
class RecipeClick internal constructor(val recipeKey: Key)
17+
1518
@ExperimentalDslApi
1619
sealed interface CraftingWindowDsl : SplitWindowDsl {
1720

1821
val craftingGui: GuiDslProperty
1922
val resultGui: GuiDslProperty
2023

21-
fun onRecipeClick(handler: (recipeKey: Key) -> Unit)
24+
fun onRecipeClick(handler: RecipeClick.() -> Unit)
2225

2326
}
2427

@@ -29,9 +32,9 @@ internal class CraftingWindowDslImpl(
2932

3033
override val craftingGui = GuiDslProperty(3, 3)
3134
override val resultGui = GuiDslProperty(1, 1)
32-
private val recipeClickHandlers = mutableListOf<(Key) -> Unit>()
35+
private val recipeClickHandlers = mutableListOf<RecipeClick.() -> Unit>()
3336

34-
override fun onRecipeClick(handler: (Key) -> Unit) {
37+
override fun onRecipeClick(handler: RecipeClick.() -> Unit) {
3538
recipeClickHandlers += handler
3639
}
3740

@@ -42,7 +45,7 @@ internal class CraftingWindowDslImpl(
4245
builder.apply {
4346
setCraftingGui(craftingGui.value)
4447
setResultGui(resultGui.value)
45-
recipeClickHandlers.forEach { addRecipeClickHandler(it) }
48+
recipeClickHandlers.forEach { handler -> addRecipeClickHandler { RecipeClick(it).handler() } }
4649
}
4750
}
4851

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

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22

33
package xyz.xenondevs.invui.dsl
44

5-
import net.kyori.adventure.key.Key
65
import org.bukkit.entity.Player
76
import xyz.xenondevs.invui.ExperimentalReactiveApi
87
import xyz.xenondevs.invui.dsl.property.GuiDslProperty
@@ -23,7 +22,7 @@ sealed interface FurnaceWindowDsl : SplitWindowDsl {
2322
val cookProgress: ProviderDslProperty<Double>
2423
val burnProgress: ProviderDslProperty<Double>
2524

26-
fun onRecipeClick(handler: (Key) -> Unit)
25+
fun onRecipeClick(handler: RecipeClick.() -> Unit)
2726

2827
}
2928

@@ -36,9 +35,9 @@ internal class FurnaceWindowDslImpl(
3635
override val resultGui = GuiDslProperty(1, 1)
3736
override val cookProgress = ProviderDslProperty(0.0)
3837
override val burnProgress = ProviderDslProperty(0.0)
39-
private val recipeClickHandlers = mutableListOf<(Key) -> Unit>()
38+
private val recipeClickHandlers = mutableListOf<RecipeClick.() -> Unit>()
4039

41-
override fun onRecipeClick(handler: (Key) -> Unit) {
40+
override fun onRecipeClick(handler: RecipeClick.() -> Unit) {
4241
recipeClickHandlers += handler
4342
}
4443

@@ -51,7 +50,7 @@ internal class FurnaceWindowDslImpl(
5150
setResultGui(resultGui.value)
5251
setCookProgress(cookProgress.delegate)
5352
setBurnProgress(burnProgress.delegate)
54-
recipeClickHandlers.forEach { addRecipeClickHandler(it) }
53+
recipeClickHandlers.forEach { handler -> addRecipeClickHandler { RecipeClick(it).handler() } }
5554
}
5655
}
5756

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

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,37 +13,40 @@ import xyz.xenondevs.invui.item.setItemProvider
1313
fun item(item: ItemDsl.() -> Unit): Item =
1414
ItemDslImpl().apply(item).build()
1515

16+
@ExperimentalDslApi
17+
class BundleSelect internal constructor(val player: Player, val bundleSlot: Int)
18+
1619
@ItemDslMarker
1720
@ExperimentalDslApi
1821
sealed interface ItemDsl {
1922

2023
val itemProvider: ItemProviderDslProperty
2124

22-
fun onClick(handler: (click: Click) -> Unit)
25+
fun onClick(handler: Click.() -> Unit)
2326

24-
fun onBundleSelect(handler: (player: Player, slot: Int) -> Unit)
27+
fun onBundleSelect(handler: BundleSelect.() -> Unit)
2528

2629
}
2730

2831
@ExperimentalDslApi
2932
internal class ItemDslImpl : ItemDsl {
3033

3134
override val itemProvider = ItemProviderDslProperty()
32-
private val clickHandlers = mutableListOf<(Click) -> Unit>()
33-
private val bundleSelectHandlers = mutableListOf<(Player, Int) -> Unit>()
35+
private val clickHandlers = mutableListOf<Click.() -> Unit>()
36+
private val bundleSelectHandlers = mutableListOf<BundleSelect.() -> Unit>()
3437

35-
override fun onClick(handler: (click: Click) -> Unit) {
38+
override fun onClick(handler: Click.() -> Unit) {
3639
clickHandlers += handler
3740
}
3841

39-
override fun onBundleSelect(handler: (player: Player, slot: Int) -> Unit) {
42+
override fun onBundleSelect(handler: BundleSelect.() -> Unit) {
4043
bundleSelectHandlers += handler
4144
}
4245

4346
fun build() = Item.builder().apply {
4447
setItemProvider(itemProvider.delegate)
4548
clickHandlers.forEach { addClickHandler(it) }
46-
bundleSelectHandlers.forEach { addBundleSelectHandler(it) }
49+
bundleSelectHandlers.forEach { handler -> addBundleSelectHandler { player, bundleSlot -> BundleSelect(player, bundleSlot).handler() }}
4750
}.build()
4851

4952
}

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

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,9 @@ fun window(viewer: Player, window: NormalSplitWindowDsl.() -> Unit): Window =
2323
fun mergedWindow(viewer: Player, window: NormalMergedWindowDsl.() -> Unit): Window =
2424
NormalMergedWindowDslImpl(viewer).apply(window).build()
2525

26+
@ExperimentalDslApi
27+
class Close internal constructor(val reason: InventoryCloseEvent.Reason)
28+
2629
@ExperimentalDslApi
2730
@WindowDslMarker
2831
sealed interface WindowDsl {
@@ -33,9 +36,9 @@ sealed interface WindowDsl {
3336

3437
fun onOpen(handler: () -> Unit)
3538

36-
fun onClose(handler: (reason: InventoryCloseEvent.Reason) -> Unit)
39+
fun onClose(handler: Close.() -> Unit)
3740

38-
fun onOutsideClick(handler: (ClickEvent) -> Unit)
41+
fun onOutsideClick(handler: ClickEvent.() -> Unit)
3942

4043
}
4144

@@ -69,18 +72,18 @@ internal abstract class AbstractWindowDsl<W : Window, B : Window.Builder<W, B>>(
6972
override val closeable = ProviderDslProperty(true)
7073
override val fallbackWindow = ProviderDslProperty<Window?>(null)
7174
private val openHandlers = mutableListOf<() -> Unit>()
72-
private val closeHandlers = mutableListOf<(InventoryCloseEvent.Reason) -> Unit>()
73-
private val outsideClickHandlers = mutableListOf<(ClickEvent) -> Unit>()
75+
private val closeHandlers = mutableListOf<Close.() -> Unit>()
76+
private val outsideClickHandlers = mutableListOf<ClickEvent.() -> Unit>()
7477

7578
override fun onOpen(handler: () -> Unit) {
7679
openHandlers += handler
7780
}
7881

79-
override fun onClose(handler: (InventoryCloseEvent.Reason) -> Unit) {
82+
override fun onClose(handler: Close.() -> Unit) {
8083
closeHandlers += handler
8184
}
8285

83-
override fun onOutsideClick(handler: (ClickEvent) -> Unit) {
86+
override fun onOutsideClick(handler: ClickEvent.() -> Unit) {
8487
outsideClickHandlers += handler
8588
}
8689

@@ -93,7 +96,7 @@ internal abstract class AbstractWindowDsl<W : Window, B : Window.Builder<W, B>>(
9396
setCloseable(closeable.delegate)
9497
setFallbackWindow(fallbackWindow.delegate)
9598
openHandlers.forEach { addOpenHandler(it) }
96-
closeHandlers.forEach { addCloseHandler(it) }
99+
closeHandlers.forEach { handler -> addCloseHandler { Close(it).handler() } }
97100
outsideClickHandlers.forEach { addOutsideClickHandler(it) }
98101
}
99102
}

0 commit comments

Comments
 (0)