The ImageGetter changes rulesets correctly when entering\exiting scenario editor

This commit is contained in:
Yair Morgenstern 2020-08-11 22:44:41 +03:00
parent 0c84b95614
commit 7382d4f8e8
5 changed files with 19 additions and 8 deletions

View File

@ -50,6 +50,7 @@ class MainMenuScreen: CameraStageBaseScreen() {
val newMap = MapGenerator(RulesetCache.getBaseRuleset()) val newMap = MapGenerator(RulesetCache.getBaseRuleset())
.generateMap(MapParameters().apply { size = MapSize.Small; type = MapType.default }) .generateMap(MapParameters().apply { size = MapSize.Small; type = MapType.default })
Gdx.app.postRunnable { // for GL context Gdx.app.postRunnable { // for GL context
ImageGetter.setNewRuleset(RulesetCache.getBaseRuleset())
val mapHolder = EditorMapHolder(MapEditorScreen(), newMap) val mapHolder = EditorMapHolder(MapEditorScreen(), newMap)
backgroundTable.addAction(Actions.sequence( backgroundTable.addAction(Actions.sequence(
Actions.fadeOut(0f), Actions.fadeOut(0f),

View File

@ -232,7 +232,7 @@ class DiplomacyManager() {
* This includes friendly and allied city-states and the open border treaties. * This includes friendly and allied city-states and the open border treaties.
*/ */
fun isConsideredFriendlyTerritory(): Boolean { fun isConsideredFriendlyTerritory(): Boolean {
if(civInfo.isCityState() && relationshipLevel() >= RelationshipLevel.Friend) if (civInfo.isCityState() && relationshipLevel() >= RelationshipLevel.Friend)
return true return true
return hasOpenBorders return hasOpenBorders
} }

View File

@ -40,9 +40,11 @@ class GameParametersScreen(var mapEditorScreen: MapEditorScreen): IPreviousScree
mapEditorScreen.ruleset.add(ruleset) mapEditorScreen.ruleset.add(ruleset)
mapEditorScreen.tileEditorOptions.update() mapEditorScreen.tileEditorOptions.update()
// Remove resources that are not applicable to this scenario // Remove resources that are not applicable to this scenario
for(tile in mapEditorScreen.tileMap.values){ for(tile in mapEditorScreen.tileMap.values) {
if(tile.resource!=null && !ruleset.tileResources.containsKey(tile.resource!!)) if (tile.resource != null && !ruleset.tileResources.containsKey(tile.resource!!))
tile.resource=null tile.resource = null
if (tile.improvement != null && !ruleset.tileImprovements.containsKey(tile.improvement!!))
tile.improvement = null
} }
mapEditorScreen.mapHolder.updateTileGroups() mapEditorScreen.mapHolder.updateTileGroups()

View File

@ -12,6 +12,7 @@ import com.unciv.logic.MapSaver
import com.unciv.logic.map.Scenario import com.unciv.logic.map.Scenario
import com.unciv.logic.map.TileInfo import com.unciv.logic.map.TileInfo
import com.unciv.logic.map.TileMap import com.unciv.logic.map.TileMap
import com.unciv.models.ruleset.Ruleset
import com.unciv.models.ruleset.RulesetCache import com.unciv.models.ruleset.RulesetCache
import com.unciv.models.translations.tr import com.unciv.models.translations.tr
import com.unciv.ui.newgamescreen.GameSetupInfo import com.unciv.ui.newgamescreen.GameSetupInfo
@ -23,7 +24,7 @@ class MapEditorScreen(): CameraStageBaseScreen() {
var tileMap = TileMap() var tileMap = TileMap()
var scenarioName = "" // when loading map: mapName is taken as default for scenarioName var scenarioName = "" // when loading map: mapName is taken as default for scenarioName
var scenario: Scenario? = null // main indicator whether scenario information is present var scenario: Scenario? = null // main indicator whether scenario information is present
var ruleset = RulesetCache.getBaseRuleset() var ruleset = Ruleset().apply { add(RulesetCache.getBaseRuleset()) } // Since we change this in scenarios, we can't take the base ruleset directly
var gameSetupInfo = GameSetupInfo() var gameSetupInfo = GameSetupInfo()
lateinit var mapHolder: EditorMapHolder lateinit var mapHolder: EditorMapHolder
@ -64,12 +65,11 @@ class MapEditorScreen(): CameraStageBaseScreen() {
gameSetupInfo.gameParameters = scenario.gameParameters gameSetupInfo.gameParameters = scenario.gameParameters
ruleset = RulesetCache.getComplexRuleset(scenario.gameParameters) ruleset = RulesetCache.getComplexRuleset(scenario.gameParameters)
ImageGetter.ruleset = ruleset
ImageGetter.setTextureRegionDrawables()
initialize() initialize()
} }
fun initialize() { fun initialize() {
ImageGetter.setNewRuleset(ruleset)
tileMap.setTransients(ruleset,false) tileMap.setTransients(ruleset,false)
mapHolder = EditorMapHolder(this, tileMap) mapHolder = EditorMapHolder(this, tileMap)

View File

@ -37,6 +37,12 @@ object ImageGetter {
setTextureRegionDrawables() setTextureRegionDrawables()
} }
fun setNewRuleset(ruleset: Ruleset) {
if (this.ruleset == ruleset) return
this.ruleset = ruleset
setTextureRegionDrawables()
}
fun setTextureRegionDrawables(){ fun setTextureRegionDrawables(){
textureRegionDrawables.clear() textureRegionDrawables.clear()
@ -134,7 +140,9 @@ object ImageGetter {
val iconGroup = getImage("ImprovementIcons/$improvementName").surroundWithCircle(size) val iconGroup = getImage("ImprovementIcons/$improvementName").surroundWithCircle(size)
val improvement = ruleset.tileImprovements[improvementName]!! val improvement = ruleset.tileImprovements[improvementName]
if(improvement==null)
throw Exception("No improvement $improvementName found in ruleset!")
when { when {
improvement.food>0 -> iconGroup.circle.color= foodCircleColor improvement.food>0 -> iconGroup.circle.color= foodCircleColor
improvement.production>0 -> iconGroup.circle.color= productionCircleColor improvement.production>0 -> iconGroup.circle.color= productionCircleColor