Moved map toggle icons near the minimap

This commit is contained in:
Yair Morgenstern 2018-11-24 21:47:09 +02:00
parent 5577022bd7
commit 347d329233
5 changed files with 66 additions and 50 deletions

View File

@ -193,7 +193,7 @@ fun Actor.onClick(function: () -> Unit) {
} ) } )
} }
fun Image.surroundWithCircle(size:Float): IconCircleGroup { fun Actor.surroundWithCircle(size:Float): IconCircleGroup {
return IconCircleGroup(size,this) return IconCircleGroup(size,this)
} }

View File

@ -1,9 +1,9 @@
package com.unciv.ui.utils package com.unciv.ui.utils
import com.badlogic.gdx.scenes.scene2d.Actor
import com.badlogic.gdx.scenes.scene2d.Group import com.badlogic.gdx.scenes.scene2d.Group
import com.badlogic.gdx.scenes.scene2d.ui.Image
class IconCircleGroup(size:Float, val image: Image): Group(){ class IconCircleGroup(size:Float, val image: Actor): Group(){
val circle = ImageGetter.getImage("OtherIcons/Circle").apply { setSize(size, size) } val circle = ImageGetter.getImage("OtherIcons/Circle").apply { setSize(size, size) }
init { init {
setSize(size, size) setSize(size, size)

View File

@ -6,12 +6,15 @@ import com.badlogic.gdx.scenes.scene2d.Group
import com.badlogic.gdx.scenes.scene2d.InputListener import com.badlogic.gdx.scenes.scene2d.InputListener
import com.badlogic.gdx.scenes.scene2d.ui.Image import com.badlogic.gdx.scenes.scene2d.ui.Image
import com.badlogic.gdx.scenes.scene2d.ui.ScrollPane import com.badlogic.gdx.scenes.scene2d.ui.ScrollPane
import com.badlogic.gdx.scenes.scene2d.ui.Table
import com.badlogic.gdx.utils.Align
import com.unciv.UnCivGame import com.unciv.UnCivGame
import com.unciv.logic.HexMath import com.unciv.logic.HexMath
import com.unciv.logic.civilization.CivilizationInfo import com.unciv.logic.civilization.CivilizationInfo
import com.unciv.logic.map.TileInfo import com.unciv.logic.map.TileInfo
import com.unciv.ui.utils.ImageGetter import com.unciv.ui.utils.ImageGetter
import com.unciv.ui.utils.onClick import com.unciv.ui.utils.onClick
import com.unciv.ui.utils.surroundWithCircle
class Minimap(val tileMapHolder: TileMapHolder) : ScrollPane(null){ class Minimap(val tileMapHolder: TileMapHolder) : ScrollPane(null){
val allTiles = Group() val allTiles = Group()
@ -79,4 +82,58 @@ class Minimap(val tileMapHolder: TileMapHolder) : ScrollPane(null){
else hex.color = tileInfo.getBaseTerrain().getColor().lerp(Color.GRAY, 0.5f) // Todo add to baseterrain as function else hex.color = tileInfo.getBaseTerrain().getColor().lerp(Color.GRAY, 0.5f) // Todo add to baseterrain as function
} }
} }
}
class MinimapHolder(val tileMapHolder: TileMapHolder): Table(){
val minimap = Minimap(tileMapHolder)
val worldScreen = tileMapHolder.worldScreen
init{
add(getToggleIcons()).align(Align.bottom)
add(getWrappedMinimap())
pack()
}
fun getWrappedMinimap(): Table {
val internalMinimapWrapper = Table()
internalMinimapWrapper.add(minimap).size(worldScreen.stage.width/5,worldScreen.stage.height/5)
internalMinimapWrapper.background=ImageGetter.getBackground(Color.GRAY)
internalMinimapWrapper.pack()
val externalMinimapWrapper = Table()
externalMinimapWrapper.add(internalMinimapWrapper).pad(5f)
externalMinimapWrapper.background=ImageGetter.getBackground(Color.WHITE)
externalMinimapWrapper.pack()
return externalMinimapWrapper
}
fun getToggleIcons():Table{
val toggleIconTable=Table()
val settings = UnCivGame.Current.settings
val populationImage = ImageGetter.getStatIcon("Population").surroundWithCircle(40f)
populationImage.circle.color = Color.BLACK
populationImage.image.color.a = if(settings.showWorkedTiles) 1f else 0.5f
populationImage.onClick {
settings.showWorkedTiles = !settings.showWorkedTiles
populationImage.image.color.a = if(settings.showWorkedTiles) 1f else 0.5f
worldScreen.update()
}
toggleIconTable.add(populationImage).row()
val resourceImage = ImageGetter.getResourceImage("Cattle",30f).surroundWithCircle(40f)
resourceImage.circle.color = Color.BLACK
resourceImage.image.color.a = if(settings.showResourcesAndImprovements) 1f else 0.5f
resourceImage.onClick {
settings.showResourcesAndImprovements = !settings.showResourcesAndImprovements
resourceImage.image.color.a = if(settings.showResourcesAndImprovements) 1f else 0.5f
worldScreen.update()
}
toggleIconTable.add(resourceImage)
toggleIconTable.pack()
return toggleIconTable
}
fun update(civInfo:CivilizationInfo){minimap.update(civInfo)}
} }

View File

@ -27,7 +27,7 @@ class WorldScreen : CameraStageBaseScreen() {
internal val civInfo: CivilizationInfo = gameInfo.getPlayerCivilization() internal val civInfo: CivilizationInfo = gameInfo.getPlayerCivilization()
val tileMapHolder: TileMapHolder = TileMapHolder(this, gameInfo.tileMap) val tileMapHolder: TileMapHolder = TileMapHolder(this, gameInfo.tileMap)
val minimap = Minimap(tileMapHolder) val minimapWrapper = MinimapHolder(tileMapHolder)
private val topBar = WorldScreenTopBar(this) private val topBar = WorldScreenTopBar(this)
val bottomBar = WorldScreenBottomBar(this) val bottomBar = WorldScreenBottomBar(this)
@ -48,15 +48,7 @@ class WorldScreen : CameraStageBaseScreen() {
notificationsScroll = NotificationsScroll(this) notificationsScroll = NotificationsScroll(this)
notificationsScroll.width = stage.width/3 notificationsScroll.width = stage.width/3
val externalMinimapWrapper = Table() minimapWrapper.x = stage.width - minimapWrapper.width
val internalMinimapWrapper = Table()
internalMinimapWrapper.add(minimap).size(stage.width/5,stage.height/5)
internalMinimapWrapper.background=ImageGetter.getBackground(Color.GRAY)
internalMinimapWrapper.pack()
externalMinimapWrapper.add(internalMinimapWrapper).pad(5f)
externalMinimapWrapper.background=ImageGetter.getBackground(Color.WHITE)
externalMinimapWrapper.pack()
externalMinimapWrapper.x = stage.width - externalMinimapWrapper.width
tileMapHolder.addTiles() tileMapHolder.addTiles()
@ -66,7 +58,7 @@ class WorldScreen : CameraStageBaseScreen() {
} }
stage.addActor(tileMapHolder) stage.addActor(tileMapHolder)
stage.addActor(externalMinimapWrapper) stage.addActor(minimapWrapper)
stage.addActor(topBar) stage.addActor(topBar)
stage.addActor(nextTurnButton) stage.addActor(nextTurnButton)
stage.addActor(techButton) stage.addActor(techButton)
@ -141,15 +133,15 @@ class WorldScreen : CameraStageBaseScreen() {
updateDiplomacyButton(cloneCivilization) updateDiplomacyButton(cloneCivilization)
bottomBar.update(tileMapHolder.selectedTile) // has to come before tilemapholder update because the tilemapholder actions depend on the selected unit! bottomBar.update(tileMapHolder.selectedTile) // has to come before tilemapholder update because the tilemapholder actions depend on the selected unit!
minimap.update(cloneCivilization) minimapWrapper.update(cloneCivilization)
minimap.parent.parent.y = bottomBar.height // couldn't be bothered to create a separate val for minimap wrapper minimapWrapper.y = bottomBar.height // couldn't be bothered to create a separate val for minimap wrapper
unitActionsTable.update(bottomBar.unitTable.selectedUnit) unitActionsTable.update(bottomBar.unitTable.selectedUnit)
unitActionsTable.y = bottomBar.height unitActionsTable.y = bottomBar.height
// if we use the clone, then when we update viewable tiles // if we use the clone, then when we update viewable tiles
// it doesn't update the explored tiles of the civ... need to think about that harder // it doesn't update the explored tiles of the civ... need to think about that harder
// it causes a bug when we move a unit to an unexplored tile (for instance cavalry unit which can move far) // it causes a bug when we move a unit to an unexplored tile (for instance a cavalry unit which can move far)
tileMapHolder.updateTiles(civInfo) tileMapHolder.updateTiles(civInfo)
topBar.update(cloneCivilization) topBar.update(cloneCivilization)

View File

@ -1,10 +1,7 @@
package com.unciv.ui.worldscreen.bottombar package com.unciv.ui.worldscreen.bottombar
import com.badlogic.gdx.scenes.scene2d.Actor
import com.badlogic.gdx.scenes.scene2d.ui.CheckBox
import com.badlogic.gdx.scenes.scene2d.ui.Label import com.badlogic.gdx.scenes.scene2d.ui.Label
import com.badlogic.gdx.scenes.scene2d.ui.Table import com.badlogic.gdx.scenes.scene2d.ui.Table
import com.badlogic.gdx.scenes.scene2d.utils.ChangeListener
import com.badlogic.gdx.utils.Align import com.badlogic.gdx.utils.Align
import com.unciv.UnCivGame import com.unciv.UnCivGame
import com.unciv.logic.map.TileInfo import com.unciv.logic.map.TileInfo
@ -22,7 +19,6 @@ class TileInfoTable(private val worldScreen: WorldScreen) : Table() {
val civInfo = worldScreen.civInfo val civInfo = worldScreen.civInfo
columnDefaults(0).padRight(10f) columnDefaults(0).padRight(10f)
add(getCheckboxTable())
if (civInfo.exploredTiles.contains(tile.position) || UnCivGame.Current.viewEntireMapForDebug) { if (civInfo.exploredTiles.contains(tile.position) || UnCivGame.Current.viewEntireMapForDebug) {
add(getStatsTable(tile)).pad(10f) add(getStatsTable(tile)).pad(10f)
add(Label(tile.toString(), skin)).colspan(2) add(Label(tile.toString(), skin)).colspan(2)
@ -33,35 +29,6 @@ class TileInfoTable(private val worldScreen: WorldScreen) : Table() {
setPosition(worldScreen.stage.width - 10f - width, 10f) setPosition(worldScreen.stage.width - 10f - width, 10f)
} }
fun getCheckboxTable(): Table {
val settings = UnCivGame.Current.settings
val table=Table()
val populationCheckbox = CheckBox("",CameraStageBaseScreen.skin)
populationCheckbox.add(ImageGetter.getStatIcon("Population")).size(20f)
populationCheckbox.isChecked = settings.showWorkedTiles
populationCheckbox.addListener(object : ChangeListener(){
override fun changed(event: ChangeEvent?, actor: Actor?) {
settings.showWorkedTiles = populationCheckbox.isChecked
worldScreen.update()
}
})
table.add(populationCheckbox).row()
val resourceCheckbox = CheckBox("",CameraStageBaseScreen.skin)
resourceCheckbox.add(ImageGetter.getResourceImage("Cattle",20f))
resourceCheckbox.isChecked = settings.showResourcesAndImprovements
resourceCheckbox.addListener(object : ChangeListener(){
override fun changed(event: ChangeEvent?, actor: Actor?) {
settings.showResourcesAndImprovements = resourceCheckbox.isChecked
worldScreen.update()
}
})
table.add(resourceCheckbox).row()
return table
}
fun getStatsTable(tile: TileInfo):Table{ fun getStatsTable(tile: TileInfo):Table{
val table=Table() val table=Table()
table.pad(10f) table.pad(10f)