Map Editor UI improvements (#2462)

* Better icons for "clear" tools

* Map editor layout is reworked
This commit is contained in:
Jack Rainy
2020-04-18 21:20:50 +03:00
committed by GitHub
parent 4f00639969
commit d4ef5cb637

View File

@ -6,7 +6,6 @@ import com.badlogic.gdx.scenes.scene2d.Actor
import com.badlogic.gdx.scenes.scene2d.Group
import com.badlogic.gdx.scenes.scene2d.ui.Slider
import com.badlogic.gdx.scenes.scene2d.ui.Table
import com.badlogic.gdx.scenes.scene2d.ui.TextButton
import com.unciv.Constants
import com.unciv.UncivGame
import com.unciv.logic.map.RoadStatus
@ -22,7 +21,7 @@ import com.unciv.ui.utils.*
class TileEditorOptionsTable(val mapEditorScreen: MapEditorScreen): Table(CameraStageBaseScreen.skin){
val tileSetLocation = "TileSets/"+ UncivGame.Current.settings.tileSet +"/"
private val tileSetLocation = "TileSets/"+ UncivGame.Current.settings.tileSet +"/"
var clearTerrainFeature=false
var selectedTerrain : Terrain?=null
@ -37,12 +36,14 @@ class TileEditorOptionsTable(val mapEditorScreen: MapEditorScreen): Table(Camera
var toggleBottomRiver=false
var toggleBottomLeftRiver=false
val editorPickTable = Table()
private val editorPickTable = Table()
var brushSize = 1
private var currentHex: Actor = Group()
val ruleset = mapEditorScreen.ruleset
private val ruleset = mapEditorScreen.ruleset
private val scrollPanelHeight = mapEditorScreen.stage.height*0.7f - 100f // -100 reserved for currentHex table
init{
height = mapEditorScreen.stage.height
@ -104,7 +105,7 @@ class TileEditorOptionsTable(val mapEditorScreen: MapEditorScreen): Table(Camera
}
improvementsTable.add(improvementImage).row()
}
editorPickTable.add(ScrollPane(improvementsTable)).height(mapEditorScreen.stage.height*0.7f)
editorPickTable.add(ScrollPane(improvementsTable)).height(scrollPanelHeight)
val nationsTable = Table()
for(nation in ruleset.nations.values){
@ -118,20 +119,26 @@ class TileEditorOptionsTable(val mapEditorScreen: MapEditorScreen): Table(Camera
nationsTable.add(nationImage).row()
}
editorPickTable.add(ScrollPane(nationsTable)).height(mapEditorScreen.stage.height*0.7f)
editorPickTable.add(ScrollPane(nationsTable)).height(scrollPanelHeight)
}
private fun getRedCross(size: Float, alpha: Float): Actor {
val redCross = ImageGetter.getImage("OtherIcons/Close")
redCross.setSize( size, size)
redCross.color = Color.RED.cpy().apply { a = alpha }
return redCross
}
fun setTerrainsAndResources(){
private fun setTerrainsAndResources(){
val baseTerrainTable = Table().apply { defaults().pad(20f) }
val terrainFeaturesTable = Table().apply { defaults().pad(20f) }
terrainFeaturesTable.add(getHex(Color.WHITE).apply {
terrainFeaturesTable.add(getHex(Color.WHITE, getRedCross(50f, 0.6f)).apply {
onClick {
clearSelection()
clearTerrainFeature = true
setCurrentHex(getHex(Color.WHITE), "Clear terrain features")
setCurrentHex(getHex(Color.WHITE, getRedCross(40f, 0.6f)), "Clear terrain features")
}
}).row()
@ -145,14 +152,14 @@ class TileEditorOptionsTable(val mapEditorScreen: MapEditorScreen): Table(Camera
background = ImageGetter.getBackground(Color.GRAY.cpy().apply { a = 0.7f })
val terrainsAndResourcesTable = Table()
terrainsAndResourcesTable.add(ScrollPane(baseTerrainTable).apply { setScrollingDisabled(true,false) }).height(mapEditorScreen.stage.height*0.7f)
terrainsAndResourcesTable.add(ScrollPane(baseTerrainTable).apply { setScrollingDisabled(true,false) }).height(scrollPanelHeight)
terrainsAndResourcesTable.add(ScrollPane(terrainFeaturesTable).apply { setScrollingDisabled(true,false) }).height(mapEditorScreen.stage.height*0.7f)
terrainsAndResourcesTable.add(ScrollPane(terrainFeaturesTable).apply { setScrollingDisabled(true,false) }).height(scrollPanelHeight)
val resourcesTable = Table()
for(resource in resources) resourcesTable.add(resource).row()
resourcesTable.pack()
terrainsAndResourcesTable.add(ScrollPane(resourcesTable).apply { setScrollingDisabled(true,false) }).height(mapEditorScreen.stage.height*0.7f).row()
terrainsAndResourcesTable.add(ScrollPane(resourcesTable).apply { setScrollingDisabled(true,false) }).height(scrollPanelHeight).row()
terrainsAndResourcesTable.pack()
@ -160,13 +167,21 @@ class TileEditorOptionsTable(val mapEditorScreen: MapEditorScreen): Table(Camera
editorPickTable.add(terrainsAndResourcesTable)
}
private fun getCrossedResource() : Actor {
val redCross = getRedCross(45f, 0.5f)
val group = IconCircleGroup(40f, redCross, false)
group.circle.color = ImageGetter.foodCircleColor
return group
}
private fun getResourceActors(): ArrayList<Actor> {
val resources = ArrayList<Actor>()
resources.add(getHex(Color.WHITE).apply {
resources.add(getHex(Color.WHITE, getCrossedResource()).apply {
onClick {
clearSelection()
clearResource = true
setCurrentHex(getHex(Color.WHITE), "Clear resource")
setCurrentHex(getHex(Color.WHITE, getCrossedResource()), "Clear resource")
}
})
@ -278,7 +293,7 @@ class TileEditorOptionsTable(val mapEditorScreen: MapEditorScreen): Table(Camera
}
fun getHex(color: Color, image: Actor?=null): Group {
private fun getHex(color: Color, image: Actor?=null): Group {
val hex = ImageGetter.getImage(tileSetLocation + "Hexagon")
hex.color = color
hex.width*=0.3f
@ -297,7 +312,7 @@ class TileEditorOptionsTable(val mapEditorScreen: MapEditorScreen): Table(Camera
}
fun clearSelection(){
private fun clearSelection(){
clearTerrainFeature=false
selectedTerrain=null
clearResource=false
@ -392,24 +407,25 @@ class TileEditorOptionsTable(val mapEditorScreen: MapEditorScreen): Table(Camera
}
fun setCurrentHex(tileInfo: TileInfo, text:String){
private fun setCurrentHex(tileInfo: TileInfo, text:String){
val tileGroup = TileGroup(tileInfo,TileSetStrings())
.apply {
showEntireMap=true
forMapEditorIcon=true
update()
}
tileGroup.baseLayerGroup.moveBy(-10f, 10f)
setCurrentHex(tileGroup,text)
}
fun setCurrentHex(actor:Actor, text:String){
private fun setCurrentHex(actor:Actor, text:String){
currentHex.remove()
val currentHexTable = Table()
currentHexTable.add(text.toLabel()).padRight(20f)
currentHexTable.add(actor).pad(10f)
currentHexTable.add(text.toLabel()).padRight(30f)
currentHexTable.add(actor)
currentHexTable.pack()
currentHex=currentHexTable
currentHex.setPosition(stage.width-currentHex.width-10, 10f)
currentHex.setPosition(stage.width - currentHex.width-10, 10f)
stage.addActor(currentHex)
}