Move listener automated add/remove to extension function

This commit is contained in:
DBotThePony 2022-06-08 15:25:12 +07:00
parent 0e140ad4f4
commit 5a3d68ea80
Signed by: DBot
GPG Key ID: DCC23B5715498507
2 changed files with 16 additions and 19 deletions

View File

@ -8,10 +8,7 @@ import ru.dbotthepony.mc.otm.capability.MatteryCapability
import ru.dbotthepony.mc.otm.menu.data.INetworkedItemViewSupplier import ru.dbotthepony.mc.otm.menu.data.INetworkedItemViewSupplier
import ru.dbotthepony.mc.otm.menu.data.NetworkedItemView import ru.dbotthepony.mc.otm.menu.data.NetworkedItemView
import ru.dbotthepony.mc.otm.registry.MMenus import ru.dbotthepony.mc.otm.registry.MMenus
import ru.dbotthepony.mc.otm.storage.ITEM_STORAGE import ru.dbotthepony.mc.otm.storage.*
import ru.dbotthepony.mc.otm.storage.ItemStackWrapper
import ru.dbotthepony.mc.otm.storage.PoweredVirtualComponent
import ru.dbotthepony.mc.otm.storage.VirtualComponent
class ItemMonitorMenu @JvmOverloads constructor( class ItemMonitorMenu @JvmOverloads constructor(
p_38852_: Int, p_38852_: Int,

View File

@ -124,20 +124,9 @@ interface IStorageProvider<T : IStorageStack> : IStorageEventProducer<T> {
* @return copy of object, with amount of units actually extracted * @return copy of object, with amount of units actually extracted
*/ */
fun extractStack(id: Long, amount: BigInteger, simulate: Boolean): T fun extractStack(id: Long, amount: BigInteger, simulate: Boolean): T
}
fun addListenerAuto(listener: IStorageEventConsumer<T>): Boolean { fun <T : IStorageStack> IStorageProvider<T>.removeListenerAuto(listener: IStorageEventConsumer<T>): Boolean {
if (addListener(listener)) {
for (stack in stacks) {
listener.addStack(stack.stack, stack.id, this)
}
return true
}
return false
}
fun removeListenerAuto(listener: IStorageEventConsumer<T>): Boolean {
if (removeListener(listener)) { if (removeListener(listener)) {
for (stack in stacks) { for (stack in stacks) {
listener.removeStack(stack.stack, stack.id) listener.removeStack(stack.stack, stack.id)
@ -147,7 +136,18 @@ interface IStorageProvider<T : IStorageStack> : IStorageEventProducer<T> {
} }
return false return false
}
fun <T : IStorageStack> IStorageProvider<T>.addListenerAuto(listener: IStorageEventConsumer<T>): Boolean {
if (addListener(listener)) {
for (stack in stacks) {
listener.addStack(stack.stack, stack.id, this)
} }
return true
}
return false
} }
interface IStorageComponent<T : IStorageStack> : IStorageProvider<T>, IStorageAcceptor<T> interface IStorageComponent<T : IStorageStack> : IStorageProvider<T>, IStorageAcceptor<T>