use tuples for colours
This commit is contained in:
parent
1c55fae236
commit
6bfcd30558
8 changed files with 145 additions and 365 deletions
|
|
@ -171,12 +171,12 @@ export interface PlayerUpdateKey {
|
||||||
|
|
||||||
export type UnitNumber = UInt;
|
export type UnitNumber = UInt;
|
||||||
|
|
||||||
export interface Colour {
|
export type Colour = [
|
||||||
red?: Float;
|
red: Float,
|
||||||
green?: Float;
|
green: Float,
|
||||||
blue?: Float;
|
blue: Float,
|
||||||
alpha?: Float;
|
alpha: Float,
|
||||||
}
|
];
|
||||||
|
|
||||||
export type MapEntityPosition = [
|
export type MapEntityPosition = [
|
||||||
x: Double,
|
x: Double,
|
||||||
|
|
|
||||||
|
|
@ -86,12 +86,12 @@ export namespace Converters {
|
||||||
// }
|
// }
|
||||||
|
|
||||||
export function mapColour(color: ColorTable): Colour {
|
export function mapColour(color: ColorTable): Colour {
|
||||||
return {
|
return [
|
||||||
red: color.r ?? 0,
|
color.r ?? 0,
|
||||||
green: color.g ?? 0,
|
color.g ?? 0,
|
||||||
blue: color.b ?? 0,
|
color.b ?? 0,
|
||||||
alpha: color.a ?? 0,
|
color.a ?? 0,
|
||||||
}
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -9,8 +9,7 @@
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": "~14.19.1"
|
"node": "~14.19.1"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {},
|
||||||
},
|
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"lua-types": "^2.11.0",
|
"lua-types": "^2.11.0",
|
||||||
"typescript-to-lua": "1.4.3",
|
"typescript-to-lua": "1.4.3",
|
||||||
|
|
@ -19,10 +18,7 @@
|
||||||
},
|
},
|
||||||
"// @types/node": "^12.0.8",
|
"// @types/node": "^12.0.8",
|
||||||
"license": "UNLICENSED",
|
"license": "UNLICENSED",
|
||||||
"peerDependencies": {
|
"peerDependencies": {},
|
||||||
},
|
"optionalDependencies": {},
|
||||||
"optionalDependencies": {
|
"bundledDependencies": []
|
||||||
},
|
|
||||||
"bundledDependencies": [
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
package dev.adamko.kafkatorio.schema.common
|
package dev.adamko.kafkatorio.schema.common
|
||||||
|
|
||||||
|
import dev.adamko.kxstsgen.core.experiments.TupleSerializer
|
||||||
import kotlin.math.roundToInt
|
import kotlin.math.roundToInt
|
||||||
import kotlinx.serialization.Serializable
|
import kotlinx.serialization.Serializable
|
||||||
|
|
||||||
|
|
@ -9,13 +10,32 @@ import kotlinx.serialization.Serializable
|
||||||
*
|
*
|
||||||
* All values here are optional. Colour channels default to `0`, the alpha channel defaults to `1`.
|
* All values here are optional. Colour channels default to `0`, the alpha channel defaults to `1`.
|
||||||
*/
|
*/
|
||||||
@Serializable
|
@Serializable(with = Colour.Serializer::class)
|
||||||
data class Colour(
|
data class Colour(
|
||||||
val red: Float = 0f,
|
val red: Float = 0f,
|
||||||
val green: Float = 0f,
|
val green: Float = 0f,
|
||||||
val blue: Float = 0f,
|
val blue: Float = 0f,
|
||||||
val alpha: Float = 1f,
|
val alpha: Float = 1f,
|
||||||
)
|
) {
|
||||||
|
object Serializer : TupleSerializer<Colour>(
|
||||||
|
"Colour",
|
||||||
|
{
|
||||||
|
element(Colour::red)
|
||||||
|
element(Colour::green)
|
||||||
|
element(Colour::blue)
|
||||||
|
element(Colour::alpha)
|
||||||
|
}
|
||||||
|
) {
|
||||||
|
override fun tupleConstructor(elements: Iterator<*>): Colour {
|
||||||
|
return Colour(
|
||||||
|
elements.next() as Float,
|
||||||
|
elements.next() as Float,
|
||||||
|
elements.next() as Float,
|
||||||
|
elements.next() as Float,
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/** Size-efficient version of [Colour] (`4*4` bytes vs `4*1` bytes) */
|
/** Size-efficient version of [Colour] (`4*4` bytes vs `4*1` bytes) */
|
||||||
|
|
|
||||||
|
|
@ -19,12 +19,7 @@ class ColourHexTest : BehaviorSpec({
|
||||||
|
|
||||||
//Language=JSON
|
//Language=JSON
|
||||||
val colourJson = """
|
val colourJson = """
|
||||||
{
|
[0.1, 0.4, 0.7, 0.6]
|
||||||
"red": 0.1,
|
|
||||||
"green": 0.4,
|
|
||||||
"blue": 0.7,
|
|
||||||
"alpha": 0.6
|
|
||||||
}
|
|
||||||
""".trimIndent()
|
""".trimIndent()
|
||||||
|
|
||||||
val colour: Colour = jsonMapperKafkatorio.decodeFromString(colourJson)
|
val colour: Colour = jsonMapperKafkatorio.decodeFromString(colourJson)
|
||||||
|
|
@ -68,12 +63,12 @@ class ColourHexTest : BehaviorSpec({
|
||||||
|
|
||||||
//Language=JSON
|
//Language=JSON
|
||||||
val colourJson = """
|
val colourJson = """
|
||||||
{
|
[
|
||||||
"red": ${r.toFloat() / UByte.MAX_VALUE.toFloat()},
|
${r.toFloat() / UByte.MAX_VALUE.toFloat()},
|
||||||
"green": ${g.toFloat() / UByte.MAX_VALUE.toFloat()},
|
${g.toFloat() / UByte.MAX_VALUE.toFloat()},
|
||||||
"blue": ${b.toFloat() / UByte.MAX_VALUE.toFloat()},
|
${b.toFloat() / UByte.MAX_VALUE.toFloat()},
|
||||||
"alpha": ${a.toFloat() / UByte.MAX_VALUE.toFloat()}
|
${a.toFloat() / UByte.MAX_VALUE.toFloat()}
|
||||||
}
|
]
|
||||||
""".trimIndent()
|
""".trimIndent()
|
||||||
|
|
||||||
val colour: Colour = jsonMapperKafkatorio.decodeFromString(colourJson)
|
val colour: Colour = jsonMapperKafkatorio.decodeFromString(colourJson)
|
||||||
|
|
|
||||||
|
|
@ -28,12 +28,7 @@ class PrototypesTest : BehaviorSpec({
|
||||||
"order": "z-a",
|
"order": "z-a",
|
||||||
"layer": 0,
|
"layer": 0,
|
||||||
"collisionMasks": {},
|
"collisionMasks": {},
|
||||||
"mapColour": {
|
"mapColour": [0, 0, 0, 255],
|
||||||
"red": 0,
|
|
||||||
"green": 0,
|
|
||||||
"blue": 0,
|
|
||||||
"alpha": 255
|
|
||||||
},
|
|
||||||
"canBeMined": false
|
"canBeMined": false
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
@ -65,12 +60,7 @@ class PrototypesTest : BehaviorSpec({
|
||||||
"collisionMasks": [
|
"collisionMasks": [
|
||||||
"ground-tile"
|
"ground-tile"
|
||||||
],
|
],
|
||||||
"mapColour": {
|
"mapColour": [86, 82, 74, 255],
|
||||||
"red": 86,
|
|
||||||
"green": 82,
|
|
||||||
"blue": 74,
|
|
||||||
"alpha": 255
|
|
||||||
},
|
|
||||||
"canBeMined": true
|
"canBeMined": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -81,12 +71,7 @@ class PrototypesTest : BehaviorSpec({
|
||||||
"collisionMasks": [
|
"collisionMasks": [
|
||||||
"ground-tile"
|
"ground-tile"
|
||||||
],
|
],
|
||||||
"mapColour": {
|
"mapColour": [63, 61, 59, 255],
|
||||||
"red": 63,
|
|
||||||
"green": 61,
|
|
||||||
"blue": 59,
|
|
||||||
"alpha": 255
|
|
||||||
},
|
|
||||||
"canBeMined": true
|
"canBeMined": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -97,12 +82,7 @@ class PrototypesTest : BehaviorSpec({
|
||||||
"collisionMasks": [
|
"collisionMasks": [
|
||||||
"ground-tile"
|
"ground-tile"
|
||||||
],
|
],
|
||||||
"mapColour": {
|
"mapColour": [176, 142, 39, 255],
|
||||||
"red": 176,
|
|
||||||
"green": 142,
|
|
||||||
"blue": 39,
|
|
||||||
"alpha": 255
|
|
||||||
},
|
|
||||||
"canBeMined": true
|
"canBeMined": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -113,12 +93,7 @@ class PrototypesTest : BehaviorSpec({
|
||||||
"collisionMasks": [
|
"collisionMasks": [
|
||||||
"ground-tile"
|
"ground-tile"
|
||||||
],
|
],
|
||||||
"mapColour": {
|
"mapColour": [176, 142, 39, 255],
|
||||||
"red": 176,
|
|
||||||
"green": 142,
|
|
||||||
"blue": 39,
|
|
||||||
"alpha": 255
|
|
||||||
},
|
|
||||||
"canBeMined": true
|
"canBeMined": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -129,12 +104,7 @@ class PrototypesTest : BehaviorSpec({
|
||||||
"collisionMasks": [
|
"collisionMasks": [
|
||||||
"ground-tile"
|
"ground-tile"
|
||||||
],
|
],
|
||||||
"mapColour": {
|
"mapColour": [49, 48, 45, 255],
|
||||||
"red": 49,
|
|
||||||
"green": 48,
|
|
||||||
"blue": 45,
|
|
||||||
"alpha": 255
|
|
||||||
},
|
|
||||||
"canBeMined": true
|
"canBeMined": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -145,12 +115,7 @@ class PrototypesTest : BehaviorSpec({
|
||||||
"collisionMasks": [
|
"collisionMasks": [
|
||||||
"ground-tile"
|
"ground-tile"
|
||||||
],
|
],
|
||||||
"mapColour": {
|
"mapColour": [116, 94, 26, 255],
|
||||||
"red": 116,
|
|
||||||
"green": 94,
|
|
||||||
"blue": 26,
|
|
||||||
"alpha": 255
|
|
||||||
},
|
|
||||||
"canBeMined": true
|
"canBeMined": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -161,12 +126,7 @@ class PrototypesTest : BehaviorSpec({
|
||||||
"collisionMasks": [
|
"collisionMasks": [
|
||||||
"ground-tile"
|
"ground-tile"
|
||||||
],
|
],
|
||||||
"mapColour": {
|
"mapColour": [116, 94, 26, 255],
|
||||||
"red": 116,
|
|
||||||
"green": 94,
|
|
||||||
"blue": 26,
|
|
||||||
"alpha": 255
|
|
||||||
},
|
|
||||||
"canBeMined": true
|
"canBeMined": true
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -177,12 +137,7 @@ class PrototypesTest : BehaviorSpec({
|
||||||
"collisionMasks": [
|
"collisionMasks": [
|
||||||
"ground-tile"
|
"ground-tile"
|
||||||
],
|
],
|
||||||
"mapColour": {
|
"mapColour": [57, 39, 26, 255],
|
||||||
"red": 57,
|
|
||||||
"green": 39,
|
|
||||||
"blue": 26,
|
|
||||||
"alpha": 255
|
|
||||||
},
|
|
||||||
"canBeMined": false
|
"canBeMined": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -193,12 +148,7 @@ class PrototypesTest : BehaviorSpec({
|
||||||
"collisionMasks": [
|
"collisionMasks": [
|
||||||
"ground-tile"
|
"ground-tile"
|
||||||
],
|
],
|
||||||
"mapColour": {
|
"mapColour": [142, 194, 40, 127],
|
||||||
"red": 142,
|
|
||||||
"green": 194,
|
|
||||||
"blue": 40,
|
|
||||||
"alpha": 127
|
|
||||||
},
|
|
||||||
"canBeMined": false
|
"canBeMined": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -209,12 +159,7 @@ class PrototypesTest : BehaviorSpec({
|
||||||
"collisionMasks": [
|
"collisionMasks": [
|
||||||
"ground-tile"
|
"ground-tile"
|
||||||
],
|
],
|
||||||
"mapColour": {
|
"mapColour": [25, 25, 25, 127],
|
||||||
"red": 25,
|
|
||||||
"green": 25,
|
|
||||||
"blue": 25,
|
|
||||||
"alpha": 127
|
|
||||||
},
|
|
||||||
"canBeMined": false
|
"canBeMined": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -225,12 +170,7 @@ class PrototypesTest : BehaviorSpec({
|
||||||
"collisionMasks": [
|
"collisionMasks": [
|
||||||
"ground-tile"
|
"ground-tile"
|
||||||
],
|
],
|
||||||
"mapColour": {
|
"mapColour": [39, 137, 228, 127],
|
||||||
"red": 39,
|
|
||||||
"green": 137,
|
|
||||||
"blue": 228,
|
|
||||||
"alpha": 127
|
|
||||||
},
|
|
||||||
"canBeMined": false
|
"canBeMined": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -241,12 +181,7 @@ class PrototypesTest : BehaviorSpec({
|
||||||
"collisionMasks": [
|
"collisionMasks": [
|
||||||
"ground-tile"
|
"ground-tile"
|
||||||
],
|
],
|
||||||
"mapColour": {
|
"mapColour": [76, 29, 0, 127],
|
||||||
"red": 76,
|
|
||||||
"green": 29,
|
|
||||||
"blue": 0,
|
|
||||||
"alpha": 127
|
|
||||||
},
|
|
||||||
"canBeMined": false
|
"canBeMined": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -257,12 +192,7 @@ class PrototypesTest : BehaviorSpec({
|
||||||
"collisionMasks": [
|
"collisionMasks": [
|
||||||
"ground-tile"
|
"ground-tile"
|
||||||
],
|
],
|
||||||
"mapColour": {
|
"mapColour": [70, 192, 181, 127],
|
||||||
"red": 70,
|
|
||||||
"green": 192,
|
|
||||||
"blue": 181,
|
|
||||||
"alpha": 127
|
|
||||||
},
|
|
||||||
"canBeMined": false
|
"canBeMined": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -273,12 +203,7 @@ class PrototypesTest : BehaviorSpec({
|
||||||
"collisionMasks": [
|
"collisionMasks": [
|
||||||
"ground-tile"
|
"ground-tile"
|
||||||
],
|
],
|
||||||
"mapColour": {
|
"mapColour": [23, 195, 43, 127],
|
||||||
"red": 23,
|
|
||||||
"green": 195,
|
|
||||||
"blue": 43,
|
|
||||||
"alpha": 127
|
|
||||||
},
|
|
||||||
"canBeMined": false
|
"canBeMined": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -289,12 +214,7 @@ class PrototypesTest : BehaviorSpec({
|
||||||
"collisionMasks": [
|
"collisionMasks": [
|
||||||
"ground-tile"
|
"ground-tile"
|
||||||
],
|
],
|
||||||
"mapColour": {
|
"mapColour": [221, 127, 33, 127],
|
||||||
"red": 221,
|
|
||||||
"green": 127,
|
|
||||||
"blue": 33,
|
|
||||||
"alpha": 127
|
|
||||||
},
|
|
||||||
"canBeMined": false
|
"canBeMined": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -305,12 +225,7 @@ class PrototypesTest : BehaviorSpec({
|
||||||
"collisionMasks": [
|
"collisionMasks": [
|
||||||
"ground-tile"
|
"ground-tile"
|
||||||
],
|
],
|
||||||
"mapColour": {
|
"mapColour": [236, 98, 131, 127],
|
||||||
"red": 236,
|
|
||||||
"green": 98,
|
|
||||||
"blue": 131,
|
|
||||||
"alpha": 127
|
|
||||||
},
|
|
||||||
"canBeMined": false
|
"canBeMined": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -321,12 +236,7 @@ class PrototypesTest : BehaviorSpec({
|
||||||
"collisionMasks": [
|
"collisionMasks": [
|
||||||
"ground-tile"
|
"ground-tile"
|
||||||
],
|
],
|
||||||
"mapColour": {
|
"mapColour": [123, 28, 168, 127],
|
||||||
"red": 123,
|
|
||||||
"green": 28,
|
|
||||||
"blue": 168,
|
|
||||||
"alpha": 127
|
|
||||||
},
|
|
||||||
"canBeMined": false
|
"canBeMined": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -337,12 +247,7 @@ class PrototypesTest : BehaviorSpec({
|
||||||
"collisionMasks": [
|
"collisionMasks": [
|
||||||
"ground-tile"
|
"ground-tile"
|
||||||
],
|
],
|
||||||
"mapColour": {
|
"mapColour": [207, 6, 0, 127],
|
||||||
"red": 207,
|
|
||||||
"green": 6,
|
|
||||||
"blue": 0,
|
|
||||||
"alpha": 127
|
|
||||||
},
|
|
||||||
"canBeMined": false
|
"canBeMined": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -353,12 +258,7 @@ class PrototypesTest : BehaviorSpec({
|
||||||
"collisionMasks": [
|
"collisionMasks": [
|
||||||
"ground-tile"
|
"ground-tile"
|
||||||
],
|
],
|
||||||
"mapColour": {
|
"mapColour": [212, 169, 19, 127],
|
||||||
"red": 212,
|
|
||||||
"green": 169,
|
|
||||||
"blue": 19,
|
|
||||||
"alpha": 127
|
|
||||||
},
|
|
||||||
"canBeMined": false
|
"canBeMined": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -369,12 +269,7 @@ class PrototypesTest : BehaviorSpec({
|
||||||
"collisionMasks": [
|
"collisionMasks": [
|
||||||
"ground-tile"
|
"ground-tile"
|
||||||
],
|
],
|
||||||
"mapColour": {
|
"mapColour": [55, 53, 11, 255],
|
||||||
"red": 55,
|
|
||||||
"green": 53,
|
|
||||||
"blue": 11,
|
|
||||||
"alpha": 255
|
|
||||||
},
|
|
||||||
"canBeMined": false
|
"canBeMined": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -385,12 +280,7 @@ class PrototypesTest : BehaviorSpec({
|
||||||
"collisionMasks": [
|
"collisionMasks": [
|
||||||
"ground-tile"
|
"ground-tile"
|
||||||
],
|
],
|
||||||
"mapColour": {
|
"mapColour": [66, 57, 15, 255],
|
||||||
"red": 66,
|
|
||||||
"green": 57,
|
|
||||||
"blue": 15,
|
|
||||||
"alpha": 255
|
|
||||||
},
|
|
||||||
"canBeMined": false
|
"canBeMined": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -401,12 +291,7 @@ class PrototypesTest : BehaviorSpec({
|
||||||
"collisionMasks": [
|
"collisionMasks": [
|
||||||
"ground-tile"
|
"ground-tile"
|
||||||
],
|
],
|
||||||
"mapColour": {
|
"mapColour": [65, 52, 28, 255],
|
||||||
"red": 65,
|
|
||||||
"green": 52,
|
|
||||||
"blue": 28,
|
|
||||||
"alpha": 255
|
|
||||||
},
|
|
||||||
"canBeMined": false
|
"canBeMined": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -417,12 +302,7 @@ class PrototypesTest : BehaviorSpec({
|
||||||
"collisionMasks": [
|
"collisionMasks": [
|
||||||
"ground-tile"
|
"ground-tile"
|
||||||
],
|
],
|
||||||
"mapColour": {
|
"mapColour": [59, 40, 18, 255],
|
||||||
"red": 59,
|
|
||||||
"green": 40,
|
|
||||||
"blue": 18,
|
|
||||||
"alpha": 255
|
|
||||||
},
|
|
||||||
"canBeMined": false
|
"canBeMined": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -433,12 +313,7 @@ class PrototypesTest : BehaviorSpec({
|
||||||
"collisionMasks": [
|
"collisionMasks": [
|
||||||
"ground-tile"
|
"ground-tile"
|
||||||
],
|
],
|
||||||
"mapColour": {
|
"mapColour": [94, 66, 37, 255],
|
||||||
"red": 94,
|
|
||||||
"green": 66,
|
|
||||||
"blue": 37,
|
|
||||||
"alpha": 255
|
|
||||||
},
|
|
||||||
"canBeMined": false
|
"canBeMined": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -449,12 +324,7 @@ class PrototypesTest : BehaviorSpec({
|
||||||
"collisionMasks": [
|
"collisionMasks": [
|
||||||
"ground-tile"
|
"ground-tile"
|
||||||
],
|
],
|
||||||
"mapColour": {
|
"mapColour": [141, 104, 60, 255],
|
||||||
"red": 141,
|
|
||||||
"green": 104,
|
|
||||||
"blue": 60,
|
|
||||||
"alpha": 255
|
|
||||||
},
|
|
||||||
"canBeMined": false
|
"canBeMined": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -465,12 +335,7 @@ class PrototypesTest : BehaviorSpec({
|
||||||
"collisionMasks": [
|
"collisionMasks": [
|
||||||
"ground-tile"
|
"ground-tile"
|
||||||
],
|
],
|
||||||
"mapColour": {
|
"mapColour": [136, 96, 59, 255],
|
||||||
"red": 136,
|
|
||||||
"green": 96,
|
|
||||||
"blue": 59,
|
|
||||||
"alpha": 255
|
|
||||||
},
|
|
||||||
"canBeMined": false
|
"canBeMined": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -481,12 +346,7 @@ class PrototypesTest : BehaviorSpec({
|
||||||
"collisionMasks": [
|
"collisionMasks": [
|
||||||
"ground-tile"
|
"ground-tile"
|
||||||
],
|
],
|
||||||
"mapColour": {
|
"mapColour": [133, 92, 53, 255],
|
||||||
"red": 133,
|
|
||||||
"green": 92,
|
|
||||||
"blue": 53,
|
|
||||||
"alpha": 255
|
|
||||||
},
|
|
||||||
"canBeMined": false
|
"canBeMined": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -497,12 +357,7 @@ class PrototypesTest : BehaviorSpec({
|
||||||
"collisionMasks": [
|
"collisionMasks": [
|
||||||
"ground-tile"
|
"ground-tile"
|
||||||
],
|
],
|
||||||
"mapColour": {
|
"mapColour": [103, 72, 43, 255],
|
||||||
"red": 103,
|
|
||||||
"green": 72,
|
|
||||||
"blue": 43,
|
|
||||||
"alpha": 255
|
|
||||||
},
|
|
||||||
"canBeMined": false
|
"canBeMined": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -513,12 +368,7 @@ class PrototypesTest : BehaviorSpec({
|
||||||
"collisionMasks": [
|
"collisionMasks": [
|
||||||
"ground-tile"
|
"ground-tile"
|
||||||
],
|
],
|
||||||
"mapColour": {
|
"mapColour": [91, 63, 38, 255],
|
||||||
"red": 91,
|
|
||||||
"green": 63,
|
|
||||||
"blue": 38,
|
|
||||||
"alpha": 255
|
|
||||||
},
|
|
||||||
"canBeMined": false
|
"canBeMined": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -529,12 +379,7 @@ class PrototypesTest : BehaviorSpec({
|
||||||
"collisionMasks": [
|
"collisionMasks": [
|
||||||
"ground-tile"
|
"ground-tile"
|
||||||
],
|
],
|
||||||
"mapColour": {
|
"mapColour": [80, 55, 31, 255],
|
||||||
"red": 80,
|
|
||||||
"green": 55,
|
|
||||||
"blue": 31,
|
|
||||||
"alpha": 255
|
|
||||||
},
|
|
||||||
"canBeMined": false
|
"canBeMined": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -545,12 +390,7 @@ class PrototypesTest : BehaviorSpec({
|
||||||
"collisionMasks": [
|
"collisionMasks": [
|
||||||
"ground-tile"
|
"ground-tile"
|
||||||
],
|
],
|
||||||
"mapColour": {
|
"mapColour": [80, 54, 28, 255],
|
||||||
"red": 80,
|
|
||||||
"green": 54,
|
|
||||||
"blue": 28,
|
|
||||||
"alpha": 255
|
|
||||||
},
|
|
||||||
"canBeMined": false
|
"canBeMined": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -561,12 +401,7 @@ class PrototypesTest : BehaviorSpec({
|
||||||
"collisionMasks": [
|
"collisionMasks": [
|
||||||
"ground-tile"
|
"ground-tile"
|
||||||
],
|
],
|
||||||
"mapColour": {
|
"mapColour": [138, 103, 58, 255],
|
||||||
"red": 138,
|
|
||||||
"green": 103,
|
|
||||||
"blue": 58,
|
|
||||||
"alpha": 255
|
|
||||||
},
|
|
||||||
"canBeMined": false
|
"canBeMined": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -577,12 +412,7 @@ class PrototypesTest : BehaviorSpec({
|
||||||
"collisionMasks": [
|
"collisionMasks": [
|
||||||
"ground-tile"
|
"ground-tile"
|
||||||
],
|
],
|
||||||
"mapColour": {
|
"mapColour": [128, 93, 52, 255],
|
||||||
"red": 128,
|
|
||||||
"green": 93,
|
|
||||||
"blue": 52,
|
|
||||||
"alpha": 255
|
|
||||||
},
|
|
||||||
"canBeMined": false
|
"canBeMined": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -593,12 +423,7 @@ class PrototypesTest : BehaviorSpec({
|
||||||
"collisionMasks": [
|
"collisionMasks": [
|
||||||
"ground-tile"
|
"ground-tile"
|
||||||
],
|
],
|
||||||
"mapColour": {
|
"mapColour": [115, 83, 47, 255],
|
||||||
"red": 115,
|
|
||||||
"green": 83,
|
|
||||||
"blue": 47,
|
|
||||||
"alpha": 255
|
|
||||||
},
|
|
||||||
"canBeMined": false
|
"canBeMined": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -609,12 +434,7 @@ class PrototypesTest : BehaviorSpec({
|
||||||
"collisionMasks": [
|
"collisionMasks": [
|
||||||
"ground-tile"
|
"ground-tile"
|
||||||
],
|
],
|
||||||
"mapColour": {
|
"mapColour": [103, 70, 32, 255],
|
||||||
"red": 103,
|
|
||||||
"green": 70,
|
|
||||||
"blue": 32,
|
|
||||||
"alpha": 255
|
|
||||||
},
|
|
||||||
"canBeMined": false
|
"canBeMined": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -625,12 +445,7 @@ class PrototypesTest : BehaviorSpec({
|
||||||
"collisionMasks": [
|
"collisionMasks": [
|
||||||
"ground-tile"
|
"ground-tile"
|
||||||
],
|
],
|
||||||
"mapColour": {
|
"mapColour": [116, 81, 39, 255],
|
||||||
"red": 116,
|
|
||||||
"green": 81,
|
|
||||||
"blue": 39,
|
|
||||||
"alpha": 255
|
|
||||||
},
|
|
||||||
"canBeMined": false
|
"canBeMined": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -641,12 +456,7 @@ class PrototypesTest : BehaviorSpec({
|
||||||
"collisionMasks": [
|
"collisionMasks": [
|
||||||
"ground-tile"
|
"ground-tile"
|
||||||
],
|
],
|
||||||
"mapColour": {
|
"mapColour": [116, 84, 43, 255],
|
||||||
"red": 116,
|
|
||||||
"green": 84,
|
|
||||||
"blue": 43,
|
|
||||||
"alpha": 255
|
|
||||||
},
|
|
||||||
"canBeMined": false
|
"canBeMined": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -657,12 +467,7 @@ class PrototypesTest : BehaviorSpec({
|
||||||
"collisionMasks": [
|
"collisionMasks": [
|
||||||
"ground-tile"
|
"ground-tile"
|
||||||
],
|
],
|
||||||
"mapColour": {
|
"mapColour": [128, 93, 52, 255],
|
||||||
"red": 128,
|
|
||||||
"green": 93,
|
|
||||||
"blue": 52,
|
|
||||||
"alpha": 255
|
|
||||||
},
|
|
||||||
"canBeMined": false
|
"canBeMined": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -677,12 +482,7 @@ class PrototypesTest : BehaviorSpec({
|
||||||
"resource-layer",
|
"resource-layer",
|
||||||
"water-tile"
|
"water-tile"
|
||||||
],
|
],
|
||||||
"mapColour": {
|
"mapColour": [51, 83, 95, 255],
|
||||||
"red": 51,
|
|
||||||
"green": 83,
|
|
||||||
"blue": 95,
|
|
||||||
"alpha": 255
|
|
||||||
},
|
|
||||||
"canBeMined": false
|
"canBeMined": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -697,12 +497,7 @@ class PrototypesTest : BehaviorSpec({
|
||||||
"resource-layer",
|
"resource-layer",
|
||||||
"water-tile"
|
"water-tile"
|
||||||
],
|
],
|
||||||
"mapColour": {
|
"mapColour": [38, 64, 73, 255],
|
||||||
"red": 38,
|
|
||||||
"green": 64,
|
|
||||||
"blue": 73,
|
|
||||||
"alpha": 255
|
|
||||||
},
|
|
||||||
"canBeMined": false
|
"canBeMined": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -717,12 +512,7 @@ class PrototypesTest : BehaviorSpec({
|
||||||
"resource-layer",
|
"resource-layer",
|
||||||
"water-tile"
|
"water-tile"
|
||||||
],
|
],
|
||||||
"mapColour": {
|
"mapColour": [31, 48, 18, 255],
|
||||||
"red": 31,
|
|
||||||
"green": 48,
|
|
||||||
"blue": 18,
|
|
||||||
"alpha": 255
|
|
||||||
},
|
|
||||||
"canBeMined": false
|
"canBeMined": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -737,12 +527,7 @@ class PrototypesTest : BehaviorSpec({
|
||||||
"resource-layer",
|
"resource-layer",
|
||||||
"water-tile"
|
"water-tile"
|
||||||
],
|
],
|
||||||
"mapColour": {
|
"mapColour": [23, 37, 16, 255],
|
||||||
"red": 23,
|
|
||||||
"green": 37,
|
|
||||||
"blue": 16,
|
|
||||||
"alpha": 255
|
|
||||||
},
|
|
||||||
"canBeMined": false
|
"canBeMined": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -756,12 +541,7 @@ class PrototypesTest : BehaviorSpec({
|
||||||
"resource-layer",
|
"resource-layer",
|
||||||
"water-tile"
|
"water-tile"
|
||||||
],
|
],
|
||||||
"mapColour": {
|
"mapColour": [82, 98, 92, 255],
|
||||||
"red": 82,
|
|
||||||
"green": 98,
|
|
||||||
"blue": 92,
|
|
||||||
"alpha": 255
|
|
||||||
},
|
|
||||||
"canBeMined": false
|
"canBeMined": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -775,12 +555,7 @@ class PrototypesTest : BehaviorSpec({
|
||||||
"resource-layer",
|
"resource-layer",
|
||||||
"water-tile"
|
"water-tile"
|
||||||
],
|
],
|
||||||
"mapColour": {
|
"mapColour": [65, 89, 90, 255],
|
||||||
"red": 65,
|
|
||||||
"green": 89,
|
|
||||||
"blue": 90,
|
|
||||||
"alpha": 255
|
|
||||||
},
|
|
||||||
"canBeMined": false
|
"canBeMined": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -791,12 +566,7 @@ class PrototypesTest : BehaviorSpec({
|
||||||
"collisionMasks": [
|
"collisionMasks": [
|
||||||
"ground-tile"
|
"ground-tile"
|
||||||
],
|
],
|
||||||
"mapColour": {
|
"mapColour": [48, 40, 35, 255],
|
||||||
"red": 48,
|
|
||||||
"green": 40,
|
|
||||||
"blue": 35,
|
|
||||||
"alpha": 255
|
|
||||||
},
|
|
||||||
"canBeMined": false
|
"canBeMined": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -811,12 +581,7 @@ class PrototypesTest : BehaviorSpec({
|
||||||
"resource-layer",
|
"resource-layer",
|
||||||
"water-tile"
|
"water-tile"
|
||||||
],
|
],
|
||||||
"mapColour": {
|
"mapColour": [0, 0, 0, 255],
|
||||||
"red": 0,
|
|
||||||
"green": 0,
|
|
||||||
"blue": 0,
|
|
||||||
"alpha": 255
|
|
||||||
},
|
|
||||||
"canBeMined": false
|
"canBeMined": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -826,12 +591,7 @@ class PrototypesTest : BehaviorSpec({
|
||||||
"layer": 0,
|
"layer": 0,
|
||||||
"collisionMasks": {
|
"collisionMasks": {
|
||||||
},
|
},
|
||||||
"mapColour": {
|
"mapColour": [0, 0, 0, 255],
|
||||||
"red": 0,
|
|
||||||
"green": 0,
|
|
||||||
"blue": 0,
|
|
||||||
"alpha": 255
|
|
||||||
},
|
|
||||||
"canBeMined": false
|
"canBeMined": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -849,12 +609,7 @@ class PrototypesTest : BehaviorSpec({
|
||||||
"resource-layer",
|
"resource-layer",
|
||||||
"water-tile"
|
"water-tile"
|
||||||
],
|
],
|
||||||
"mapColour": {
|
"mapColour": [0, 0, 0, 255],
|
||||||
"red": 0,
|
|
||||||
"green": 0,
|
|
||||||
"blue": 0,
|
|
||||||
"alpha": 255
|
|
||||||
},
|
|
||||||
"canBeMined": false
|
"canBeMined": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -865,12 +620,7 @@ class PrototypesTest : BehaviorSpec({
|
||||||
"collisionMasks": [
|
"collisionMasks": [
|
||||||
"ground-tile"
|
"ground-tile"
|
||||||
],
|
],
|
||||||
"mapColour": {
|
"mapColour": [49, 49, 49, 255],
|
||||||
"red": 49,
|
|
||||||
"green": 49,
|
|
||||||
"blue": 49,
|
|
||||||
"alpha": 255
|
|
||||||
},
|
|
||||||
"canBeMined": false
|
"canBeMined": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -881,12 +631,7 @@ class PrototypesTest : BehaviorSpec({
|
||||||
"collisionMasks": [
|
"collisionMasks": [
|
||||||
"ground-tile"
|
"ground-tile"
|
||||||
],
|
],
|
||||||
"mapColour": {
|
"mapColour": [0, 0, 0, 255],
|
||||||
"red": 0,
|
|
||||||
"green": 0,
|
|
||||||
"blue": 0,
|
|
||||||
"alpha": 255
|
|
||||||
},
|
|
||||||
"canBeMined": false
|
"canBeMined": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -897,12 +642,7 @@ class PrototypesTest : BehaviorSpec({
|
||||||
"collisionMasks": [
|
"collisionMasks": [
|
||||||
"ground-tile"
|
"ground-tile"
|
||||||
],
|
],
|
||||||
"mapColour": {
|
"mapColour": [255, 255, 255, 255],
|
||||||
"red": 255,
|
|
||||||
"green": 255,
|
|
||||||
"blue": 255,
|
|
||||||
"alpha": 255
|
|
||||||
},
|
|
||||||
"canBeMined": false
|
"canBeMined": false
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|
@ -913,12 +653,7 @@ class PrototypesTest : BehaviorSpec({
|
||||||
"collisionMasks": [
|
"collisionMasks": [
|
||||||
"ground-tile"
|
"ground-tile"
|
||||||
],
|
],
|
||||||
"mapColour": {
|
"mapColour": [122, 122, 122, 255],
|
||||||
"red": 122,
|
|
||||||
"green": 122,
|
|
||||||
"blue": 122,
|
|
||||||
"alpha": 255
|
|
||||||
},
|
|
||||||
"canBeMined": false
|
"canBeMined": false
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
|
|
|
||||||
|
|
@ -30,18 +30,8 @@ class UpdatePacketsTest : FunSpec({
|
||||||
"type": "dev.adamko.kafkatorio.schema2.PlayerUpdate",
|
"type": "dev.adamko.kafkatorio.schema2.PlayerUpdate",
|
||||||
"key": {"index": 1},
|
"key": {"index": 1},
|
||||||
"afkTime": 0,
|
"afkTime": 0,
|
||||||
"chatColour": {
|
"chatColour": [1, 0.4, 0.6, 1],
|
||||||
"red": 1,
|
"colour": [0.8, 0.5, 0.2, 0.5],
|
||||||
"green": 0.4,
|
|
||||||
"blue": 0.6,
|
|
||||||
"alpha": 1
|
|
||||||
},
|
|
||||||
"colour": {
|
|
||||||
"red": 0.8,
|
|
||||||
"green": 0.5,
|
|
||||||
"blue": 0.2,
|
|
||||||
"alpha": 0.5
|
|
||||||
},
|
|
||||||
"eventCounts": {
|
"eventCounts": {
|
||||||
"on_player_changed_position": 7,
|
"on_player_changed_position": 7,
|
||||||
"on_player_joined_game": 1
|
"on_player_joined_game": 1
|
||||||
|
|
@ -54,7 +44,10 @@ class UpdatePacketsTest : FunSpec({
|
||||||
"lastOnline": 0,
|
"lastOnline": 0,
|
||||||
"name": "fredthedeadhead",
|
"name": "fredthedeadhead",
|
||||||
"onlineTime": 0,
|
"onlineTime": 0,
|
||||||
"position": [-58, 13],
|
"position": [
|
||||||
|
-58,
|
||||||
|
13
|
||||||
|
],
|
||||||
"tag": ""
|
"tag": ""
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,41 @@
|
||||||
|
package dev.adamko.kafkatorio.processor.serdes
|
||||||
|
|
||||||
|
import dev.adamko.kafkatorio.schema.common.MapTileDictionary
|
||||||
|
import dev.adamko.kafkatorio.schema.common.PrototypeName
|
||||||
|
import io.kotest.core.spec.style.FunSpec
|
||||||
|
import io.kotest.matchers.equality.shouldBeEqualToComparingFields
|
||||||
|
import kotlinx.serialization.decodeFromByteArray
|
||||||
|
import kotlinx.serialization.encodeToByteArray
|
||||||
|
|
||||||
|
class MapTileDictionaryTest : FunSpec({
|
||||||
|
|
||||||
|
context("encode MapTileDictionary") {
|
||||||
|
val actual = MapTileDictionary(
|
||||||
|
tilesXY = mapOf(
|
||||||
|
"-192" to mapOf("-65" to MapTileDictionary.PrototypeKey(2)),
|
||||||
|
"161" to mapOf(
|
||||||
|
"-96" to MapTileDictionary.PrototypeKey(1),
|
||||||
|
"-95" to MapTileDictionary.PrototypeKey(2),
|
||||||
|
"94" to MapTileDictionary.PrototypeKey(2),
|
||||||
|
"93" to MapTileDictionary.PrototypeKey(32),
|
||||||
|
),
|
||||||
|
|
||||||
|
// unknown prototype
|
||||||
|
"44" to mapOf("1" to MapTileDictionary.PrototypeKey(44)),
|
||||||
|
),
|
||||||
|
protos = mapOf(
|
||||||
|
PrototypeName("water") to MapTileDictionary.PrototypeKey(1),
|
||||||
|
PrototypeName("grass-4") to MapTileDictionary.PrototypeKey(2),
|
||||||
|
PrototypeName("grass-3") to MapTileDictionary.PrototypeKey(32),
|
||||||
|
|
||||||
|
PrototypeName("not-used") to MapTileDictionary.PrototypeKey(99),
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
test("binary round trip") {
|
||||||
|
val encoded: ByteArray = kxsBinary.encodeToByteArray(actual)
|
||||||
|
val decoded: MapTileDictionary = kxsBinary.decodeFromByteArray(encoded)
|
||||||
|
decoded.shouldBeEqualToComparingFields(actual)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
})
|
||||||
Loading…
Add table
Add a link
Reference in a new issue