mirror of
https://github.com/yairm210/Unciv.git
synced 2025-09-29 06:51:30 -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
|
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.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.unciv.UnCivGame
|
import com.unciv.UnCivGame
|
||||||
import com.unciv.logic.GameSaver
|
import com.unciv.logic.GameSaver
|
||||||
import com.unciv.models.gamebasics.tr
|
import com.unciv.models.gamebasics.tr
|
||||||
|
import com.unciv.ui.saves.Gzip
|
||||||
import com.unciv.ui.utils.CameraStageBaseScreen
|
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
|
||||||
@ -22,6 +25,14 @@ class MapEditorOptionsTable(mapEditorScreen: MapEditorScreen): PopupTable(mapEdi
|
|||||||
}
|
}
|
||||||
add(saveMapButton).row()
|
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)
|
val loadMapButton = TextButton("Load".tr(), CameraStageBaseScreen.skin)
|
||||||
loadMapButton.onClick { MapScreenLoadTable(mapEditorScreen); remove() }
|
loadMapButton.onClick { MapScreenLoadTable(mapEditorScreen); remove() }
|
||||||
add(loadMapButton).row()
|
add(loadMapButton).row()
|
||||||
|
@ -22,7 +22,7 @@ import com.unciv.ui.utils.center
|
|||||||
import com.unciv.ui.utils.onClick
|
import com.unciv.ui.utils.onClick
|
||||||
import com.unciv.ui.worldscreen.TileGroupMap
|
import com.unciv.ui.worldscreen.TileGroupMap
|
||||||
|
|
||||||
class MapEditorScreen(var mapToLoad:String?=null): CameraStageBaseScreen(){
|
class MapEditorScreen(): CameraStageBaseScreen(){
|
||||||
var clearTerrainFeature=false
|
var clearTerrainFeature=false
|
||||||
var selectedTerrain : Terrain?=null
|
var selectedTerrain : Terrain?=null
|
||||||
var clearResource=false
|
var clearResource=false
|
||||||
@ -56,17 +56,27 @@ class MapEditorScreen(var mapToLoad:String?=null): CameraStageBaseScreen(){
|
|||||||
return group
|
return group
|
||||||
}
|
}
|
||||||
|
|
||||||
init{
|
constructor(mapNameToLoad:String?):this(){
|
||||||
|
var mapToLoad = mapNameToLoad
|
||||||
if (mapToLoad == null) {
|
if (mapToLoad == null) {
|
||||||
val existingSaves = GameSaver().getMaps()
|
val existingSaves = GameSaver().getMaps()
|
||||||
if(existingSaves.isNotEmpty())
|
if(existingSaves.isNotEmpty())
|
||||||
mapToLoad = existingSaves.first()
|
mapToLoad = existingSaves.first()
|
||||||
}
|
}
|
||||||
if(mapToLoad!=null){
|
if(mapToLoad!=null){
|
||||||
mapName=mapToLoad!!
|
mapName=mapToLoad
|
||||||
tileMap=GameSaver().loadMap(mapName)
|
tileMap=GameSaver().loadMap(mapName)
|
||||||
tileMap.setTransients()
|
|
||||||
}
|
}
|
||||||
|
initialize()
|
||||||
|
}
|
||||||
|
|
||||||
|
constructor(map: TileMap):this(){
|
||||||
|
tileMap = map
|
||||||
|
initialize()
|
||||||
|
}
|
||||||
|
|
||||||
|
fun initialize(){
|
||||||
|
tileMap.setTransients()
|
||||||
val mapHolder = getMapHolder(tileMap)
|
val mapHolder = getMapHolder(tileMap)
|
||||||
|
|
||||||
stage.addActor(mapHolder)
|
stage.addActor(mapHolder)
|
||||||
|
@ -1,11 +1,15 @@
|
|||||||
package com.unciv.ui.mapeditor
|
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.SelectBox
|
||||||
import com.badlogic.gdx.scenes.scene2d.ui.TextButton
|
import com.badlogic.gdx.scenes.scene2d.ui.TextButton
|
||||||
import com.badlogic.gdx.utils.Array
|
import com.badlogic.gdx.utils.Array
|
||||||
|
import com.badlogic.gdx.utils.Json
|
||||||
import com.unciv.UnCivGame
|
import com.unciv.UnCivGame
|
||||||
import com.unciv.logic.GameSaver
|
import com.unciv.logic.GameSaver
|
||||||
|
import com.unciv.logic.map.TileMap
|
||||||
import com.unciv.models.gamebasics.tr
|
import com.unciv.models.gamebasics.tr
|
||||||
|
import com.unciv.ui.saves.Gzip
|
||||||
import com.unciv.ui.utils.CameraStageBaseScreen
|
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
|
||||||
@ -24,6 +28,15 @@ class MapScreenLoadTable(mapEditorScreen: MapEditorScreen): PopupTable(mapEditor
|
|||||||
}
|
}
|
||||||
add(loadMapButton).row()
|
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)
|
val closeOptionsButtton = TextButton("Close".tr(), CameraStageBaseScreen.skin)
|
||||||
closeOptionsButtton.onClick { remove() }
|
closeOptionsButtton.onClick { remove() }
|
||||||
add(closeOptionsButtton).row()
|
add(closeOptionsButtton).row()
|
||||||
|
@ -15,7 +15,7 @@ class WorldScreenOptionsTable(val worldScreen: WorldScreen) : PopupTable(worldSc
|
|||||||
|
|
||||||
init {
|
init {
|
||||||
addButton("Map editor".tr()){
|
addButton("Map editor".tr()){
|
||||||
UnCivGame.Current.screen = MapEditorScreen()
|
UnCivGame.Current.screen = MapEditorScreen(null)
|
||||||
remove()
|
remove()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user