Skip to content

Commit

Permalink
feat: Add events types to BaseTexture, BaseRenderTexture & Texture.
Browse files Browse the repository at this point in the history
  • Loading branch information
Ayfri committed Feb 15, 2022
1 parent 687a6a5 commit 6f04dc0
Show file tree
Hide file tree
Showing 3 changed files with 48 additions and 0 deletions.
18 changes: 18 additions & 0 deletions src/main/kotlin/pixi/externals/extensions/_BaseRenderTexture.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package pixi.externals.extensions

import org.w3c.dom.ErrorEvent
import pixi.typings.ListenerFn
import pixi.typings.core.BaseRenderTexture
import pixi.typings.core.BaseTexture
import pixi.typings.core.Resource

sealed interface BaseRenderTextureEvents<T> : BaseTextureEvents<T> {
object error : BaseRenderTextureEvents<Pair<BaseTexture<Resource, Any?>, ErrorEvent>>
object loaded : BaseRenderTextureEvents<BaseTexture<Resource, Any?>>
}

inline fun <reified T : BaseRenderTextureEvents<*>> BaseRenderTexture.emit(vararg arguments: T) = emit(T::class.simpleName!!, arguments as Array<Any?>)
fun <T : Any> BaseRenderTexture.on(event: BaseRenderTextureEvents<T>, callback: (T) -> Unit) = on(event::class.simpleName!!, callback as ListenerFn, null)
fun <T : Any> BaseRenderTexture.once(event: BaseRenderTextureEvents<T>, callback: (T) -> Unit) = once(event::class.simpleName!!, callback as ListenerFn, null)
fun <T : Any> BaseRenderTexture.off(event: BaseRenderTextureEvents<T>, callback: (T) -> Unit) = off(event::class.simpleName!!, callback as ListenerFn, null)

18 changes: 18 additions & 0 deletions src/main/kotlin/pixi/externals/extensions/_BaseTexture.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package pixi.externals.extensions

import org.w3c.dom.ErrorEvent
import pixi.typings.ListenerFn
import pixi.typings.core.BaseTexture
import pixi.typings.core.Resource

sealed interface BaseTextureEvents<T> {
object dispose : BaseTextureEvents<BaseTexture<Resource, Any?>>
object error : BaseTextureEvents<Pair<BaseTexture<Resource, Any?>, ErrorEvent>>
object loaded : BaseTextureEvents<BaseTexture<Resource, Any?>>
object update : BaseTextureEvents<BaseTexture<Resource, Any?>>
}

inline fun <reified T : BaseTextureEvents<*>> BaseTexture<*, *>.emit(vararg arguments: T) = emit(T::class.simpleName!!, arguments as Array<Any?>)
fun <T : Any> BaseTexture<*, *>.on(event: BaseTextureEvents<T>, callback: (T) -> Unit) = on(event::class.simpleName!!, callback as ListenerFn, null)
fun <T : Any> BaseTexture<*, *>.once(event: BaseTextureEvents<T>, callback: (T) -> Unit) = once(event::class.simpleName!!, callback as ListenerFn, null)
fun <T : Any> BaseTexture<*, *>.off(event: BaseTextureEvents<T>, callback: (T) -> Unit) = off(event::class.simpleName!!, callback as ListenerFn, null)
12 changes: 12 additions & 0 deletions src/main/kotlin/pixi/externals/extensions/_Texture.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package pixi.externals.extensions

import pixi.typings.ListenerFn
import pixi.typings.core.Texture

sealed interface TextureEvents<T> : BaseTextureEvents<T>

inline fun <reified T : TextureEvents<*>> Texture<*>.emit(vararg arguments: T) = emit(T::class.simpleName!!, arguments as Array<Any?>)
fun <T : Any> Texture<*>.on(event: TextureEvents<T>, callback: (T) -> Unit) = on(event::class.simpleName!!, callback as ListenerFn, null)
fun <T : Any> Texture<*>.once(event: TextureEvents<T>, callback: (T) -> Unit) = once(event::class.simpleName!!, callback as ListenerFn, null)
fun <T : Any> Texture<*>.off(event: TextureEvents<T>, callback: (T) -> Unit) = off(event::class.simpleName!!, callback as ListenerFn, null)

0 comments on commit 6f04dc0

Please sign in to comment.