get a shared kotlin-typescript data model working
This commit is contained in:
parent
d6a9a58dc9
commit
0d85bfca60
10 changed files with 173 additions and 178 deletions
|
|
@ -1,56 +0,0 @@
|
|||
package dev.adamko.factorioevents.model
|
||||
|
||||
import kotlin.js.ExperimentalJsExport
|
||||
import kotlin.js.JsExport
|
||||
|
||||
//
|
||||
//@JsExport
|
||||
//@ExperimentalJsExport
|
||||
//data class FactorioEvent(
|
||||
// val modVersion: String,
|
||||
// val tick: F_uint,
|
||||
// val eventType: String,
|
||||
// val data: FactorioObjectData,
|
||||
//)
|
||||
//
|
||||
//@JsExport
|
||||
//abstract class FactorioObjectData {
|
||||
// abstract val objectName: String
|
||||
//}
|
||||
//
|
||||
//@JsExport
|
||||
//data class PlayerData(
|
||||
// override val objectName: String,
|
||||
// val name: String,
|
||||
// val characterUnitNumber: F_uint,
|
||||
// val associatedCharactersUnitNumbers: List<F_uint>,
|
||||
// val position: PositionData,
|
||||
//) : FactorioObjectData()
|
||||
//
|
||||
//
|
||||
//@JsExport
|
||||
//data class PositionData(
|
||||
// val x: F_int,
|
||||
// val y: F_int,
|
||||
//)
|
||||
//
|
||||
//
|
||||
//
|
||||
//typealias F_float = Float
|
||||
//typealias F_double = Double
|
||||
//typealias F_int = Int
|
||||
//typealias F_int8 = Byte
|
||||
//
|
||||
//
|
||||
////@JsExport
|
||||
////@ExperimentalJsExport
|
||||
//typealias F_uint = UInt
|
||||
////expect class F_uint
|
||||
//
|
||||
////expect value class F_uint internal constructor(internal val data: Int)
|
||||
//expect value class F_uint8 internal constructor(internal val data: Int)
|
||||
//expect value class F_uint16 internal constructor(internal val data: Int)
|
||||
//expect value class F_uint64 internal constructor(internal val data: Int)
|
||||
//
|
||||
//typealias F_table = Any?
|
||||
//
|
||||
|
|
@ -1,13 +0,0 @@
|
|||
package dev.adamko.factorioevents.model
|
||||
|
||||
import kotlin.js.*
|
||||
|
||||
//
|
||||
//@JsModule("typed-factorio")
|
||||
//external class uint
|
||||
//
|
||||
//actual typealias F_uint = uint
|
||||
//actual typealias F_uint8 = UByte
|
||||
//actual typealias F_uint16 = UShort
|
||||
//actual typealias F_uint64 = ULong
|
||||
//
|
||||
|
|
@ -7,8 +7,11 @@ import kotlinx.serialization.json.JsonClassDiscriminator
|
|||
|
||||
@Serializable
|
||||
data class FactorioEvent(
|
||||
/** Schema versioning */
|
||||
val modVersion: String,
|
||||
/** game time */
|
||||
val tick: UInt,
|
||||
/** the initial Factorio event ({defines.events}) trigger */
|
||||
val eventType: String,
|
||||
val data: FactorioObjectData,
|
||||
)
|
||||
|
|
@ -33,10 +36,10 @@ data class EntityData(
|
|||
val active: Boolean,
|
||||
val healthRatio: Float,
|
||||
val health: Float?,
|
||||
val surface_index: Int,
|
||||
val unit_number: UInt?,
|
||||
val surfaceIndex: Int,
|
||||
val unitNumber: UInt?,
|
||||
val position: PositionData,
|
||||
val player_index: UInt?,
|
||||
val playerIndex: UInt?,
|
||||
) : FactorioObjectData
|
||||
|
||||
data class SurfaceData(
|
||||
|
|
@ -1,13 +1,14 @@
|
|||
package dev.adamko.factorioevents.model
|
||||
|
||||
import java.io.File
|
||||
import kotlin.reflect.KClass
|
||||
import kotlin.reflect.KProperty
|
||||
import me.ntrrgc.tsGenerator.ClassTransformer
|
||||
import me.ntrrgc.tsGenerator.TypeScriptGenerator
|
||||
import me.ntrrgc.tsGenerator.camelCaseToSnakeCase
|
||||
import org.intellij.lang.annotations.Language
|
||||
|
||||
|
||||
fun main() {
|
||||
fun main(args: Array<String>) {
|
||||
|
||||
val gen =
|
||||
TypeScriptGenerator(
|
||||
|
|
@ -32,9 +33,32 @@ fun main() {
|
|||
)
|
||||
)
|
||||
|
||||
println(gen.definitionsText)
|
||||
val definitions = gen.definitionsText
|
||||
|
||||
when (val filename = args.firstOrNull()) {
|
||||
null -> {
|
||||
println(definitions)
|
||||
}
|
||||
else -> {
|
||||
val out = File(filename)
|
||||
out.parentFile.mkdirs()
|
||||
out.printWriter().use {
|
||||
it.print(header)
|
||||
it.print(definitions)
|
||||
}
|
||||
println("Generated file: $out")
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Language("TypeScript")
|
||||
val header = """
|
||||
|
||||
// Generated code - do edit this file manually
|
||||
|
||||
|
||||
""".trimIndent()
|
||||
|
||||
object PropertyNameTransformer : ClassTransformer {
|
||||
override fun transformPropertyName(
|
||||
propertyName: String,
|
||||
Loading…
Add table
Add a link
Reference in a new issue