mirror of
https://github.com/yairm210/Unciv.git
synced 2025-07-18 11:49:19 +07:00
Debug option to paint coords on map tiles (#8818)
* Debug option to paint coords on map tiles * Debug option to paint coords on map tiles - rename flag
This commit is contained in:
@ -1,5 +1,6 @@
|
|||||||
package com.unciv.ui.components.extensions
|
package com.unciv.ui.components.extensions
|
||||||
|
|
||||||
|
import com.badlogic.gdx.math.Vector2
|
||||||
import com.unciv.models.translations.tr
|
import com.unciv.models.translations.tr
|
||||||
import java.text.SimpleDateFormat
|
import java.text.SimpleDateFormat
|
||||||
import java.time.Duration
|
import java.time.Duration
|
||||||
@ -95,3 +96,5 @@ fun <T> String.filterCompositeLogic(predicate: (String) -> T?, operation: (T, T)
|
|||||||
fun String.filterAndLogic(predicate: (String) -> Boolean): Boolean? =
|
fun String.filterAndLogic(predicate: (String) -> Boolean): Boolean? =
|
||||||
if (contains('{')) filterCompositeLogic(predicate) { a, b -> a && b } else null
|
if (contains('{')) filterCompositeLogic(predicate) { a, b -> a && b } else null
|
||||||
|
|
||||||
|
/** Format a Vector2 like (0,0) instead of (0.0,0.0) like [toString][Vector2.toString] does */
|
||||||
|
fun Vector2.toPrettyString(): String = "(${x.toInt()},${y.toInt()})"
|
||||||
|
@ -22,6 +22,8 @@ import com.unciv.ui.components.tilegroups.YieldGroup
|
|||||||
import com.unciv.ui.components.extensions.center
|
import com.unciv.ui.components.extensions.center
|
||||||
import com.unciv.ui.components.extensions.centerX
|
import com.unciv.ui.components.extensions.centerX
|
||||||
import com.unciv.ui.components.extensions.toLabel
|
import com.unciv.ui.components.extensions.toLabel
|
||||||
|
import com.unciv.ui.components.extensions.toPrettyString
|
||||||
|
import com.unciv.utils.DebugUtils
|
||||||
import kotlin.math.atan2
|
import kotlin.math.atan2
|
||||||
import kotlin.math.min
|
import kotlin.math.min
|
||||||
import kotlin.math.pow
|
import kotlin.math.pow
|
||||||
@ -156,13 +158,34 @@ class TileLayerMisc(tileGroup: TileGroup, size: Float) : TileLayer(tileGroup, si
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun updateStartingLocationIcon(isVisible: Boolean) {
|
private fun updateStartingLocationIcon(isVisible: Boolean) {
|
||||||
// These are visible in map editor only, but making that bit available here seems overkill
|
// The starting location icons are visible in map editor only, but this method is abused for the
|
||||||
|
// "Show coordinates on tiles" debug option as well. Calling code made sure this is only called
|
||||||
|
// with isVisible=false for reset, or for non-WorldMap TileGroups, or with the debug option set.
|
||||||
|
// Note that starting locations should always be empty on the normal WorldMap - they're cleared after use.
|
||||||
|
// Also remember the main menu background is an EditorMapHolder which we can't distinguish from
|
||||||
|
// The actual editor use here.
|
||||||
|
|
||||||
startingLocationIcons.forEach { it.remove() }
|
startingLocationIcons.forEach { it.remove() }
|
||||||
startingLocationIcons.clear()
|
startingLocationIcons.clear()
|
||||||
if (!isVisible || tileGroup.isForMapEditorIcon)
|
if (!isVisible || tileGroup.isForMapEditorIcon)
|
||||||
return
|
return
|
||||||
|
|
||||||
|
if (DebugUtils.SHOW_TILE_COORDS) {
|
||||||
|
val label = this.tile().position.toPrettyString()
|
||||||
|
startingLocationIcons.add(label.toLabel(Color.BLACK.cpy().apply { a = 0.7f }, 14).apply {
|
||||||
|
tileGroup.layerMisc.addActor(this)
|
||||||
|
setOrigin(Align.center)
|
||||||
|
center(tileGroup)
|
||||||
|
moveBy(15.4f, -0.6f)
|
||||||
|
})
|
||||||
|
startingLocationIcons.add(label.toLabel(Color.FIREBRICK, 14).apply {
|
||||||
|
tileGroup.layerMisc.addActor(this)
|
||||||
|
setOrigin(Align.center)
|
||||||
|
center(tileGroup)
|
||||||
|
moveBy(15f, 0f)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
val tilemap = tile().tileMap
|
val tilemap = tile().tileMap
|
||||||
|
|
||||||
if (tilemap.startingLocationsByNation.isEmpty())
|
if (tilemap.startingLocationsByNation.isEmpty())
|
||||||
@ -305,7 +328,8 @@ class TileLayerMisc(tileGroup: TileGroup, size: Float) : TileLayer(tileGroup, si
|
|||||||
updateImprovementIcon(viewingCiv, showResourcesAndImprovements)
|
updateImprovementIcon(viewingCiv, showResourcesAndImprovements)
|
||||||
updateYieldIcon(viewingCiv, showTileYields)
|
updateYieldIcon(viewingCiv, showTileYields)
|
||||||
updateResourceIcon(viewingCiv, showResourcesAndImprovements)
|
updateResourceIcon(viewingCiv, showResourcesAndImprovements)
|
||||||
updateStartingLocationIcon(showResourcesAndImprovements)
|
if (tileGroup !is WorldTileGroup || DebugUtils.SHOW_TILE_COORDS)
|
||||||
|
updateStartingLocationIcon(true)
|
||||||
updateArrows()
|
updateArrows()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -46,6 +46,10 @@ fun debugTab() = Table(BaseScreen.skin).apply {
|
|||||||
add("View entire map".toCheckBox(DebugUtils.VISIBLE_MAP) {
|
add("View entire map".toCheckBox(DebugUtils.VISIBLE_MAP) {
|
||||||
DebugUtils.VISIBLE_MAP = it
|
DebugUtils.VISIBLE_MAP = it
|
||||||
}).colspan(2).row()
|
}).colspan(2).row()
|
||||||
|
add("Show coordinates on tiles".toCheckBox(DebugUtils.SHOW_TILE_COORDS) {
|
||||||
|
DebugUtils.SHOW_TILE_COORDS = it
|
||||||
|
}).colspan(2).row()
|
||||||
|
|
||||||
val curGameInfo = game.gameInfo
|
val curGameInfo = game.gameInfo
|
||||||
if (curGameInfo != null) {
|
if (curGameInfo != null) {
|
||||||
add("God mode (current game)".toCheckBox(curGameInfo.gameParameters.godMode) {
|
add("God mode (current game)".toCheckBox(curGameInfo.gameParameters.godMode) {
|
||||||
|
@ -15,6 +15,7 @@ import com.unciv.ui.screens.basescreen.BaseScreen
|
|||||||
import com.unciv.ui.components.extensions.addBorderAllowOpacity
|
import com.unciv.ui.components.extensions.addBorderAllowOpacity
|
||||||
import com.unciv.ui.components.extensions.darken
|
import com.unciv.ui.components.extensions.darken
|
||||||
import com.unciv.ui.components.extensions.toLabel
|
import com.unciv.ui.components.extensions.toLabel
|
||||||
|
import com.unciv.ui.components.extensions.toPrettyString
|
||||||
import com.unciv.utils.DebugUtils
|
import com.unciv.utils.DebugUtils
|
||||||
|
|
||||||
class TileInfoTable(private val viewingCiv :Civilization) : Table(BaseScreen.skin) {
|
class TileInfoTable(private val viewingCiv :Civilization) : Table(BaseScreen.skin) {
|
||||||
@ -34,7 +35,7 @@ class TileInfoTable(private val viewingCiv :Civilization) : Table(BaseScreen.ski
|
|||||||
UncivGame.Current.pushScreen(CivilopediaScreen(viewingCiv.gameInfo.ruleset, link = it))
|
UncivGame.Current.pushScreen(CivilopediaScreen(viewingCiv.gameInfo.ruleset, link = it))
|
||||||
} ).pad(5f).row()
|
} ).pad(5f).row()
|
||||||
if (DebugUtils.VISIBLE_MAP)
|
if (DebugUtils.VISIBLE_MAP)
|
||||||
add(tile.position.run { "(${x.toInt()},${y.toInt()})" }.toLabel()).colspan(2).pad(5f)
|
add(tile.position.toPrettyString().toLabel()).colspan(2).pad(5f)
|
||||||
}
|
}
|
||||||
|
|
||||||
pack()
|
pack()
|
||||||
|
@ -5,9 +5,13 @@ object DebugUtils {
|
|||||||
/**
|
/**
|
||||||
* This exists so that when debugging we can see the entire map.
|
* This exists so that when debugging we can see the entire map.
|
||||||
* Remember to turn this to false before commit and upload!
|
* Remember to turn this to false before commit and upload!
|
||||||
|
* Or use the "secret" debug page of the options popup instead.
|
||||||
*/
|
*/
|
||||||
var VISIBLE_MAP: Boolean = false
|
var VISIBLE_MAP: Boolean = false
|
||||||
|
|
||||||
|
/** This flag paints the tile coordinates directly onto the map tiles. */
|
||||||
|
var SHOW_TILE_COORDS: Boolean = false
|
||||||
|
|
||||||
/** For when you need to test something in an advanced game and don't have time to faff around */
|
/** For when you need to test something in an advanced game and don't have time to faff around */
|
||||||
var SUPERCHARGED: Boolean = false
|
var SUPERCHARGED: Boolean = false
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user