Update kotlin and coroutines dependencies

This commit is contained in:
Major
2019-07-13 15:14:35 +01:00
parent cd06a69245
commit 8753bedf7e
7 changed files with 24 additions and 25 deletions
+1
View File
@@ -12,6 +12,7 @@ dependencies {
compile group: 'org.jetbrains.kotlin', name: 'kotlin-stdlib-jdk8'
compile group: 'org.jetbrains.kotlin', name: 'kotlin-scripting-common'
compile group: 'org.jetbrains.kotlin', name: 'kotlin-script-runtime'
compile group: 'org.jetbrains.kotlinx', name: 'kotlinx-coroutines-jdk8', version: kotlinxCoroutinesVersion
compile group: 'org.jetbrains.kotlinx', name: 'kotlinx-coroutines-core', version: kotlinxCoroutinesVersion
+2 -3
View File
@@ -1,4 +1,3 @@
import kotlinx.coroutines.experimental.*
import org.apollo.game.action.ActionBlock
import org.apollo.game.action.AsyncDistancedAction
import org.apollo.game.message.impl.ObjectActionMessage
@@ -13,8 +12,8 @@ import org.apollo.net.message.Message
val DUMMY_IDS = setOf<Int>(823)
on { ObjectActionMessage::class }
.where { option == 2 && id in DUMMY_IDS }
.then { DummyAction.start(this, it, position) }
.where { option == 2 && id in DUMMY_IDS }
.then { DummyAction.start(this, it, position) }
class DummyAction(val player: Player, position: Position) : AsyncDistancedAction<Player>(0, true, player, position, DISTANCE) {
@@ -3,14 +3,10 @@ package org.apollo.game.action
import java.util.concurrent.CancellationException
import java.util.concurrent.atomic.AtomicInteger
import java.util.concurrent.atomic.AtomicReference
import kotlin.coroutines.experimental.Continuation
import kotlin.coroutines.experimental.CoroutineContext
import kotlin.coroutines.experimental.EmptyCoroutineContext
import kotlin.coroutines.experimental.RestrictsSuspension
import kotlin.coroutines.experimental.intrinsics.COROUTINE_SUSPENDED
import kotlin.coroutines.experimental.intrinsics.createCoroutineUnchecked
import kotlin.coroutines.experimental.intrinsics.suspendCoroutineOrReturn
import kotlinx.coroutines.experimental.suspendCancellableCoroutine
import kotlin.coroutines.intrinsics.COROUTINE_SUSPENDED
import kotlin.coroutines.intrinsics.suspendCoroutineUninterceptedOrReturn
import kotlinx.coroutines.suspendCancellableCoroutine
import kotlin.coroutines.*
typealias ActionPredicate = () -> Boolean
typealias ActionBlock = suspend ActionCoroutine.() -> Unit
@@ -57,7 +53,7 @@ class ActionCoroutine : Continuation<Unit> {
*/
fun start(block: ActionBlock): ActionCoroutine {
val coroutine = ActionCoroutine()
val continuation = block.createCoroutineUnchecked(coroutine, coroutine)
val continuation = block.createCoroutine(coroutine, coroutine)
coroutine.resumeContinuation(continuation)
@@ -66,8 +62,11 @@ class ActionCoroutine : Continuation<Unit> {
}
override val context: CoroutineContext = EmptyCoroutineContext
override fun resume(value: Unit) {}
override fun resumeWithException(exception: Throwable) = throw exception
override fun resumeWith(result: Result<Unit>) {
if (result.isFailure) {
throw result.exceptionOrNull()!!
}
}
private fun resumeContinuation(continuation: Continuation<Unit>, allowCancellation: Boolean = true) {
try {
@@ -108,7 +107,7 @@ class ActionCoroutine : Continuation<Unit> {
}
private suspend fun awaitCondition(condition: ActionCoroutineCondition) {
return suspendCoroutineOrReturn { cont ->
return suspendCoroutineUninterceptedOrReturn { cont ->
next.compareAndSet(null, ActionCoroutineStep(condition, cont))
COROUTINE_SUSPENDED
}
@@ -118,7 +117,7 @@ class ActionCoroutine : Continuation<Unit> {
* Stop execution of this continuation.
*/
suspend fun stop(): Nothing {
suspendCancellableCoroutine<Unit>(true) { cont ->
suspendCancellableCoroutine<Unit> { cont ->
next.set(null)
cont.cancel()
}
@@ -2,7 +2,6 @@ package org.apollo.game.plugin.kotlin
import kotlin.reflect.KClass
import kotlin.script.experimental.annotations.KotlinScript
import kotlin.script.experimental.annotations.KotlinScriptFileExtension
import org.apollo.game.command.Command
import org.apollo.game.command.CommandListener
import org.apollo.game.message.handler.MessageHandler
@@ -16,8 +15,7 @@ import org.apollo.game.model.event.PlayerEvent
import org.apollo.game.plugin.PluginContext
import org.apollo.net.message.Message
@KotlinScript("Apollo Plugin Script")
@KotlinScriptFileExtension("plugin.kts")
@KotlinScript("Apollo Plugin Script", fileExtension = "plugin.kts")
abstract class KotlinPluginScript(private var world: World, val context: PluginContext) {
var startListener: (World) -> Unit = { _ -> }
var stopListener: (World) -> Unit = { _ -> }