mirror of
https://github.com/yairm210/Unciv.git
synced 2025-09-27 05:46:43 -04:00
Filter for the custom maps (#2163)
This commit is contained in:
parent
2cbc0e93e0
commit
c7d020e32d
@ -1030,6 +1030,8 @@ Improvements = Улучшения
|
|||||||
Clear current map = Очистить карту
|
Clear current map = Очистить карту
|
||||||
Save map = Сохранить карту
|
Save map = Сохранить карту
|
||||||
Download map = Скачать карту
|
Download map = Скачать карту
|
||||||
|
Loading... = Загрузка...
|
||||||
|
Filter: = Фильтр:
|
||||||
Exit map editor = Выйти из редактора карт
|
Exit map editor = Выйти из редактора карт
|
||||||
[nation] starting location = Начальное положение [nation]
|
[nation] starting location = Начальное положение [nation]
|
||||||
Clear terrain features = Убрать особенности ландшафта
|
Clear terrain features = Убрать особенности ландшафта
|
||||||
|
@ -1009,7 +1009,9 @@ Terrains & Resources = Місцевість і ресурси
|
|||||||
Improvements = Удосконалення
|
Improvements = Удосконалення
|
||||||
Clear current map = Очистити поточну мапу
|
Clear current map = Очистити поточну мапу
|
||||||
Save map = Зберегти мапу
|
Save map = Зберегти мапу
|
||||||
Download map = Завантажити мапу
|
Download map = Завантажити мапу з інтернету
|
||||||
|
Loading... = Завантаження...
|
||||||
|
Filter: = Фільтр:
|
||||||
Exit map editor = Вийти з редактора мап
|
Exit map editor = Вийти з редактора мап
|
||||||
[nation] starting location = Початкове місцезнаходження [nation]
|
[nation] starting location = Початкове місцезнаходження [nation]
|
||||||
Clear terrain features = Очистити особливості місцевості
|
Clear terrain features = Очистити особливості місцевості
|
||||||
|
@ -1006,6 +1006,8 @@ Improvements =
|
|||||||
Clear current map =
|
Clear current map =
|
||||||
Save map =
|
Save map =
|
||||||
Download map =
|
Download map =
|
||||||
|
Loading... =
|
||||||
|
Filter: =
|
||||||
Exit map editor =
|
Exit map editor =
|
||||||
[nation] starting location =
|
[nation] starting location =
|
||||||
Clear terrain features =
|
Clear terrain features =
|
||||||
|
@ -1,33 +1,55 @@
|
|||||||
package com.unciv.ui.mapeditor
|
package com.unciv.ui.mapeditor
|
||||||
|
|
||||||
import com.badlogic.gdx.Gdx
|
import com.badlogic.gdx.Gdx
|
||||||
import com.badlogic.gdx.scenes.scene2d.ui.ScrollPane
|
import com.badlogic.gdx.scenes.scene2d.ui.*
|
||||||
import com.badlogic.gdx.scenes.scene2d.ui.Table
|
import com.badlogic.gdx.utils.Align
|
||||||
import com.badlogic.gdx.scenes.scene2d.ui.TextButton
|
|
||||||
import com.unciv.UncivGame
|
import com.unciv.UncivGame
|
||||||
import com.unciv.logic.MapSaver
|
import com.unciv.logic.MapSaver
|
||||||
import com.unciv.ui.saves.Gzip
|
import com.unciv.ui.saves.Gzip
|
||||||
import com.unciv.ui.utils.CameraStageBaseScreen
|
import com.unciv.ui.utils.*
|
||||||
import com.unciv.ui.utils.Popup
|
|
||||||
import com.unciv.ui.utils.onClick
|
|
||||||
import com.unciv.ui.worldscreen.mainmenu.DropBox
|
import com.unciv.ui.worldscreen.mainmenu.DropBox
|
||||||
import kotlin.concurrent.thread
|
import kotlin.concurrent.thread
|
||||||
|
|
||||||
class MapDownloadPopup(loadMapScreen: LoadMapScreen): Popup(loadMapScreen) {
|
class MapDownloadPopup(loadMapScreen: LoadMapScreen): Popup(loadMapScreen) {
|
||||||
val contentTable = Table()
|
private val contentTable = Table()
|
||||||
|
private val header = Table()
|
||||||
|
private val listOfMaps = mutableListOf<TextButton>()
|
||||||
|
private val scrollableMapTable = Table()
|
||||||
|
private val loadingLabel = "Loading...".toLabel()
|
||||||
|
|
||||||
init {
|
init {
|
||||||
|
add(header).row()
|
||||||
|
add(loadingLabel).row()
|
||||||
thread(name="LoadMapList") { loadContent() }
|
thread(name="LoadMapList") { loadContent() }
|
||||||
add(contentTable).row()
|
add(contentTable).row()
|
||||||
addCloseButton()
|
addCloseButton()
|
||||||
}
|
}
|
||||||
|
|
||||||
fun loadContent() {
|
private fun createHeader() {
|
||||||
|
header.defaults().pad(5f)
|
||||||
|
header.add("Filter:".toLabel())
|
||||||
|
val filter = TextField("", skin)
|
||||||
|
val listener = TextField.TextFieldListener{ textField: TextField, _: Char -> updateList(textField.text) }
|
||||||
|
filter.setTextFieldListener(listener)
|
||||||
|
header.add(filter).row()
|
||||||
|
header.addSeparator().row()
|
||||||
|
pack()
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun updateList(filterText : String) {
|
||||||
|
scrollableMapTable.clear()
|
||||||
|
listOfMaps.forEach { if (it.text.contains(filterText)) scrollableMapTable.add(it).row() }
|
||||||
|
contentTable.pack()
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun loadContent() {
|
||||||
try {
|
try {
|
||||||
val folderList = DropBox().getFolderList("/Maps")
|
val folderList = DropBox().getFolderList("/Maps")
|
||||||
Gdx.app.postRunnable {
|
Gdx.app.postRunnable {
|
||||||
val scrollableMapTable = Table().apply { defaults().pad(10f) }
|
scrollableMapTable.apply { defaults().pad(10f) }
|
||||||
for (downloadableMap in folderList.entries) {
|
for (downloadableMap in folderList.entries) {
|
||||||
val downloadMapButton = TextButton(downloadableMap.name, CameraStageBaseScreen.skin)
|
val downloadMapButton = TextButton(downloadableMap.name, CameraStageBaseScreen.skin)
|
||||||
|
listOfMaps.add(downloadMapButton)
|
||||||
downloadMapButton.onClick {
|
downloadMapButton.onClick {
|
||||||
thread(name = "MapDownload") { loadMap(downloadableMap) }
|
thread(name = "MapDownload") { loadMap(downloadableMap) }
|
||||||
}
|
}
|
||||||
@ -36,6 +58,10 @@ class MapDownloadPopup(loadMapScreen: LoadMapScreen): Popup(loadMapScreen) {
|
|||||||
contentTable.add(ScrollPane(scrollableMapTable)).height(screen.stage.height * 2 / 3).row()
|
contentTable.add(ScrollPane(scrollableMapTable)).height(screen.stage.height * 2 / 3).row()
|
||||||
pack()
|
pack()
|
||||||
close()
|
close()
|
||||||
|
// the list is loaded and ready to be shown
|
||||||
|
removeActor(loadingLabel)
|
||||||
|
// create the header with a filter tool
|
||||||
|
createHeader()
|
||||||
open()
|
open()
|
||||||
}
|
}
|
||||||
} catch (ex: Exception) {
|
} catch (ex: Exception) {
|
||||||
@ -43,7 +69,7 @@ class MapDownloadPopup(loadMapScreen: LoadMapScreen): Popup(loadMapScreen) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun loadMap(downloadableMap: DropBox.FolderListEntry) {
|
private fun loadMap(downloadableMap: DropBox.FolderListEntry) {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
val mapJsonGzipped = DropBox().downloadFileAsString(downloadableMap.path_display)
|
val mapJsonGzipped = DropBox().downloadFileAsString(downloadableMap.path_display)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user