From 3f8c9cd49c7426ba5107d2a498b6ea4331e05351 Mon Sep 17 00:00:00 2001 From: soywiz Date: Sun, 3 Feb 2019 07:18:47 +0100 Subject: [PATCH] Ad scenes sample --- @old/old/.gitignore | 1 + sample-scenes/build.gradle.kts | 7 +++ sample-scenes/src/commonMain/kotlin/main.kt | 54 +++++++++++++++++++++ settings.gradle.kts | 1 + 4 files changed, 63 insertions(+) create mode 100644 @old/old/.gitignore create mode 100644 sample-scenes/build.gradle.kts create mode 100644 sample-scenes/src/commonMain/kotlin/main.kt diff --git a/@old/old/.gitignore b/@old/old/.gitignore new file mode 100644 index 0000000..6bebbc3 --- /dev/null +++ b/@old/old/.gitignore @@ -0,0 +1 @@ +/.gradle diff --git a/sample-scenes/build.gradle.kts b/sample-scenes/build.gradle.kts new file mode 100644 index 0000000..7e970fb --- /dev/null +++ b/sample-scenes/build.gradle.kts @@ -0,0 +1,7 @@ +import com.soywiz.korge.gradle.* + +apply(plugin = "korge") + +korge { + id = "com.soywiz.samples.scenes" +} diff --git a/sample-scenes/src/commonMain/kotlin/main.kt b/sample-scenes/src/commonMain/kotlin/main.kt new file mode 100644 index 0000000..a82fd72 --- /dev/null +++ b/sample-scenes/src/commonMain/kotlin/main.kt @@ -0,0 +1,54 @@ +import com.soywiz.korge.Korge +import com.soywiz.korge.input.onClick +import com.soywiz.korge.scene.Module +import com.soywiz.korge.scene.Scene +import com.soywiz.korge.view.Container +import com.soywiz.korge.view.position +import com.soywiz.korge.view.solidRect +import com.soywiz.korge.view.text +import com.soywiz.korim.color.Colors +import com.soywiz.korinject.AsyncInjector +import com.soywiz.korio.async.launchImmediately +import kotlin.reflect.KClass + +suspend fun main() = Korge(Korge.Config(module = MyModule)) + +object MyModule : Module() { + override val mainScene: KClass = MyScene1::class + + override suspend fun init(injector: AsyncInjector): Unit = injector.run { + mapInstance(MyDependency("HELLO WORLD")) + mapPrototype { MyScene1(get()) } + mapPrototype { MyScene2(get()) } + } +} + +class MyDependency(val value: String) + +class MyScene1(val myDependency: MyDependency) : Scene() { + override suspend fun Container.sceneInit() { + text("MyScene1: ${myDependency.value}") + solidRect(100, 100, Colors.RED) { + position(200, 200) + onClick { + launchImmediately { + sceneContainer.changeTo() + } + } + } + } +} + +class MyScene2(val myDependency: MyDependency) : Scene() { + override suspend fun Container.sceneInit() { + text("MyScene2: ${myDependency.value}") + solidRect(100, 100, Colors.BLUE) { + position(200, 200) + onClick { + launchImmediately { + sceneContainer.changeTo(MyDependency("From MyScene2")) + } + } + } + } +} diff --git a/settings.gradle.kts b/settings.gradle.kts index 9c44c88..65bdd83 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -17,3 +17,4 @@ pluginManagement { enableFeaturePreview("GRADLE_METADATA") include(":sample-box2d") +include(":sample-scenes")