mirror of
https://github.com/yairm210/Unciv.git
synced 2025-02-09 10:29:02 +07:00
GameSaver and HexMath are now in "logic" and are not static classes
This commit is contained in:
parent
36f9ba6f8c
commit
9316510a07
@ -5,13 +5,14 @@ import com.badlogic.gdx.Gdx
|
||||
import com.badlogic.gdx.math.Vector2
|
||||
import com.badlogic.gdx.utils.Json
|
||||
import com.unciv.logic.GameInfo
|
||||
import com.unciv.logic.GameSaver
|
||||
import com.unciv.logic.civilization.CivilizationInfo
|
||||
import com.unciv.logic.map.TileMap
|
||||
import com.unciv.models.gamebasics.*
|
||||
import com.unciv.models.gamebasics.Unit
|
||||
import com.unciv.models.stats.INamed
|
||||
import com.unciv.ui.GameSettings
|
||||
import com.unciv.ui.utils.GameSaver
|
||||
import com.unciv.ui.NewGameScreen
|
||||
import com.unciv.ui.utils.getRandom
|
||||
import com.unciv.ui.worldscreen.WorldScreen
|
||||
|
||||
@ -25,7 +26,7 @@ class UnCivGame : Game() {
|
||||
setupGameBasics()
|
||||
|
||||
Current = this
|
||||
if (GameSaver.getSave("Autosave").exists()) {
|
||||
if (GameSaver().getSave("Autosave").exists()) {
|
||||
try {
|
||||
loadGame("Autosave")
|
||||
} catch (ex: Exception) { // silent fail if we can't read the autosave
|
||||
@ -36,7 +37,7 @@ class UnCivGame : Game() {
|
||||
}
|
||||
|
||||
fun loadGame(gameName:String){
|
||||
gameInfo = GameSaver.loadGame( gameName)
|
||||
gameInfo = GameSaver().loadGame( gameName)
|
||||
worldScreen = WorldScreen()
|
||||
setWorldScreen()
|
||||
}
|
||||
|
@ -1,12 +1,11 @@
|
||||
package com.unciv.ui.utils
|
||||
package com.unciv.logic
|
||||
|
||||
import com.badlogic.gdx.Gdx
|
||||
import com.badlogic.gdx.files.FileHandle
|
||||
import com.badlogic.gdx.utils.Json
|
||||
import com.unciv.logic.GameInfo
|
||||
|
||||
object GameSaver {
|
||||
private const val saveFilesFolder = "SaveFiles"
|
||||
class GameSaver {
|
||||
private val saveFilesFolder = "SaveFiles"
|
||||
|
||||
fun getSave(GameName: String): FileHandle {
|
||||
return Gdx.files.local("$saveFilesFolder/$GameName")
|
@ -1,9 +1,9 @@
|
||||
package com.unciv.ui.utils
|
||||
package com.unciv.logic
|
||||
|
||||
import com.badlogic.gdx.math.Vector2
|
||||
import java.util.*
|
||||
|
||||
object HexMath {
|
||||
class HexMath {
|
||||
|
||||
fun GetVectorForAngle(angle: Float): Vector2 {
|
||||
return Vector2(Math.sin(angle.toDouble()).toFloat(), Math.cos(angle.toDouble()).toFloat())
|
@ -1,11 +1,11 @@
|
||||
package com.unciv.logic.map
|
||||
|
||||
import com.badlogic.gdx.math.Vector2
|
||||
import com.unciv.logic.HexMath
|
||||
import com.unciv.models.gamebasics.GameBasics
|
||||
import com.unciv.models.gamebasics.ResourceType
|
||||
import com.unciv.models.gamebasics.TerrainType
|
||||
import com.unciv.models.gamebasics.TileResource
|
||||
import com.unciv.ui.utils.HexMath
|
||||
import com.unciv.ui.utils.getRandom
|
||||
|
||||
class SeedRandomMapGenerator : RandomMapGenerator() {
|
||||
@ -14,7 +14,7 @@ class SeedRandomMapGenerator : RandomMapGenerator() {
|
||||
|
||||
val map = HashMap<Vector2, TileInfo?>()
|
||||
|
||||
for (vector in HexMath.GetVectorsInDistance(Vector2.Zero, distance))
|
||||
for (vector in HexMath().GetVectorsInDistance(Vector2.Zero, distance))
|
||||
map[vector] = null
|
||||
|
||||
class Area(val terrain: String) {
|
||||
@ -49,7 +49,7 @@ class SeedRandomMapGenerator : RandomMapGenerator() {
|
||||
val expandableAreas = ArrayList<Area>(areas)
|
||||
while (expandableAreas.isNotEmpty()){
|
||||
val areaToExpand = expandableAreas.getRandom()
|
||||
val availableExpansionVectors = areaToExpand.locations.flatMap { HexMath.GetAdjacentVectors(it) }.distinct()
|
||||
val availableExpansionVectors = areaToExpand.locations.flatMap { HexMath().GetAdjacentVectors(it) }.distinct()
|
||||
.filter { map.containsKey(it) && map[it] == null }
|
||||
if(availableExpansionVectors.isEmpty()) expandableAreas -= areaToExpand
|
||||
else {
|
||||
@ -130,7 +130,7 @@ open class RandomMapGenerator {
|
||||
|
||||
open fun generateMap(distance: Int): HashMap<String, TileInfo> {
|
||||
val map = HashMap<String, TileInfo>()
|
||||
for (vector in HexMath.GetVectorsInDistance(Vector2.Zero, distance))
|
||||
for (vector in HexMath().GetVectorsInDistance(Vector2.Zero, distance))
|
||||
map[vector.toString()] = addRandomTile(vector)
|
||||
return map
|
||||
}
|
||||
|
@ -2,9 +2,9 @@ package com.unciv.logic.map
|
||||
|
||||
import com.badlogic.gdx.math.Vector2
|
||||
import com.unciv.logic.GameInfo
|
||||
import com.unciv.logic.HexMath
|
||||
import com.unciv.logic.civilization.CivilizationInfo
|
||||
import com.unciv.models.gamebasics.GameBasics
|
||||
import com.unciv.ui.utils.HexMath
|
||||
|
||||
class TileMap {
|
||||
|
||||
@ -33,11 +33,11 @@ class TileMap {
|
||||
}
|
||||
|
||||
fun getTilesInDistance(origin: Vector2, distance: Int): List<TileInfo> {
|
||||
return HexMath.GetVectorsInDistance(origin, distance).filter {contains(it)}.map { get(it) }
|
||||
return HexMath().GetVectorsInDistance(origin, distance).filter {contains(it)}.map { get(it) }
|
||||
}
|
||||
|
||||
fun getTilesAtDistance(origin: Vector2, distance: Int): List<TileInfo> {
|
||||
return HexMath.GetVectorsAtDistance(origin, distance).filter {contains(it)}.map { get(it) }
|
||||
return HexMath().GetVectorsAtDistance(origin, distance).filter {contains(it)}.map { get(it) }
|
||||
|
||||
}
|
||||
|
||||
|
@ -1,13 +1,16 @@
|
||||
package com.unciv.ui
|
||||
|
||||
import com.badlogic.gdx.graphics.Color
|
||||
import com.badlogic.gdx.scenes.scene2d.ui.SelectBox
|
||||
import com.badlogic.gdx.scenes.scene2d.ui.Table
|
||||
import com.badlogic.gdx.scenes.scene2d.ui.TextButton
|
||||
import com.badlogic.gdx.utils.Array
|
||||
import com.unciv.UnCivGame
|
||||
import com.unciv.logic.GameSaver
|
||||
import com.unciv.models.gamebasics.GameBasics
|
||||
import com.unciv.ui.cityscreen.addClickListener
|
||||
import com.unciv.ui.pickerscreens.PickerScreen
|
||||
import com.unciv.ui.utils.CameraStageBaseScreen
|
||||
import com.unciv.ui.utils.GameSaver
|
||||
import com.unciv.ui.utils.disable
|
||||
import com.unciv.ui.utils.enable
|
||||
|
||||
@ -20,14 +23,14 @@ class LoadScreen : PickerScreen() {
|
||||
|
||||
val deleteSaveButton = TextButton("Delete save", CameraStageBaseScreen.skin)
|
||||
deleteSaveButton .addClickListener {
|
||||
GameSaver.deleteSave(selectedSave)
|
||||
GameSaver().deleteSave(selectedSave)
|
||||
UnCivGame.Current.screen = LoadScreen()
|
||||
}
|
||||
deleteSaveButton.disable()
|
||||
rightSideGroup.addActor(deleteSaveButton)
|
||||
|
||||
topTable.add(saveTable)
|
||||
val saves = GameSaver.getSaves()
|
||||
val saves = GameSaver().getSaves()
|
||||
rightSideButton.setText("Load game")
|
||||
saves.forEach {
|
||||
val textButton = TextButton(it,skin)
|
||||
@ -51,7 +54,38 @@ class LoadScreen : PickerScreen() {
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
class NewGameScreen:CameraStageBaseScreen(){
|
||||
init {
|
||||
val table = Table()
|
||||
table.skin=skin
|
||||
|
||||
table.add("Civilization: ")
|
||||
val civSelectBox = SelectBox<String>(skin)
|
||||
val civArray = Array<String>()
|
||||
GameBasics.Civilizations.keys.filterNot { it=="Barbarians" }.forEach{civArray.add(it)}
|
||||
civSelectBox.setItems(civArray)
|
||||
civSelectBox.selected = civSelectBox.items.first()
|
||||
table.add(civSelectBox).pad(10f).row()
|
||||
|
||||
table.add("World size: ")
|
||||
val worldSizeToRadius=LinkedHashMap<String,Int>()
|
||||
worldSizeToRadius.put("Small",10)
|
||||
worldSizeToRadius.put("Medium",20)
|
||||
worldSizeToRadius.put("Large",30)
|
||||
val worldSizeSelectBox = SelectBox<String>(skin)
|
||||
val worldSizeArray = Array<String>()
|
||||
worldSizeToRadius.keys.forEach{worldSizeArray.add(it)}
|
||||
worldSizeSelectBox.setItems(worldSizeArray)
|
||||
worldSizeSelectBox.selected = "Medium"
|
||||
table.add(worldSizeSelectBox)
|
||||
|
||||
val createButton = TextButton("Start game!",skin)
|
||||
createButton.addClickListener { }
|
||||
|
||||
table.setFillParent(true)
|
||||
table.pack()
|
||||
stage.addActor(table)
|
||||
}
|
||||
}
|
@ -5,9 +5,9 @@ import com.badlogic.gdx.scenes.scene2d.ui.Table
|
||||
import com.badlogic.gdx.scenes.scene2d.ui.TextButton
|
||||
import com.badlogic.gdx.scenes.scene2d.ui.TextField
|
||||
import com.unciv.UnCivGame
|
||||
import com.unciv.logic.GameSaver
|
||||
import com.unciv.ui.cityscreen.addClickListener
|
||||
import com.unciv.ui.pickerscreens.PickerScreen
|
||||
import com.unciv.ui.utils.GameSaver
|
||||
import com.unciv.ui.utils.enable
|
||||
import java.text.SimpleDateFormat
|
||||
import java.util.*
|
||||
@ -19,7 +19,7 @@ class SaveScreen : PickerScreen() {
|
||||
val currentSaves = Table()
|
||||
|
||||
currentSaves.add(Label("Current saves:",skin)).row()
|
||||
val saves = GameSaver.getSaves()
|
||||
val saves = GameSaver().getSaves()
|
||||
saves.forEach {
|
||||
val textButton = TextButton(it, skin)
|
||||
textButton.addClickListener {
|
||||
@ -44,7 +44,7 @@ class SaveScreen : PickerScreen() {
|
||||
|
||||
rightSideButton.setText("Save game")
|
||||
rightSideButton.addClickListener {
|
||||
GameSaver.saveGame(UnCivGame.Current.gameInfo, textField.text)
|
||||
GameSaver().saveGame(UnCivGame.Current.gameInfo, textField.text)
|
||||
UnCivGame.Current.setWorldScreen()
|
||||
}
|
||||
rightSideButton.enable()
|
||||
|
@ -6,10 +6,10 @@ import com.badlogic.gdx.scenes.scene2d.InputEvent
|
||||
import com.badlogic.gdx.scenes.scene2d.ui.*
|
||||
import com.badlogic.gdx.scenes.scene2d.utils.ActorGestureListener
|
||||
import com.badlogic.gdx.utils.Align
|
||||
import com.unciv.logic.HexMath
|
||||
import com.unciv.logic.city.CityInfo
|
||||
import com.unciv.logic.map.TileInfo
|
||||
import com.unciv.ui.utils.CameraStageBaseScreen
|
||||
import com.unciv.ui.utils.HexMath
|
||||
import com.unciv.ui.utils.ImageGetter
|
||||
import com.unciv.ui.utils.centerX
|
||||
import java.util.*
|
||||
@ -181,7 +181,7 @@ class CityScreen(internal val city: CityInfo) : CameraStageBaseScreen() {
|
||||
}
|
||||
}
|
||||
|
||||
val positionalVector = HexMath.Hex2WorldCoords(tileInfo.position.cpy().sub(cityInfo.location))
|
||||
val positionalVector = HexMath().Hex2WorldCoords(tileInfo.position.cpy().sub(cityInfo.location))
|
||||
val groupSize = 50
|
||||
group.setPosition(stage.width / 2 + positionalVector.x * 0.8f * groupSize.toFloat(),
|
||||
stage.height / 2 + positionalVector.y * 0.8f * groupSize.toFloat())
|
||||
|
@ -4,10 +4,10 @@ import com.badlogic.gdx.graphics.Color
|
||||
import com.badlogic.gdx.scenes.scene2d.Group
|
||||
import com.badlogic.gdx.scenes.scene2d.ui.Image
|
||||
import com.badlogic.gdx.utils.Align
|
||||
import com.unciv.logic.HexMath
|
||||
import com.unciv.logic.map.MapUnit
|
||||
import com.unciv.logic.map.RoadStatus
|
||||
import com.unciv.logic.map.TileInfo
|
||||
import com.unciv.ui.utils.HexMath
|
||||
import com.unciv.ui.utils.ImageGetter
|
||||
import com.unciv.ui.utils.center
|
||||
import com.unciv.ui.utils.colorFromRGB
|
||||
@ -111,7 +111,7 @@ open class TileGroup(var tileInfo: TileInfo) : Group() {
|
||||
for (neighbor in tileInfo.neighbors.filter { it.getOwner() != tileInfo.getOwner() }) {
|
||||
|
||||
val relativeHexPosition = tileInfo.position.cpy().sub(neighbor.position)
|
||||
val relativeWorldPosition = HexMath.Hex2WorldCoords(relativeHexPosition)
|
||||
val relativeWorldPosition = HexMath().Hex2WorldCoords(relativeHexPosition)
|
||||
|
||||
// This is some crazy voodoo magic so I'll explain.
|
||||
|
||||
@ -150,7 +150,7 @@ open class TileGroup(var tileInfo: TileInfo) : Group() {
|
||||
roadImages[neighbor.position.toString()] = image
|
||||
|
||||
val relativeHexPosition = tileInfo.position.cpy().sub(neighbor.position)
|
||||
val relativeWorldPosition = HexMath.Hex2WorldCoords(relativeHexPosition)
|
||||
val relativeWorldPosition = HexMath().Hex2WorldCoords(relativeHexPosition)
|
||||
|
||||
// This is some crazy voodoo magic so I'll explain.
|
||||
image.moveBy(25f, 25f) // Move road to center of tile
|
||||
|
@ -6,13 +6,13 @@ import com.badlogic.gdx.scenes.scene2d.Group
|
||||
import com.badlogic.gdx.scenes.scene2d.InputEvent
|
||||
import com.badlogic.gdx.scenes.scene2d.ui.ScrollPane
|
||||
import com.badlogic.gdx.scenes.scene2d.utils.ActorGestureListener
|
||||
import com.unciv.logic.HexMath
|
||||
import com.unciv.logic.civilization.CivilizationInfo
|
||||
import com.unciv.logic.map.TileInfo
|
||||
import com.unciv.logic.map.TileMap
|
||||
import com.unciv.logic.map.UnitType
|
||||
import com.unciv.ui.cityscreen.addClickListener
|
||||
import com.unciv.ui.tilegroups.WorldTileGroup
|
||||
import com.unciv.ui.utils.HexMath
|
||||
import com.unciv.ui.utils.colorFromRGB
|
||||
|
||||
class TileMapHolder(internal val worldScreen: WorldScreen, internal val tileMap: TileMap, internal val civInfo: CivilizationInfo) : ScrollPane(null) {
|
||||
@ -40,7 +40,7 @@ class TileMapHolder(internal val worldScreen: WorldScreen, internal val tileMap:
|
||||
|
||||
|
||||
|
||||
val positionalVector = HexMath.Hex2WorldCoords(tileInfo.position)
|
||||
val positionalVector = HexMath().Hex2WorldCoords(tileInfo.position)
|
||||
val groupSize = 50
|
||||
group.setPosition(worldScreen.stage.width / 2 + positionalVector.x * 0.8f * groupSize.toFloat(),
|
||||
worldScreen.stage.height / 2 + positionalVector.y * 0.8f * groupSize.toFloat())
|
||||
|
@ -3,12 +3,12 @@ package com.unciv.ui.worldscreen
|
||||
import com.badlogic.gdx.math.Vector2
|
||||
import com.badlogic.gdx.scenes.scene2d.ui.Label
|
||||
import com.badlogic.gdx.scenes.scene2d.ui.TextButton
|
||||
import com.unciv.logic.GameSaver
|
||||
import com.unciv.logic.civilization.CivilizationInfo
|
||||
import com.unciv.ui.cityscreen.addClickListener
|
||||
import com.unciv.ui.pickerscreens.PolicyPickerScreen
|
||||
import com.unciv.ui.pickerscreens.TechPickerScreen
|
||||
import com.unciv.ui.utils.CameraStageBaseScreen
|
||||
import com.unciv.ui.utils.GameSaver
|
||||
import com.unciv.ui.worldscreen.unit.UnitActionsTable
|
||||
|
||||
class WorldScreen : CameraStageBaseScreen() {
|
||||
@ -115,7 +115,7 @@ class WorldScreen : CameraStageBaseScreen() {
|
||||
|
||||
game.gameInfo.nextTurn()
|
||||
bottomBar.unitTable.currentlyExecutingAction = null
|
||||
kotlin.concurrent.thread { GameSaver.saveGame(game.gameInfo, "Autosave") }
|
||||
kotlin.concurrent.thread { GameSaver().saveGame(game.gameInfo, "Autosave") }
|
||||
update()
|
||||
displayTutorials("NextTurn")
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user