From a70b2935f3a86f0b26e1662fce90420622219ec3 Mon Sep 17 00:00:00 2001 From: Adam <897017+asemy@users.noreply.github.com> Date: Wed, 20 Oct 2021 23:27:31 +0200 Subject: [PATCH] kotlin data model experiment --- modules/data-model/build.gradle.kts | 8 +++ .../data-model/src/main/kotlin/PlayerModel.kt | 55 +++++++++++++++++++ settings.gradle.kts | 1 + 3 files changed, 64 insertions(+) create mode 100644 modules/data-model/build.gradle.kts create mode 100644 modules/data-model/src/main/kotlin/PlayerModel.kt diff --git a/modules/data-model/build.gradle.kts b/modules/data-model/build.gradle.kts new file mode 100644 index 0000000..8a701aa --- /dev/null +++ b/modules/data-model/build.gradle.kts @@ -0,0 +1,8 @@ +plugins { + id("dev.adamko.factoriowebmap.archetype.kotlin-js") +} + +val projectId: String by project.extra +val buildDir: Directory = layout.buildDirectory.dir(projectId).get() +val nodeModulesDir: Directory by project.extra + diff --git a/modules/data-model/src/main/kotlin/PlayerModel.kt b/modules/data-model/src/main/kotlin/PlayerModel.kt new file mode 100644 index 0000000..a745430 --- /dev/null +++ b/modules/data-model/src/main/kotlin/PlayerModel.kt @@ -0,0 +1,55 @@ +interface Identifiable { + val id: T +} + + +interface IndexedModel { + val index: UInt +} + +interface NamedModel { + val name: String +} + + +data class SurfaceModel( + override val name: String, + override val index: UInt, + val daytime: Float, + val darkness: Float, + val wind_speed: Double, +) : IndexedModel, NamedModel + + +/** Player/Entity shared props */ +interface ControlModel { + val driving: Boolean + val forces: List +} + + +//data class PlayerModel( +// val index: UInt, +// val characters: List +//) : Identifiable { +// override val id: UInt = index +//} + +//data class EntityModel( +// val unit_number: Int, +// override val name: String, +// val type: String, +// val active: Boolean, +// val minable: Boolean, +// val health: Boolean, +// val speed: Float, override val driving: Boolean, +//) : ControlModel, NamedModel + + +data class ForceModel( + val index: UInt, + override val name: String, + val research_progress: Double, +) : Identifiable, NamedModel { + override val id: UInt = index +} diff --git a/settings.gradle.kts b/settings.gradle.kts index c681010..ebb5496 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -6,6 +6,7 @@ include( ":modules:server", ":modules:kt-rcon", ":modules:kafka", + ":modules:data-model", ) enableFeaturePreview("VERSION_CATALOGS")