Skip to content

Commit

Permalink
Bump to korlibs 6.0.0-alpha6
Browse files Browse the repository at this point in the history
  • Loading branch information
soywiz committed Jun 26, 2024
1 parent a503654 commit f4a1b76
Show file tree
Hide file tree
Showing 7 changed files with 26 additions and 94 deletions.
2 changes: 1 addition & 1 deletion gradle/libs.versions.toml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ kotlinx-coroutines = "1.9.0-RC"
kotlinx-serialization = "1.7.0"
kotlinx-atomicfu = "0.24.0"

korlibs = "6.0.0-alpha5"
korlibs = "6.0.0-alpha6"
#korlibs = "999.0.0.999"

kotlinx-benchmark = "0.4.7"
Expand Down
1 change: 1 addition & 0 deletions korge-kotlin-compiler/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,7 @@ korlibs.NativeTools.groovyConfigureSigning(project)
dependencies {
implementation("org.jetbrains.kotlin:kotlin-build-tools-impl")
compileOnly("org.jetbrains.kotlin:kotlin-build-tools-api")
implementation(libs.korlibs.serialization)
//api("org.jetbrains.kotlin:kotlin-compiler-embeddable")
//api("org.jetbrains.kotlin:kotlin-compiler-client-embeddable")
//api("org.jetbrains.kotlin:kotlin-daemon-embeddable")
Expand Down
9 changes: 6 additions & 3 deletions korge-sandbox/src/samples/MainTiledBackground.kt
Original file line number Diff line number Diff line change
@@ -1,10 +1,8 @@
package samples

import korlibs.datastructure.*
import korlibs.image.bitmap.*
import korlibs.image.format.*
import korlibs.image.tiles.*
import korlibs.image.tiles.TileMapRepeat
import korlibs.io.file.std.*
import korlibs.korge.scene.*
import korlibs.korge.view.*
Expand All @@ -18,7 +16,12 @@ class MainTiledBackground : Scene() {
TileSetTileInfo(1, bitmap("korim.png").toBMP32().scaleLinear(0.5, 0.5).slice()),
//TileSetTileInfo(1, Bitmap32(256, 256, Colors.MEDIUMAQUAMARINE).premultipliedIfRequired().slice())
)
val tilemap = tileMap(IntArray2(2, 2, intArrayOf(0, 1, 1, 0)), repeatX = TileMapRepeat.REPEAT, repeatY = TileMapRepeat.REPEAT, tileset = tileset)
val tileMapData = TileMapData(2, 2, tileset, repeatX = TileMapRepeat.REPEAT, repeatY = TileMapRepeat.REPEAT)
tileMapData[0, 0] = Tile(0)
tileMapData[1, 0] = Tile(1)
tileMapData[0, 1] = Tile(1)
tileMapData[1, 1] = Tile(0)
val tilemap = tileMap(tileMapData)
tilemap.x += 300
tilemap.y += 300
addFastUpdater {
Expand Down
9 changes: 5 additions & 4 deletions korge-sandbox/src/samples/MainTilemapTest.kt
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import korlibs.korge.view.align.*
import korlibs.korge.view.camera.*
import korlibs.korge.view.tiles.*
import korlibs.math.geom.*
import korlibs.memory.*
import korlibs.number.*
import kotlin.math.*
import kotlin.random.*
Expand All @@ -29,7 +30,7 @@ class MainTilemapTest : Scene() {
//filters(IdentityFilter)
solidRect(width, height, Colors["#3e0000"])
val cameraContainer = cameraContainer(Size(width, height)) {
tilemap = tileMap(donutMap, tileSet).centerOn(this)
tilemap = tileMap(donutMap.copy(tileSet = tileSet)).centerOn(this)
}//.filters(BlurFilter())
cameraContainer.cameraY = -80.0 * mapSize
val statusOverlay = text("")
Expand Down Expand Up @@ -103,17 +104,17 @@ class MainTilemapTest : Scene() {
private fun makeDonutMap(
mapWidth: Int,
tileSet: TileSet
): IntArray2 {
): TileMapData {
val rand = Random(3)
val mapValues2 = IntArray2(mapWidth, mapWidth, 0)
val mapValues2 = TileMapData(mapWidth, mapWidth, TileSet.EMPTY)
val center = Point(mapWidth / 2, mapWidth / 2)
for (x in 0 until mapWidth) for (y in 0 until mapWidth) {
val p = Point(x, y)
val dist = (p - center).length
val onDisc = dist < mapWidth / 2
val tooClose = dist < (mapWidth / 2) * 0.7
mapValues2[x, y] =
if (onDisc && !tooClose) 1 + rand.nextInt(tileSet.tilesMap.size - 1) else 0
Tile(if (onDisc && !tooClose) 1 + rand.nextInt(tileSet.tilesMap.size - 1) else 0)
}
return mapValues2
}
Expand Down
85 changes: 2 additions & 83 deletions korge/src/korlibs/korge/view/tiles/TileMap.kt
Original file line number Diff line number Diff line change
Expand Up @@ -20,68 +20,13 @@ inline fun Container.tileMap(
callback: @ViewDslMarker TileMap.() -> Unit = {},
) = TileMap(map, map.tileSet, smoothing, map.tileSet.tileSize).repeat(map.repeatX, map.repeatY).addTo(this, callback)

@Deprecated("Use TileMapInfo variant instead")
inline fun Container.tileMap(
map: IStackedIntArray2,
tileset: TileSet,
repeatX: TileMapRepeat = TileMapRepeat.NONE,
repeatY: TileMapRepeat = repeatX,
smoothing: Boolean = true,
tileSize: SizeInt = tileset.tileSize,
callback: @ViewDslMarker TileMap.() -> Unit = {},
) = TileMap(map, tileset, smoothing, tileSize).repeat(repeatX, repeatY).addTo(this, callback)

@Deprecated("Use TileMapInfo variant instead")
inline fun Container.tileMap(
map: IntArray2,
tileset: TileSet,
repeatX: TileMapRepeat = TileMapRepeat.NONE,
repeatY: TileMapRepeat = repeatX,
smoothing: Boolean = true,
tileSize: SizeInt = tileset.tileSize,
callback: @ViewDslMarker TileMap.() -> Unit = {},
) = TileMap(map, tileset, smoothing, tileSize).repeat(repeatX, repeatY).addTo(this, callback)

@PublishedApi
@Deprecated("Use TileMapInfo variant instead")
internal fun Bitmap32.toIntArray2() = IntArray2(width, height, ints)

@Deprecated("Use korlibs.image.tiles.TileMapRepeat instead", replaceWith = ReplaceWith("korlibs.image.tiles.TileMapRepeat"))
typealias TileMapRepeat = korlibs.image.tiles.TileMapRepeat

@Deprecated("Use korlibs.image.tiles.Tile instead", replaceWith = ReplaceWith("korlibs.image.tiles.Tile"))
typealias TileInfo = korlibs.image.tiles.Tile

class TileMap(
var map: TileMapData = TileMapData(1, 1),
tileset: TileSet = map.tileSet,
var smoothing: Boolean = true,
var tileSize: SizeInt = tileset.tileSize,
//) : BaseTileMap(intMap, smoothing, staggerAxis, staggerIndex, tileSize) {
) : View() {
@Deprecated("Use map instead", level = DeprecationLevel.WARNING)
var stackedIntMap: IStackedIntArray2
get() = map.data.asInt()
set(value) { map = TileMapData(value.asLong()) }

// Analogous to Bitmap32.locking
@Deprecated("Not required anymore")
fun lock() {
}
@Deprecated("Not required anymore")
fun unlock() {
//map.contentVersion++
}
@Deprecated("Not required anymore")
inline fun <T> lock(block: () -> T): T {
lock()
try {
return block()
} finally {
unlock()
}
}

private var tileWidth: Float = 0f
private var tileHeight: Float = 0f

Expand Down Expand Up @@ -421,10 +366,8 @@ class TileMap(
var tileset: TileSet = tileset
set(value) {
if (field === value) return
lock {
field = value
updatedTileSet()
}
field = value
updatedTileSet()
}

private fun updatedTileSet() {
Expand All @@ -436,30 +379,6 @@ class TileMap(
tileHeight = tileset.height.toFloat()
}

@Deprecated("Use TileMapInfo variant instead")
constructor(
map: IStackedIntArray2,
tileset: TileSet,
smoothing: Boolean = true,
tileSize: SizeInt = tileset.tileSize,
) : this(TileMapData(map.asLong()), tileset, smoothing, tileSize)

@Deprecated("Use TileMapInfo variant instead")
constructor(
map: IntArray2,
tileset: TileSet,
smoothing: Boolean = true,
tileSize: SizeInt = tileset.tileSize,
) : this(map.toStacked(), tileset, smoothing, tileSize)

@Deprecated("Use TileMapInfo variant instead")
constructor(
map: Bitmap32,
tileset: TileSet,
smoothing: Boolean = true,
tileSize: SizeInt = tileset.tileSize,
) : this(map.toIntArray2().toStacked(), tileset, smoothing, tileSize)

fun pixelHitTest(x: Int, y: Int, direction: HitTestDirection): Boolean {
//if (x < 0 || y < 0) return false // Outside bounds
if (x < 0 || y < 0) return true // Outside bounds
Expand Down
7 changes: 5 additions & 2 deletions korge/test/korlibs/korge/view/tiles/TileMapTest.kt
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import korlibs.image.tiles.*
import korlibs.math.geom.*
import korlibs.math.geom.collider.*
import korlibs.math.geom.shape.*
import korlibs.memory.*
import kotlin.test.*

class TileMapTest {
Expand All @@ -18,7 +19,7 @@ class TileMapTest {
viewsLog {
val log = it.ag as AGLog
log.logFilter = { str, kind -> kind != AGBaseLog.Kind.DRAW_DETAILS && kind != AGBaseLog.Kind.SHADER }
views.stage.tileMap(IntArray2(16, 16) { 0 }, TileSet.fromBitmapSlices(32, 32, listOf(Bitmap32(32, 32, premultiplied = true).slice()))).scale(0.1)
views.stage.tileMap(TileMapData(IntArray2(16, 16) { 0 }, TileSet.fromBitmapSlices(32, 32, listOf(Bitmap32(32, 32, premultiplied = true).slice())))).scale(0.1)
it.views.render()
}
}
Expand All @@ -31,7 +32,9 @@ class TileMapTest {
2 to TileSetTileInfo(0, Bitmap32(16, 16, premultiplied = true).slice(), collision = TileShapeInfoImpl(HitTestDirectionFlags.ALL, EmptyShape2D, Matrix())),
3 to TileSetTileInfo(0, Bitmap32(16, 16, premultiplied = true).slice(), collision = TileShapeInfoImpl(HitTestDirectionFlags.ALL, Rectangle(0, 0, 16, 16).toShape2D(), Matrix())),
))
val map = TileMap(SparseChunkedStackedIntArray2(StackedIntArray2(IntArray2(2, 2, intArrayOf(0, 1, 2, 3)))), tileSet)
fun <T : Int64> int64ArrayOf(vararg values: T): Int64Array = Int64Array(values.size) { values[it] }
fun int64ArrayOf(vararg values: Int): Int64Array = Int64Array(values.size) { values[it].toInt64() }
val map = TileMap(TileMapData(SparseChunkedStackedInt64Array2(StackedInt64Array2(Int64Array2(2, 2, int64ArrayOf(0, 1, 2, 3)))), tileSet))
assertEquals(false, map.pixelHitTest(5, 5, HitTestDirection.DOWN))
assertEquals(false, map.pixelHitTest(16 + 5, 5, HitTestDirection.DOWN))
assertEquals(false, map.pixelHitTest(5, 16 + 5, HitTestDirection.DOWN))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import korlibs.korge.testing.*
import korlibs.korge.view.*
import korlibs.math.geom.*
import korlibs.math.geom.slice.*
import korlibs.memory.*
import kotlin.test.*

class TileMapViewScreenshotTest {
Expand All @@ -17,11 +18,15 @@ class TileMapViewScreenshotTest {
bgcolor = Colors.RED
) {

fun <T : Int64> int64ArrayOf(vararg values: T): Int64Array = Int64Array(values.size) { values[it] }
fun int64ArrayOf(vararg values: Int): Int64Array = Int64Array(values.size) { values[it].toInt64() }

val tileset = TileSet(
TileSetTileInfo(0, Bitmap32(133, 173, Colors.RED.premultiplied).slice()),
TileSetTileInfo(1, Bitmap32(133, 173, Colors.GREEN.premultiplied).slice()),
)
val tilemap = tileMap(IntArray2(2, 2, intArrayOf(0, 1, 1, 0)), repeatX = TileMapRepeat.REPEAT, repeatY = TileMapRepeat.REPEAT, tileset = tileset)

val tilemap = tileMap(TileMapData(StackedInt64Array2(Int64Array2(2, 2, int64ArrayOf(0, 1, 1, 0))), repeatX = TileMapRepeat.REPEAT, repeatY = TileMapRepeat.REPEAT, tileSet = tileset))
tilemap.xy(3000, 1500)

assertScreenshot(this, "offsetInfiniteTilemap", includeBackground = false)
Expand Down

0 comments on commit f4a1b76

Please sign in to comment.