Fixed quick scaling

This commit is contained in:
Alexey 2025-08-12 15:42:55 +03:00
commit 47cd68fcfe

View file

@ -21,6 +21,7 @@ import androidx.compose.ui.text.drawText
import androidx.compose.ui.text.rememberTextMeasurer import androidx.compose.ui.text.rememberTextMeasurer
import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.text.style.TextAlign
import androidx.compose.ui.text.withStyle import androidx.compose.ui.text.withStyle
import kotlin.math.absoluteValue
@Composable @Composable
fun MapCanvas( fun MapCanvas(
@ -48,18 +49,23 @@ fun MapCanvas(
) )
val oldLevel = tileContainer.getLevel() val oldLevel = tileContainer.getLevel()
val level = scale.floatValue.toInt() val level = scale.floatValue.toInt()
val levelDiff = level - oldLevel
if (oldLevel > level) { if (levelDiff < 0) {
repeat (levelDiff.absoluteValue) {
offsetX.floatValue -= size.width / 2F + TILE_SIZE offsetX.floatValue -= size.width / 2F + TILE_SIZE
offsetY.floatValue -= size.height / 2F + TILE_SIZE offsetY.floatValue -= size.height / 2F + TILE_SIZE
offsetX.floatValue /= 2F offsetX.floatValue /= 2F
offsetY.floatValue /= 2F offsetY.floatValue /= 2F
} else if (oldLevel < level) { }
} else if (levelDiff > 0) {
repeat (levelDiff) {
offsetX.floatValue *= 2F offsetX.floatValue *= 2F
offsetY.floatValue *= 2F offsetY.floatValue *= 2F
offsetX.floatValue += size.width / 2F + TILE_SIZE offsetX.floatValue += size.width / 2F + TILE_SIZE
offsetY.floatValue += size.height / 2F + TILE_SIZE offsetY.floatValue += size.height / 2F + TILE_SIZE
} }
}
val tileOffsetX = (offsetX.floatValue / TILE_SIZE).toInt() val tileOffsetX = (offsetX.floatValue / TILE_SIZE).toInt()
val tileOffsetY = (offsetY.floatValue / TILE_SIZE).toInt() val tileOffsetY = (offsetY.floatValue / TILE_SIZE).toInt()