Added "Clear Map" button to Map Editor

This commit is contained in:
Yair Morgenstern 2019-05-04 22:09:07 +03:00
parent d8fd48b4ce
commit 32ea37d4ec
3 changed files with 29 additions and 9 deletions

View File

@ -4,28 +4,47 @@ import com.badlogic.gdx.Gdx
import com.badlogic.gdx.scenes.scene2d.ui.TextButton import com.badlogic.gdx.scenes.scene2d.ui.TextButton
import com.badlogic.gdx.scenes.scene2d.ui.TextField import com.badlogic.gdx.scenes.scene2d.ui.TextField
import com.badlogic.gdx.utils.Json import com.badlogic.gdx.utils.Json
import com.unciv.Constants
import com.unciv.UnCivGame import com.unciv.UnCivGame
import com.unciv.logic.GameSaver import com.unciv.logic.GameSaver
import com.unciv.logic.map.RoadStatus
import com.unciv.models.gamebasics.tr import com.unciv.models.gamebasics.tr
import com.unciv.ui.saves.Gzip import com.unciv.ui.saves.Gzip
import com.unciv.ui.utils.CameraStageBaseScreen
import com.unciv.ui.utils.onClick import com.unciv.ui.utils.onClick
import com.unciv.ui.worldscreen.optionstable.PopupTable import com.unciv.ui.worldscreen.optionstable.PopupTable
class MapEditorOptionsTable(mapEditorScreen: MapEditorScreen): PopupTable(mapEditorScreen){ class MapEditorOptionsTable(mapEditorScreen: MapEditorScreen): PopupTable(mapEditorScreen){
init{ init{
val mapNameEditor = TextField(mapEditorScreen.mapName, CameraStageBaseScreen.skin) val mapNameEditor = TextField(mapEditorScreen.mapName, skin)
mapNameEditor.addListener{ mapEditorScreen.mapName=mapNameEditor.text; true } mapNameEditor.addListener{ mapEditorScreen.mapName=mapNameEditor.text; true }
add(mapNameEditor).row() add(mapNameEditor).row()
val saveMapButton = TextButton("Save".tr(), CameraStageBaseScreen.skin) val clearCurrentMapButton = TextButton("Clear current map".tr(),skin)
clearCurrentMapButton.onClick {
for(tileGroup in mapEditorScreen.mapHolder.tileGroups)
{
val tile = tileGroup.tileInfo
tile.baseTerrain=Constants.ocean
tile.terrainFeature=null
tile.resource=null
tile.improvement=null
tile.improvementInProgress=null
tile.roadStatus=RoadStatus.None
tile.setTransients()
tileGroup.update(true,true,true)
}
}
add(clearCurrentMapButton).row()
val saveMapButton = TextButton("Save".tr(), skin)
saveMapButton.onClick { saveMapButton.onClick {
GameSaver().saveMap(mapEditorScreen.mapName,mapEditorScreen.tileMap) GameSaver().saveMap(mapEditorScreen.mapName,mapEditorScreen.tileMap)
UnCivGame.Current.setWorldScreen() UnCivGame.Current.setWorldScreen()
} }
add(saveMapButton).row() add(saveMapButton).row()
val copyMapAsTextButton = TextButton("Copy to clipboard".tr(), CameraStageBaseScreen.skin) val copyMapAsTextButton = TextButton("Copy to clipboard".tr(), skin)
copyMapAsTextButton.onClick { copyMapAsTextButton.onClick {
val json = Json().toJson(mapEditorScreen.tileMap) val json = Json().toJson(mapEditorScreen.tileMap)
val base64Gzip = Gzip.zip(json) val base64Gzip = Gzip.zip(json)
@ -33,15 +52,15 @@ class MapEditorOptionsTable(mapEditorScreen: MapEditorScreen): PopupTable(mapEdi
} }
add(copyMapAsTextButton).row() add(copyMapAsTextButton).row()
val loadMapButton = TextButton("Load".tr(), CameraStageBaseScreen.skin) val loadMapButton = TextButton("Load".tr(), skin)
loadMapButton.onClick { MapScreenLoadTable(mapEditorScreen); remove() } loadMapButton.onClick { MapScreenLoadTable(mapEditorScreen); remove() }
add(loadMapButton).row() add(loadMapButton).row()
val exitMapEditorButton = TextButton("Exit map editor".tr(), CameraStageBaseScreen.skin) val exitMapEditorButton = TextButton("Exit map editor".tr(), skin)
exitMapEditorButton.onClick { UnCivGame.Current.setWorldScreen(); mapEditorScreen.dispose() } exitMapEditorButton.onClick { UnCivGame.Current.setWorldScreen(); mapEditorScreen.dispose() }
add(exitMapEditorButton ).row() add(exitMapEditorButton ).row()
val closeOptionsButtton = TextButton("Close".tr(), CameraStageBaseScreen.skin) val closeOptionsButtton = TextButton("Close".tr(), skin)
closeOptionsButtton.onClick { remove() } closeOptionsButtton.onClick { remove() }
add(closeOptionsButtton).row() add(closeOptionsButtton).row()

View File

@ -32,6 +32,7 @@ class MapEditorScreen(): CameraStageBaseScreen(){
var tileMap = TileMap(GameParameters()) var tileMap = TileMap(GameParameters())
var mapName = "My first map" var mapName = "My first map"
var currentHex=Group() var currentHex=Group()
lateinit var mapHolder: TileGroupMap<TileGroup>
fun clearSelection(){ fun clearSelection(){
clearTerrainFeature=false clearTerrainFeature=false
@ -116,7 +117,7 @@ class MapEditorScreen(): CameraStageBaseScreen(){
} }
} }
val mapHolder = TileGroupMap(tileGroups, 300f) mapHolder = TileGroupMap(tileGroups, 300f)
val scrollPane = ScrollPane(mapHolder) val scrollPane = ScrollPane(mapHolder)
scrollPane.setSize(stage.width, stage.height) scrollPane.setSize(stage.width, stage.height)
scrollPane.layout() scrollPane.layout()

View File

@ -4,7 +4,7 @@ import com.badlogic.gdx.scenes.scene2d.Group
import com.unciv.logic.HexMath import com.unciv.logic.HexMath
import com.unciv.ui.tilegroups.TileGroup import com.unciv.ui.tilegroups.TileGroup
class TileGroupMap<T: TileGroup>(tileGroups:Collection<T>, padding:Float): Group(){ class TileGroupMap<T: TileGroup>(val tileGroups:Collection<T>, padding:Float): Group(){
init{ init{
var topX = -Float.MAX_VALUE var topX = -Float.MAX_VALUE
var topY = -Float.MAX_VALUE var topY = -Float.MAX_VALUE