From 259c9fe13a6ae28fc04cce6edaae650c9678ec9f Mon Sep 17 00:00:00 2001 From: bluefireoly Date: Sat, 17 Oct 2020 14:16:41 +0200 Subject: [PATCH] Moved gui elements to a seperate package --- .../kspigot/inventory/InventoryGUIElements.kt | 76 ------------------- .../inventory/elements/InventoryGUIButton.kt | 18 +++++ .../InventoryGUIButtonInventoryChange.kt | 26 +++++++ .../elements/InventoryGUIButtonPageChange.kt | 25 ++++++ .../elements/InventoryGUIFreeSlot.kt | 9 +++ .../elements/InventoryGUIPlaceholder.kt | 16 ++++ 6 files changed, 94 insertions(+), 76 deletions(-) create mode 100644 src/main/kotlin/net/axay/kspigot/inventory/elements/InventoryGUIButton.kt create mode 100644 src/main/kotlin/net/axay/kspigot/inventory/elements/InventoryGUIButtonInventoryChange.kt create mode 100644 src/main/kotlin/net/axay/kspigot/inventory/elements/InventoryGUIButtonPageChange.kt create mode 100644 src/main/kotlin/net/axay/kspigot/inventory/elements/InventoryGUIFreeSlot.kt create mode 100644 src/main/kotlin/net/axay/kspigot/inventory/elements/InventoryGUIPlaceholder.kt diff --git a/src/main/kotlin/net/axay/kspigot/inventory/InventoryGUIElements.kt b/src/main/kotlin/net/axay/kspigot/inventory/InventoryGUIElements.kt index 5be704da..7efa60c9 100644 --- a/src/main/kotlin/net/axay/kspigot/inventory/InventoryGUIElements.kt +++ b/src/main/kotlin/net/axay/kspigot/inventory/InventoryGUIElements.kt @@ -23,80 +23,4 @@ abstract class InventoryGUIElement( protected abstract fun onClickElement(clickEvent: InventoryGUIClickEvent) -} - -// Element implementations - -open class InventoryGUIButton( - inventoryGUIElementData: InventoryGUIElementData, - val action: (InventoryGUIClickEvent) -> Unit, -) : InventoryGUIElement(inventoryGUIElementData) { - - override fun onClickElement(clickEvent: InventoryGUIClickEvent) { - clickEvent.bukkitEvent.isCancelled = true - action(clickEvent) - } - -} - -class InventoryGUIPlaceholder( - inventoryGUIElementData: InventoryGUIElementData -) : InventoryGUIElement(inventoryGUIElementData) { - - override fun onClickElement(clickEvent: InventoryGUIClickEvent) { - clickEvent.bukkitEvent.isCancelled = true - } - -} - -class InventoryGUIButtonPageChange( - inventoryGUIElementData: InventoryGUIElementData, - calculator: InventoryGUIPageChangeCalculator, - onChange: ((InventoryGUIClickEvent) -> Unit)? -) - : InventoryGUIButton(inventoryGUIElementData, { - - val currentPage = it.gui.currentPage - val newPage = it.gui.getPage(calculator.calculateNewPage(it.gui.currentPageInt, it.gui.data.pages.keys)) - if (newPage != null) { - - val effect = (newPage.transitionTo ?: currentPage.transitionFrom) - ?: PageChangeEffect.INSTANT - - it.gui.changePage(effect, currentPage, newPage) - - onChange?.invoke(it) - - } - - }) - -class InventoryGUIButtonInventoryChange( - inventoryGUIElementData: InventoryGUIElementData, - changeToGUICallback: () -> InventoryGUI<*>, - changeToPageInt: Int?, - onChange: ((InventoryGUIClickEvent) -> Unit)? -) - : InventoryGUIButton(inventoryGUIElementData, { - - val changeToGUI = changeToGUICallback.invoke() - - val effect = (changeToGUI.data.transitionTo ?: it.gui.data.transitionFrom) - ?: InventoryChangeEffect.INSTANT - - val changeToPage = changeToGUI.getPage(changeToPageInt) ?: changeToGUI.currentPage - - changeToGUI.changeGUI(effect, it.gui.currentPage, changeToPage) - - it.bukkitEvent.whoClicked.openGUI(changeToGUI) - - onChange?.invoke(it) - - }) - - -// FREE SLOT - -class InventoryGUIFreeSlot : InventoryGUISlot() { - override fun onClick(clickEvent: InventoryGUIClickEvent) { /* do nothing */ } } \ No newline at end of file diff --git a/src/main/kotlin/net/axay/kspigot/inventory/elements/InventoryGUIButton.kt b/src/main/kotlin/net/axay/kspigot/inventory/elements/InventoryGUIButton.kt new file mode 100644 index 00000000..83383f89 --- /dev/null +++ b/src/main/kotlin/net/axay/kspigot/inventory/elements/InventoryGUIButton.kt @@ -0,0 +1,18 @@ +package net.axay.kspigot.inventory.elements + +import net.axay.kspigot.inventory.ForInventory +import net.axay.kspigot.inventory.InventoryGUIClickEvent +import net.axay.kspigot.inventory.InventoryGUIElement +import net.axay.kspigot.inventory.InventoryGUIElementData + +open class InventoryGUIButton( + inventoryGUIElementData: InventoryGUIElementData, + val action: (InventoryGUIClickEvent) -> Unit, +) : InventoryGUIElement(inventoryGUIElementData) { + + override fun onClickElement(clickEvent: InventoryGUIClickEvent) { + clickEvent.bukkitEvent.isCancelled = true + action(clickEvent) + } + +} \ No newline at end of file diff --git a/src/main/kotlin/net/axay/kspigot/inventory/elements/InventoryGUIButtonInventoryChange.kt b/src/main/kotlin/net/axay/kspigot/inventory/elements/InventoryGUIButtonInventoryChange.kt new file mode 100644 index 00000000..6c00bc92 --- /dev/null +++ b/src/main/kotlin/net/axay/kspigot/inventory/elements/InventoryGUIButtonInventoryChange.kt @@ -0,0 +1,26 @@ +package net.axay.kspigot.inventory.elements + +import net.axay.kspigot.inventory.* + +class InventoryGUIButtonInventoryChange( + inventoryGUIElementData: InventoryGUIElementData, + changeToGUICallback: () -> InventoryGUI<*>, + changeToPageInt: Int?, + onChange: ((InventoryGUIClickEvent) -> Unit)? +) + : InventoryGUIButton(inventoryGUIElementData, { + + val changeToGUI = changeToGUICallback.invoke() + + val effect = (changeToGUI.data.transitionTo ?: it.gui.data.transitionFrom) + ?: InventoryChangeEffect.INSTANT + + val changeToPage = changeToGUI.getPage(changeToPageInt) ?: changeToGUI.currentPage + + changeToGUI.changeGUI(effect, it.gui.currentPage, changeToPage) + + it.bukkitEvent.whoClicked.openGUI(changeToGUI) + + onChange?.invoke(it) + +}) \ No newline at end of file diff --git a/src/main/kotlin/net/axay/kspigot/inventory/elements/InventoryGUIButtonPageChange.kt b/src/main/kotlin/net/axay/kspigot/inventory/elements/InventoryGUIButtonPageChange.kt new file mode 100644 index 00000000..0d5f3648 --- /dev/null +++ b/src/main/kotlin/net/axay/kspigot/inventory/elements/InventoryGUIButtonPageChange.kt @@ -0,0 +1,25 @@ +package net.axay.kspigot.inventory.elements + +import net.axay.kspigot.inventory.* + +class InventoryGUIButtonPageChange( + inventoryGUIElementData: InventoryGUIElementData, + calculator: InventoryGUIPageChangeCalculator, + onChange: ((InventoryGUIClickEvent) -> Unit)? +) + : InventoryGUIButton(inventoryGUIElementData, { + + val currentPage = it.gui.currentPage + val newPage = it.gui.getPage(calculator.calculateNewPage(it.gui.currentPageInt, it.gui.data.pages.keys)) + if (newPage != null) { + + val effect = (newPage.transitionTo ?: currentPage.transitionFrom) + ?: PageChangeEffect.INSTANT + + it.gui.changePage(effect, currentPage, newPage) + + onChange?.invoke(it) + + } + +}) \ No newline at end of file diff --git a/src/main/kotlin/net/axay/kspigot/inventory/elements/InventoryGUIFreeSlot.kt b/src/main/kotlin/net/axay/kspigot/inventory/elements/InventoryGUIFreeSlot.kt new file mode 100644 index 00000000..7c385e1a --- /dev/null +++ b/src/main/kotlin/net/axay/kspigot/inventory/elements/InventoryGUIFreeSlot.kt @@ -0,0 +1,9 @@ +package net.axay.kspigot.inventory.elements + +import net.axay.kspigot.inventory.ForInventory +import net.axay.kspigot.inventory.InventoryGUIClickEvent +import net.axay.kspigot.inventory.InventoryGUISlot + +class InventoryGUIFreeSlot : InventoryGUISlot() { + override fun onClick(clickEvent: InventoryGUIClickEvent) { /* do nothing */ } +} \ No newline at end of file diff --git a/src/main/kotlin/net/axay/kspigot/inventory/elements/InventoryGUIPlaceholder.kt b/src/main/kotlin/net/axay/kspigot/inventory/elements/InventoryGUIPlaceholder.kt new file mode 100644 index 00000000..3543f5a6 --- /dev/null +++ b/src/main/kotlin/net/axay/kspigot/inventory/elements/InventoryGUIPlaceholder.kt @@ -0,0 +1,16 @@ +package net.axay.kspigot.inventory.elements + +import net.axay.kspigot.inventory.ForInventory +import net.axay.kspigot.inventory.InventoryGUIClickEvent +import net.axay.kspigot.inventory.InventoryGUIElement +import net.axay.kspigot.inventory.InventoryGUIElementData + +class InventoryGUIPlaceholder( + inventoryGUIElementData: InventoryGUIElementData +) : InventoryGUIElement(inventoryGUIElementData) { + + override fun onClickElement(clickEvent: InventoryGUIClickEvent) { + clickEvent.bukkitEvent.isCancelled = true + } + +} \ No newline at end of file