mirror of
https://github.com/yairm210/Unciv.git
synced 2025-09-27 13:55:54 -04:00
Resolved #453 - Allow copy-pasting maps as text in map editor
This commit is contained in:
parent
53664ec043
commit
59f5f9ceeb
@ -1,10 +1,13 @@
|
||||
package com.unciv.ui.mapeditor
|
||||
|
||||
import com.badlogic.gdx.Gdx
|
||||
import com.badlogic.gdx.scenes.scene2d.ui.TextButton
|
||||
import com.badlogic.gdx.scenes.scene2d.ui.TextField
|
||||
import com.badlogic.gdx.utils.Json
|
||||
import com.unciv.UnCivGame
|
||||
import com.unciv.logic.GameSaver
|
||||
import com.unciv.models.gamebasics.tr
|
||||
import com.unciv.ui.saves.Gzip
|
||||
import com.unciv.ui.utils.CameraStageBaseScreen
|
||||
import com.unciv.ui.utils.onClick
|
||||
import com.unciv.ui.worldscreen.optionstable.PopupTable
|
||||
@ -22,6 +25,14 @@ class MapEditorOptionsTable(mapEditorScreen: MapEditorScreen): PopupTable(mapEdi
|
||||
}
|
||||
add(saveMapButton).row()
|
||||
|
||||
val copyMapAsTextButton = TextButton("Copy to clipboard".tr(), CameraStageBaseScreen.skin)
|
||||
copyMapAsTextButton.onClick {
|
||||
val json = Json().toJson(mapEditorScreen.tileMap)
|
||||
val base64Gzip = Gzip.zip(json)
|
||||
Gdx.app.clipboard.contents = base64Gzip
|
||||
}
|
||||
add(copyMapAsTextButton).row()
|
||||
|
||||
val loadMapButton = TextButton("Load".tr(), CameraStageBaseScreen.skin)
|
||||
loadMapButton.onClick { MapScreenLoadTable(mapEditorScreen); remove() }
|
||||
add(loadMapButton).row()
|
||||
|
@ -22,7 +22,7 @@ import com.unciv.ui.utils.center
|
||||
import com.unciv.ui.utils.onClick
|
||||
import com.unciv.ui.worldscreen.TileGroupMap
|
||||
|
||||
class MapEditorScreen(var mapToLoad:String?=null): CameraStageBaseScreen(){
|
||||
class MapEditorScreen(): CameraStageBaseScreen(){
|
||||
var clearTerrainFeature=false
|
||||
var selectedTerrain : Terrain?=null
|
||||
var clearResource=false
|
||||
@ -56,17 +56,27 @@ class MapEditorScreen(var mapToLoad:String?=null): CameraStageBaseScreen(){
|
||||
return group
|
||||
}
|
||||
|
||||
init{
|
||||
constructor(mapNameToLoad:String?):this(){
|
||||
var mapToLoad = mapNameToLoad
|
||||
if (mapToLoad == null) {
|
||||
val existingSaves = GameSaver().getMaps()
|
||||
if(existingSaves.isNotEmpty())
|
||||
mapToLoad = existingSaves.first()
|
||||
}
|
||||
if(mapToLoad!=null){
|
||||
mapName=mapToLoad!!
|
||||
mapName=mapToLoad
|
||||
tileMap=GameSaver().loadMap(mapName)
|
||||
tileMap.setTransients()
|
||||
}
|
||||
initialize()
|
||||
}
|
||||
|
||||
constructor(map: TileMap):this(){
|
||||
tileMap = map
|
||||
initialize()
|
||||
}
|
||||
|
||||
fun initialize(){
|
||||
tileMap.setTransients()
|
||||
val mapHolder = getMapHolder(tileMap)
|
||||
|
||||
stage.addActor(mapHolder)
|
||||
|
@ -1,11 +1,15 @@
|
||||
package com.unciv.ui.mapeditor
|
||||
|
||||
import com.badlogic.gdx.Gdx
|
||||
import com.badlogic.gdx.scenes.scene2d.ui.SelectBox
|
||||
import com.badlogic.gdx.scenes.scene2d.ui.TextButton
|
||||
import com.badlogic.gdx.utils.Array
|
||||
import com.badlogic.gdx.utils.Json
|
||||
import com.unciv.UnCivGame
|
||||
import com.unciv.logic.GameSaver
|
||||
import com.unciv.logic.map.TileMap
|
||||
import com.unciv.models.gamebasics.tr
|
||||
import com.unciv.ui.saves.Gzip
|
||||
import com.unciv.ui.utils.CameraStageBaseScreen
|
||||
import com.unciv.ui.utils.onClick
|
||||
import com.unciv.ui.worldscreen.optionstable.PopupTable
|
||||
@ -24,6 +28,15 @@ class MapScreenLoadTable(mapEditorScreen: MapEditorScreen): PopupTable(mapEditor
|
||||
}
|
||||
add(loadMapButton).row()
|
||||
|
||||
val loadFromClipboardButton = TextButton("Load copied data".tr(), CameraStageBaseScreen.skin)
|
||||
loadFromClipboardButton .onClick {
|
||||
val clipboardContentsString = Gdx.app.clipboard.contents.trim()
|
||||
val decoded = Gzip.unzip(clipboardContentsString)
|
||||
val loadedMap = Json().fromJson(TileMap::class.java, decoded)
|
||||
UnCivGame.Current.screen = MapEditorScreen(loadedMap)
|
||||
}
|
||||
add(loadFromClipboardButton).row()
|
||||
|
||||
val closeOptionsButtton = TextButton("Close".tr(), CameraStageBaseScreen.skin)
|
||||
closeOptionsButtton.onClick { remove() }
|
||||
add(closeOptionsButtton).row()
|
||||
|
@ -15,7 +15,7 @@ class WorldScreenOptionsTable(val worldScreen: WorldScreen) : PopupTable(worldSc
|
||||
|
||||
init {
|
||||
addButton("Map editor".tr()){
|
||||
UnCivGame.Current.screen = MapEditorScreen()
|
||||
UnCivGame.Current.screen = MapEditorScreen(null)
|
||||
remove()
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user