Reorganized the class tree

This commit is contained in:
Yair Morgenstern 2018-06-08 15:43:40 +03:00
parent 95bdcf8dcb
commit 4b7ec5303a
54 changed files with 184 additions and 180 deletions

View File

@ -5,9 +5,9 @@ import com.unciv.logic.city.CityConstructions
import com.unciv.logic.city.CityInfo
import com.unciv.logic.civilization.CivilizationInfo
import com.unciv.logic.map.TileInfo
import com.unciv.logic.map.UnitType
import com.unciv.models.gamebasics.unit.UnitType
import com.unciv.models.gamebasics.GameBasics
import com.unciv.models.gamebasics.Unit
import com.unciv.models.gamebasics.unit.Unit
import com.unciv.ui.utils.getRandom
class Automation {
@ -67,10 +67,10 @@ class Automation {
private fun trainCombatUnit(city: CityInfo) {
val combatUnits = city.cityConstructions.getConstructableUnits().filter { it.unitType != UnitType.Civilian }
val chosenUnit:Unit
val chosenUnit: Unit
if(city.civInfo.cities.any { it.getCenterTile().militaryUnit==null}
&& combatUnits.any { it.unitType==UnitType.Archery }) // this is for city defence so get an archery unit if we can
chosenUnit = combatUnits.filter { it.unitType==UnitType.Archery }.maxBy { it.cost }!!
&& combatUnits.any { it.unitType== UnitType.Archery }) // this is for city defence so get an archery unit if we can
chosenUnit = combatUnits.filter { it.unitType== UnitType.Archery }.maxBy { it.cost }!!
else{ // randomize type of unit and takee the most expensive of its kind
val chosenUnitType = combatUnits.map { it.unitType }.distinct().getRandom()

View File

@ -4,7 +4,7 @@ import com.unciv.logic.civilization.CivilizationInfo
import com.unciv.logic.map.MapUnit
import com.unciv.logic.map.TileInfo
import com.unciv.models.gamebasics.GameBasics
import com.unciv.models.gamebasics.TileImprovement
import com.unciv.models.gamebasics.tile.TileImprovement
class WorkerAutomation {

View File

@ -5,7 +5,7 @@ import com.unciv.UnCivGame
import com.unciv.logic.GameInfo
import com.unciv.logic.city.CityInfo
import com.unciv.logic.map.TileInfo
import com.unciv.logic.map.UnitType
import com.unciv.models.gamebasics.unit.UnitType
import java.util.*
import kotlin.collections.HashMap
import kotlin.math.max
@ -102,7 +102,7 @@ class Battle(val gameInfo:GameInfo=UnCivGame.Current.gameInfo) {
fun calculateDamageToAttacker(attacker: ICombatant, defender: ICombatant): Int {
if(attacker.isRanged()) return 0
if(defender.getUnitType()==UnitType.Civilian) return 0
if(defender.getUnitType()== UnitType.Civilian) return 0
val ratio = getDefendingStrength(attacker,defender) / getAttackingStrength(attacker,defender)
return (ratio * 30 * getHealthDependantDamageRatio(defender)).toInt()
}

View File

@ -3,7 +3,7 @@ package com.unciv.logic.battle
import com.unciv.logic.city.CityInfo
import com.unciv.logic.civilization.CivilizationInfo
import com.unciv.logic.map.TileInfo
import com.unciv.logic.map.UnitType
import com.unciv.models.gamebasics.unit.UnitType
import com.unciv.models.gamebasics.GameBasics
class CityCombatant(val city: CityInfo) : ICombatant {
@ -18,7 +18,7 @@ class CityCombatant(val city: CityInfo) : ICombatant {
if(city.health<1) city.health=1 // min health is 1
}
override fun getUnitType():UnitType=UnitType.City
override fun getUnitType(): UnitType = UnitType.City
override fun getAttackingStrength(defender: ICombatant): Int = getCityStrength()
override fun getDefendingStrength(attacker: ICombatant): Int{
if(isDefeated()) return 1

View File

@ -2,7 +2,7 @@ package com.unciv.logic.battle
import com.unciv.logic.civilization.CivilizationInfo
import com.unciv.logic.map.TileInfo
import com.unciv.logic.map.UnitType
import com.unciv.models.gamebasics.unit.UnitType
interface ICombatant{
fun getName(): String
@ -16,9 +16,9 @@ interface ICombatant{
fun getTile(): TileInfo
fun isMelee(): Boolean {
return this.getUnitType() in listOf(UnitType.Melee,UnitType.Mounted)
return this.getUnitType() in listOf(UnitType.Melee, UnitType.Mounted)
}
fun isRanged(): Boolean {
return this.getUnitType() in listOf(UnitType.Archery,UnitType.Siege)
return this.getUnitType() in listOf(UnitType.Archery, UnitType.Siege)
}
}

View File

@ -3,7 +3,7 @@ package com.unciv.logic.battle
import com.unciv.logic.civilization.CivilizationInfo
import com.unciv.logic.map.MapUnit
import com.unciv.logic.map.TileInfo
import com.unciv.logic.map.UnitType
import com.unciv.models.gamebasics.unit.UnitType
class MapUnitCombatant(val unit: MapUnit) : ICombatant {
override fun getHealth(): Int = unit.health

View File

@ -7,8 +7,8 @@ import com.unciv.logic.map.RoadStatus
import com.unciv.logic.map.TileInfo
import com.unciv.logic.map.TileMap
import com.unciv.models.gamebasics.GameBasics
import com.unciv.models.gamebasics.ResourceType
import com.unciv.models.gamebasics.TileResource
import com.unciv.models.gamebasics.tile.ResourceType
import com.unciv.models.gamebasics.tile.TileResource
import com.unciv.models.linq.Counter
import com.unciv.models.stats.Stats
import kotlin.math.min

View File

@ -9,8 +9,8 @@ import com.unciv.logic.map.RoadStatus
import com.unciv.logic.map.TileInfo
import com.unciv.models.gamebasics.Civilization
import com.unciv.models.gamebasics.GameBasics
import com.unciv.models.gamebasics.ResourceType
import com.unciv.models.gamebasics.TileResource
import com.unciv.models.gamebasics.tile.ResourceType
import com.unciv.models.gamebasics.tile.TileResource
import com.unciv.models.linq.Counter
import com.unciv.models.stats.Stats
import com.unciv.ui.utils.getRandom

View File

@ -4,7 +4,7 @@ package com.unciv.logic.civilization
import com.badlogic.gdx.graphics.Color
import com.unciv.models.gamebasics.GameBasics
import com.unciv.models.gamebasics.Technology
import com.unciv.models.gamebasics.Unit
import com.unciv.models.gamebasics.unit.Unit
import java.util.*
class TechManager {

View File

@ -4,7 +4,8 @@ import com.badlogic.gdx.math.Vector2
import com.unciv.logic.automation.WorkerAutomation
import com.unciv.logic.civilization.CivilizationInfo
import com.unciv.models.gamebasics.GameBasics
import com.unciv.models.gamebasics.Unit
import com.unciv.models.gamebasics.unit.Unit
import com.unciv.models.gamebasics.unit.UnitType
import java.text.DecimalFormat
class MapUnit {
@ -140,13 +141,13 @@ class MapUnit {
}
fun removeFromTile(){
if (getBaseUnit().unitType==UnitType.Civilian) getTile().civilianUnit=null
if (getBaseUnit().unitType== UnitType.Civilian) getTile().civilianUnit=null
else getTile().militaryUnit=null
}
fun putInTile(tile:TileInfo){
if(!canMoveTo(tile)) throw Exception("I can't go there!")
if(getBaseUnit().unitType==UnitType.Civilian)
if(getBaseUnit().unitType== UnitType.Civilian)
tile.civilianUnit=this
else tile.militaryUnit=this
}
@ -156,7 +157,7 @@ class MapUnit {
*/
fun canMoveTo(tile: TileInfo): Boolean {
if(tile.isCityCenter() && tile.getOwner()!!.civName!=owner) return false
if (getBaseUnit().unitType==UnitType.Civilian)
if (getBaseUnit().unitType== UnitType.Civilian)
return tile.civilianUnit==null && (tile.militaryUnit==null || tile.militaryUnit!!.owner==owner)
else return tile.militaryUnit==null && (tile.civilianUnit==null || tile.civilianUnit!!.owner==owner)
}

View File

@ -3,9 +3,9 @@ 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.models.gamebasics.tile.ResourceType
import com.unciv.models.gamebasics.tile.TerrainType
import com.unciv.models.gamebasics.tile.TileResource
import com.unciv.ui.utils.getRandom
class SeedRandomMapGenerator : RandomMapGenerator() {

View File

@ -5,9 +5,9 @@ import com.unciv.UnCivGame
import com.unciv.logic.city.CityInfo
import com.unciv.logic.civilization.CivilizationInfo
import com.unciv.models.gamebasics.GameBasics
import com.unciv.models.gamebasics.Terrain
import com.unciv.models.gamebasics.TileImprovement
import com.unciv.models.gamebasics.TileResource
import com.unciv.models.gamebasics.tile.Terrain
import com.unciv.models.gamebasics.tile.TileImprovement
import com.unciv.models.gamebasics.tile.TileResource
import com.unciv.models.stats.Stats
open class TileInfo {

View File

@ -2,6 +2,10 @@ package com.unciv.models.gamebasics
import com.badlogic.gdx.Gdx
import com.badlogic.gdx.utils.Json
import com.unciv.models.gamebasics.tile.Terrain
import com.unciv.models.gamebasics.tile.TileImprovement
import com.unciv.models.gamebasics.tile.TileResource
import com.unciv.models.gamebasics.unit.Unit
import com.unciv.models.stats.INamed
import kotlin.collections.set

View File

@ -1,4 +1,4 @@
package com.unciv.models.gamebasics
package com.unciv.models.gamebasics.tile
enum class ResourceType {
Luxury,

View File

@ -1,5 +1,7 @@
package com.unciv.models.gamebasics
package com.unciv.models.gamebasics.tile
import com.unciv.models.gamebasics.GameBasics
import com.unciv.models.gamebasics.ICivilopedia
import com.unciv.models.stats.NamedStats
class Terrain : NamedStats(), ICivilopedia {

View File

@ -1,4 +1,4 @@
package com.unciv.models.gamebasics
package com.unciv.models.gamebasics.tile
enum class TerrainType {
BaseTerrain,

View File

@ -1,6 +1,8 @@
package com.unciv.models.gamebasics
package com.unciv.models.gamebasics.tile
import com.unciv.logic.civilization.CivilizationInfo
import com.unciv.models.gamebasics.GameBasics
import com.unciv.models.gamebasics.ICivilopedia
import com.unciv.models.stats.NamedStats
import com.unciv.models.stats.Stats
import java.util.*

View File

@ -1,5 +1,8 @@
package com.unciv.models.gamebasics
package com.unciv.models.gamebasics.tile
import com.unciv.models.gamebasics.Building
import com.unciv.models.gamebasics.GameBasics
import com.unciv.models.gamebasics.ICivilopedia
import com.unciv.models.stats.NamedStats
import com.unciv.models.stats.Stats

View File

@ -1,10 +1,10 @@
package com.unciv.models.gamebasics
package com.unciv.models.gamebasics.unit
import com.unciv.logic.city.CityConstructions
import com.unciv.logic.city.IConstruction
import com.unciv.logic.civilization.CivilizationInfo
import com.unciv.logic.map.MapUnit
import com.unciv.logic.map.UnitType
import com.unciv.models.gamebasics.ICivilopedia
import com.unciv.models.stats.INamed
class Unit : INamed, IConstruction, ICivilopedia {

View File

@ -1,4 +1,4 @@
package com.unciv.logic.map
package com.unciv.models.gamebasics.unit
enum class UnitType{
City,

View File

@ -1,3 +0,0 @@
package com.unciv.models.stats

View File

@ -0,0 +1,10 @@
package com.unciv.models.stats
enum class Stat{
Production,
Food,
Gold,
Science,
Culture,
Happiness
}

View File

@ -1,14 +1,5 @@
package com.unciv.models.stats
enum class Stat{
Production,
Food,
Gold,
Science,
Culture,
Happiness
}
open class Stats() {
var production: Float=0f

View File

@ -6,8 +6,8 @@ import com.badlogic.gdx.scenes.scene2d.ui.List
import com.badlogic.gdx.utils.Array
import com.unciv.models.gamebasics.GameBasics
import com.unciv.models.gamebasics.ICivilopedia
import com.unciv.ui.cityscreen.addClickListener
import com.unciv.ui.utils.CameraStageBaseScreen
import com.unciv.ui.utils.addClickListener
import java.util.*
class CivilopediaScreen : CameraStageBaseScreen() {

View File

@ -9,12 +9,8 @@ import com.badlogic.gdx.utils.Json
import com.unciv.UnCivGame
import com.unciv.logic.GameInfo
import com.unciv.logic.GameSaver
import com.unciv.ui.cityscreen.addClickListener
import com.unciv.ui.pickerscreens.PickerScreen
import com.unciv.ui.utils.CameraStageBaseScreen
import com.unciv.ui.utils.disable
import com.unciv.ui.utils.enable
import com.unciv.ui.utils.setFontColor
import com.unciv.ui.utils.*
import java.text.SimpleDateFormat
import java.util.*

View File

@ -5,8 +5,8 @@ import com.badlogic.gdx.scenes.scene2d.ui.Table
import com.badlogic.gdx.utils.Array
import com.unciv.GameStarter
import com.unciv.models.gamebasics.GameBasics
import com.unciv.ui.cityscreen.addClickListener
import com.unciv.ui.pickerscreens.PickerScreen
import com.unciv.ui.utils.addClickListener
import com.unciv.ui.utils.enable
import com.unciv.ui.worldscreen.WorldScreen

View File

@ -8,8 +8,8 @@ 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.ui.cityscreen.addClickListener
import com.unciv.ui.pickerscreens.PickerScreen
import com.unciv.ui.utils.addClickListener
import com.unciv.ui.utils.enable
import com.unciv.ui.utils.getRandom

View File

@ -5,8 +5,8 @@ import com.badlogic.gdx.scenes.scene2d.ui.Table
import com.badlogic.gdx.scenes.scene2d.ui.TextButton
import com.unciv.UnCivGame
import com.unciv.models.gamebasics.GameBasics
import com.unciv.ui.cityscreen.addClickListener
import com.unciv.ui.pickerscreens.PickerScreen
import com.unciv.ui.utils.addClickListener
class VictoryScreen : PickerScreen() {

View File

@ -1,17 +1,15 @@
package com.unciv.ui.cityscreen
import com.badlogic.gdx.graphics.Color
import com.badlogic.gdx.scenes.scene2d.Actor
import com.badlogic.gdx.scenes.scene2d.InputEvent
import com.badlogic.gdx.scenes.scene2d.ui.Image
import com.badlogic.gdx.scenes.scene2d.ui.Label
import com.badlogic.gdx.scenes.scene2d.ui.Table
import com.badlogic.gdx.scenes.scene2d.utils.ClickListener
import com.unciv.models.gamebasics.Building
import com.unciv.models.stats.Stat
import com.unciv.models.stats.Stats
import com.unciv.ui.utils.CameraStageBaseScreen
import com.unciv.ui.utils.ImageGetter.getImage
import com.unciv.ui.utils.addClickListener
class BuildingsTable(private val cityScreen: CityScreen) : Table() {
@ -100,12 +98,4 @@ class BuildingsTable(private val cityScreen: CityScreen) : Table() {
}
}
fun Actor.addClickListener(function: () -> Unit) {
this.addListener(object : ClickListener() {
override fun clicked(event: InputEvent?, x: Float, y: Float) {
function()
}
} )
}
}

View File

@ -12,6 +12,7 @@ import com.unciv.logic.map.TileInfo
import com.unciv.models.stats.Stats
import com.unciv.ui.utils.CameraStageBaseScreen
import com.unciv.ui.utils.ImageGetter
import com.unciv.ui.utils.addClickListener
import com.unciv.ui.utils.centerX
import java.util.*

View File

@ -10,6 +10,7 @@ import com.unciv.models.gamebasics.Building
import com.unciv.ui.pickerscreens.ConstructionPickerScreen
import com.unciv.ui.utils.CameraStageBaseScreen
import com.unciv.ui.utils.ImageGetter
import com.unciv.ui.utils.addClickListener
import com.unciv.ui.utils.disable
import java.util.*

View File

@ -6,7 +6,7 @@ import com.badlogic.gdx.scenes.scene2d.ui.VerticalGroup
import com.unciv.logic.city.CityInfo
import com.unciv.models.gamebasics.GameBasics
import com.unciv.ui.cityscreen.CityScreen
import com.unciv.ui.cityscreen.addClickListener
import com.unciv.ui.utils.addClickListener
class ConstructionPickerScreen(val city: CityInfo) : PickerScreen() {
private var selectedProduction: String? = null

View File

@ -5,9 +5,9 @@ import com.badlogic.gdx.scenes.scene2d.ui.Button
import com.badlogic.gdx.scenes.scene2d.ui.Label
import com.unciv.UnCivGame
import com.unciv.models.gamebasics.GameBasics
import com.unciv.models.gamebasics.Unit
import com.unciv.ui.cityscreen.addClickListener
import com.unciv.models.gamebasics.unit.Unit
import com.unciv.ui.utils.ImageGetter
import com.unciv.ui.utils.addClickListener
import com.unciv.ui.utils.setFontColor
class GreatPersonPickerScreen : PickerScreen() {

View File

@ -6,9 +6,9 @@ import com.badlogic.gdx.scenes.scene2d.ui.Label
import com.badlogic.gdx.scenes.scene2d.ui.VerticalGroup
import com.unciv.logic.map.TileInfo
import com.unciv.models.gamebasics.GameBasics
import com.unciv.models.gamebasics.TileImprovement
import com.unciv.ui.cityscreen.addClickListener
import com.unciv.models.gamebasics.tile.TileImprovement
import com.unciv.ui.utils.ImageGetter
import com.unciv.ui.utils.addClickListener
import com.unciv.ui.utils.setFontColor
class ImprovementPickerScreen(tileInfo: TileInfo) : PickerScreen() {

View File

@ -4,8 +4,8 @@ import com.badlogic.gdx.graphics.Color
import com.badlogic.gdx.scenes.scene2d.Touchable
import com.badlogic.gdx.scenes.scene2d.ui.*
import com.badlogic.gdx.utils.Align
import com.unciv.ui.cityscreen.addClickListener
import com.unciv.ui.utils.CameraStageBaseScreen
import com.unciv.ui.utils.addClickListener
import com.unciv.ui.utils.disable
open class PickerScreen : CameraStageBaseScreen() {

View File

@ -1,15 +1,12 @@
package com.unciv.ui.pickerscreens
import com.badlogic.gdx.Gdx
import com.badlogic.gdx.graphics.Color
import com.badlogic.gdx.graphics.g2d.freetype.FreeTypeFontGenerator
import com.badlogic.gdx.scenes.scene2d.ui.Button
import com.badlogic.gdx.scenes.scene2d.ui.Table
import com.badlogic.gdx.scenes.scene2d.ui.TextButton
import com.unciv.logic.civilization.CivilizationInfo
import com.unciv.models.gamebasics.GameBasics
import com.unciv.models.gamebasics.Policy
import com.unciv.ui.cityscreen.addClickListener
import com.unciv.ui.utils.*
@ -41,7 +38,7 @@ class PolicyPickerScreen(internal val civInfo: CivilizationInfo) : PickerScreen(
rightSideButton.addClickListener {
civInfo.policies.adopt(pickedPolicy!!)
// If we've mmoved to another screen in the meantime (great person pick, victory screen) ignore this
// If we've moved to another screen in the meantime (great person pick, victory screen) ignore this
if(game.screen is PolicyPickerScreen) game.screen = PolicyPickerScreen(civInfo)
}

View File

@ -6,8 +6,8 @@ import com.unciv.logic.civilization.CivilizationInfo
import com.unciv.logic.civilization.TechManager
import com.unciv.models.gamebasics.GameBasics
import com.unciv.models.gamebasics.Technology
import com.unciv.ui.cityscreen.addClickListener
import com.unciv.ui.utils.CameraStageBaseScreen
import com.unciv.ui.utils.addClickListener
import com.unciv.ui.utils.disable
import java.util.*

View File

@ -9,13 +9,9 @@ import com.unciv.UnCivGame
import com.unciv.logic.city.CityInfo
import com.unciv.logic.map.MapUnit
import com.unciv.logic.map.TileInfo
import com.unciv.logic.map.UnitType
import com.unciv.models.gamebasics.unit.UnitType
import com.unciv.ui.cityscreen.CityScreen
import com.unciv.ui.cityscreen.addClickListener
import com.unciv.ui.utils.CameraStageBaseScreen
import com.unciv.ui.utils.ImageGetter
import com.unciv.ui.utils.center
import com.unciv.ui.utils.setFontColor
import com.unciv.ui.utils.*
class WorldTileGroup(tileInfo: TileInfo) : TileGroup(tileInfo) {
@ -25,7 +21,7 @@ class WorldTileGroup(tileInfo: TileInfo) : TileGroup(tileInfo) {
val whiteHalo = if(unit.isFortified()) ImageGetter.getImage("OtherIcons/Shield.png")
else ImageGetter.getImage("OtherIcons/Circle.png")
whiteHalo.setSize(30f,30f)
val unitImage = if(unit.getBaseUnit().unitType==UnitType.Civilian) civilianUnitImage!!
val unitImage = if(unit.getBaseUnit().unitType== UnitType.Civilian) civilianUnitImage!!
else militaryUnitImage!!
whiteHalo.center(unitImage)
unitImage.addActor(whiteHalo)

View File

@ -10,14 +10,15 @@ import com.badlogic.gdx.graphics.g2d.BitmapFont
import com.badlogic.gdx.graphics.g2d.SpriteBatch
import com.badlogic.gdx.graphics.g2d.freetype.FreeTypeFontGenerator
import com.badlogic.gdx.scenes.scene2d.Actor
import com.badlogic.gdx.scenes.scene2d.InputEvent
import com.badlogic.gdx.scenes.scene2d.Stage
import com.badlogic.gdx.scenes.scene2d.Touchable
import com.badlogic.gdx.scenes.scene2d.ui.*
import com.badlogic.gdx.scenes.scene2d.utils.ClickListener
import com.badlogic.gdx.utils.Align
import com.badlogic.gdx.utils.viewport.ExtendViewport
import com.unciv.UnCivGame
import com.unciv.models.gamebasics.GameBasics
import com.unciv.ui.cityscreen.addClickListener
open class CameraStageBaseScreen : Screen {
@ -139,4 +140,12 @@ fun Label.setFont(size:Int) {
style = Label.LabelStyle(style)
style.font = getFont(size)
style = style // because we need it to call the SetStyle function. Yuk, I know.
}
}
fun Actor.addClickListener(function: () -> Unit) {
this.addListener(object : ClickListener() {
override fun clicked(event: InputEvent?, x: Float, y: Float) {
function()
}
} )
}

View File

@ -8,8 +8,8 @@ import com.badlogic.gdx.scenes.scene2d.ui.Image
import com.badlogic.gdx.scenes.scene2d.ui.ScrollPane
import com.unciv.logic.HexMath
import com.unciv.logic.map.TileInfo
import com.unciv.ui.cityscreen.addClickListener
import com.unciv.ui.utils.ImageGetter
import com.unciv.ui.utils.addClickListener
import com.unciv.ui.utils.colorFromRGB
class Minimap(val tileMapHolder: TileMapHolder) : ScrollPane(null){
@ -37,7 +37,7 @@ class Minimap(val tileMapHolder: TileMapHolder) : ScrollPane(null){
hex.setPosition(positionalVector.x * 0.5f * groupSize,
positionalVector.y * 0.5f * groupSize)
hex.addClickListener {
tileMapHolder.setCenterPosition(tileInfo.position);
tileMapHolder.setCenterPosition(tileInfo.position)
setScrollToTileMapHolder()
}
allTiles.addActor(hex)

View File

@ -5,9 +5,9 @@ import com.badlogic.gdx.scenes.scene2d.ui.Label
import com.badlogic.gdx.scenes.scene2d.ui.ScrollPane
import com.badlogic.gdx.scenes.scene2d.ui.Table
import com.unciv.logic.civilization.Notification
import com.unciv.ui.cityscreen.addClickListener
import com.unciv.ui.utils.CameraStageBaseScreen
import com.unciv.ui.utils.ImageGetter
import com.unciv.ui.utils.addClickListener
import com.unciv.ui.utils.setFontColor
import kotlin.math.min

View File

@ -10,9 +10,9 @@ 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.models.gamebasics.unit.UnitType
import com.unciv.ui.tilegroups.WorldTileGroup
import com.unciv.ui.utils.addClickListener
import com.unciv.ui.utils.colorFromRGB
class TileMapHolder(internal val worldScreen: WorldScreen, internal val tileMap: TileMap, internal val civInfo: CivilizationInfo) : ScrollPane(null) {
@ -111,7 +111,7 @@ class TileMapHolder(internal val worldScreen: WorldScreen, internal val tileMap:
it.getUnits().isNotEmpty()
&& it.getUnits().first().owner != unit.owner
&& civViewableTiles.contains(it)}) {
if(unit.getBaseUnit().unitType==UnitType.Civilian) tileGroups[tile]!!.hideCircle()
if(unit.getBaseUnit().unitType== UnitType.Civilian) tileGroups[tile]!!.hideCircle()
else tileGroups[tile]!!.showCircle(colorFromRGB(237, 41, 57))
}
}

View File

@ -6,13 +6,14 @@ 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.GreatPersonPickerScreen
import com.unciv.ui.pickerscreens.PolicyPickerScreen
import com.unciv.ui.pickerscreens.TechPickerScreen
import com.unciv.ui.utils.CameraStageBaseScreen
import com.unciv.ui.utils.addClickListener
import com.unciv.ui.utils.disable
import com.unciv.ui.utils.enable
import com.unciv.ui.worldscreen.bottombar.WorldScreenBottomBar
import com.unciv.ui.worldscreen.unit.UnitActionsTable
class WorldScreen : CameraStageBaseScreen() {

View File

@ -6,10 +6,10 @@ import com.badlogic.gdx.scenes.scene2d.ui.Label
import com.badlogic.gdx.scenes.scene2d.ui.Table
import com.unciv.logic.civilization.CivilizationInfo
import com.unciv.models.gamebasics.GameBasics
import com.unciv.models.gamebasics.ResourceType
import com.unciv.models.gamebasics.tile.ResourceType
import com.unciv.models.stats.Stats
import com.unciv.ui.cityscreen.addClickListener
import com.unciv.ui.utils.*
import com.unciv.ui.worldscreen.optionstable.WorldScreenOptionsTable
import kotlin.math.abs
import kotlin.math.ceil

View File

@ -1,4 +1,4 @@
package com.unciv.ui.worldscreen
package com.unciv.ui.worldscreen.bottombar
import com.badlogic.gdx.scenes.scene2d.ui.Label
import com.badlogic.gdx.scenes.scene2d.ui.Table
@ -7,12 +7,9 @@ import com.unciv.logic.automation.UnitAutomation
import com.unciv.logic.battle.Battle
import com.unciv.logic.battle.ICombatant
import com.unciv.logic.battle.MapUnitCombatant
import com.unciv.logic.map.UnitType
import com.unciv.ui.cityscreen.addClickListener
import com.unciv.ui.utils.CameraStageBaseScreen
import com.unciv.ui.utils.ImageGetter
import com.unciv.ui.utils.disable
import com.unciv.ui.utils.setFontColor
import com.unciv.models.gamebasics.unit.UnitType
import com.unciv.ui.utils.*
import com.unciv.ui.worldscreen.WorldScreen
import kotlin.math.max
class BattleTable(val worldScreen: WorldScreen): Table() {

View File

@ -1,4 +1,4 @@
package com.unciv.ui.worldscreen
package com.unciv.ui.worldscreen.bottombar
import com.badlogic.gdx.scenes.scene2d.ui.Label
import com.badlogic.gdx.scenes.scene2d.ui.Table
@ -6,6 +6,7 @@ import com.badlogic.gdx.utils.Align
import com.unciv.logic.map.TileInfo
import com.unciv.ui.utils.CameraStageBaseScreen
import com.unciv.ui.utils.ImageGetter
import com.unciv.ui.worldscreen.WorldScreen
class TileInfoTable(private val worldScreen: WorldScreen) : Table() {
init{

View File

@ -1,9 +1,10 @@
package com.unciv.ui.worldscreen
package com.unciv.ui.worldscreen.bottombar
import com.badlogic.gdx.graphics.Color
import com.badlogic.gdx.scenes.scene2d.ui.Table
import com.unciv.logic.map.TileInfo
import com.unciv.ui.utils.ImageGetter
import com.unciv.ui.worldscreen.WorldScreen
import com.unciv.ui.worldscreen.unit.UnitTable
class WorldScreenBottomBar(val worldScreen: WorldScreen) : Table(){

View File

@ -0,0 +1,25 @@
package com.unciv.ui.worldscreen.optionstable
import com.badlogic.gdx.graphics.Color
import com.badlogic.gdx.scenes.scene2d.ui.Table
import com.badlogic.gdx.scenes.scene2d.ui.TextButton
import com.unciv.ui.utils.CameraStageBaseScreen
import com.unciv.ui.utils.ImageGetter
import com.unciv.ui.utils.addClickListener
open class OptionsTable: Table(){
init {
val tileTableBackground = ImageGetter.getDrawable("skin/whiteDot.png")
.tint(Color(0x004085bf))
background = tileTableBackground
this.pad(20f)
this.defaults().pad(5f)
}
fun addButton(text:String, action:()->Unit){
val button = TextButton(text, CameraStageBaseScreen.skin).apply { color= ImageGetter.getBlue() }
button.addClickListener(action)
add(button).row()
}
}

View File

@ -1,75 +1,14 @@
package com.unciv.ui.worldscreen
package com.unciv.ui.worldscreen.optionstable
import com.badlogic.gdx.graphics.Color
import com.badlogic.gdx.scenes.scene2d.Actor
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.scenes.scene2d.utils.ChangeListener
import com.unciv.UnCivGame
import com.unciv.logic.GameSaver
import com.unciv.models.gamebasics.GameBasics
import com.unciv.ui.LoadScreen
import com.unciv.ui.NewGameScreen
import com.unciv.ui.SaveScreen
import com.unciv.ui.VictoryScreen
import com.unciv.ui.cityscreen.addClickListener
import com.unciv.ui.pickerscreens.PolicyPickerScreen
import com.unciv.ui.utils.CameraStageBaseScreen
import com.unciv.ui.utils.ImageGetter
import com.unciv.ui.utils.center
class WorldScreenOptionsTable internal constructor() : OptionsTable() {
init {
addButton("Load game"){
UnCivGame.Current.screen = LoadScreen()
remove()
}
addButton("Save game") {
UnCivGame.Current.screen = SaveScreen()
remove()
}
addButton("Start new game"){ UnCivGame.Current.screen = NewGameScreen() }
addButton("Victory status") { UnCivGame.Current.screen = VictoryScreen() }
addButton("Social Policies"){
UnCivGame.Current.screen = PolicyPickerScreen(UnCivGame.Current.gameInfo.getPlayerCivilization())
}
addButton("Display options"){
UnCivGame.Current.worldScreen.stage.addActor(WorldScreenDisplayOptionsTable())
remove()
}
addButton("Close"){ remove() }
pack() // Needed to show the background.
center(UnCivGame.Current.worldScreen.stage)
}
}
open class OptionsTable:Table(){
init {
val tileTableBackground = ImageGetter.getDrawable("skin/whiteDot.png")
.tint(Color(0x004085bf))
background = tileTableBackground
this.pad(20f)
this.defaults().pad(5f)
}
fun addButton(text:String, action:()->Unit){
val button = TextButton(text, CameraStageBaseScreen.skin).apply { color=ImageGetter.getBlue() }
button.addClickListener(action)
add(button).row()
}
}
class WorldScreenDisplayOptionsTable() : OptionsTable(){
init {
update()

View File

@ -0,0 +1,44 @@
package com.unciv.ui.worldscreen.optionstable
import com.unciv.UnCivGame
import com.unciv.ui.LoadScreen
import com.unciv.ui.NewGameScreen
import com.unciv.ui.SaveScreen
import com.unciv.ui.VictoryScreen
import com.unciv.ui.pickerscreens.PolicyPickerScreen
import com.unciv.ui.utils.center
class WorldScreenOptionsTable internal constructor() : OptionsTable() {
init {
addButton("Load game"){
UnCivGame.Current.screen = LoadScreen()
remove()
}
addButton("Save game") {
UnCivGame.Current.screen = SaveScreen()
remove()
}
addButton("Start new game"){ UnCivGame.Current.screen = NewGameScreen() }
addButton("Victory status") { UnCivGame.Current.screen = VictoryScreen() }
addButton("Social Policies"){
UnCivGame.Current.screen = PolicyPickerScreen(UnCivGame.Current.gameInfo.getPlayerCivilization())
}
addButton("Display options"){
UnCivGame.Current.worldScreen.stage.addActor(WorldScreenDisplayOptionsTable())
remove()
}
addButton("Close"){ remove() }
pack() // Needed to show the background.
center(UnCivGame.Current.worldScreen.stage)
}
}

View File

@ -2,8 +2,8 @@ package com.unciv.ui.worldscreen.unit
import com.badlogic.gdx.scenes.scene2d.ui.TextButton
import com.unciv.logic.map.TileInfo
import com.unciv.ui.cityscreen.addClickListener
import com.unciv.ui.utils.CameraStageBaseScreen
import com.unciv.ui.utils.addClickListener
import com.unciv.ui.utils.disable
import com.unciv.ui.utils.enable
import com.unciv.ui.worldscreen.TileMapHolder

View File

@ -2,7 +2,7 @@ package com.unciv.ui.worldscreen.unit
import com.unciv.logic.automation.WorkerAutomation
import com.unciv.logic.map.MapUnit
import com.unciv.logic.map.UnitType
import com.unciv.models.gamebasics.unit.UnitType
import com.unciv.models.gamebasics.Building
import com.unciv.models.gamebasics.GameBasics
import com.unciv.ui.pickerscreens.ImprovementPickerScreen
@ -42,7 +42,7 @@ class UnitActions {
},true)
}
if(unit.getBaseUnit().unitType!=UnitType.Civilian && !unit.hasUnique("No defensive terrain bonus")){
if(unit.getBaseUnit().unitType!= UnitType.Civilian && !unit.hasUnique("No defensive terrain bonus")){
if(!unit.isFortified())
actionList += UnitAction("Fortify",{unit.action="Fortify 0"}, unit.currentMovement != 0f)
}

View File

@ -7,11 +7,7 @@ import com.badlogic.gdx.scenes.scene2d.ui.Label
import com.badlogic.gdx.scenes.scene2d.ui.Table
import com.unciv.UnCivGame
import com.unciv.logic.map.MapUnit
import com.unciv.ui.cityscreen.addClickListener
import com.unciv.ui.utils.CameraStageBaseScreen
import com.unciv.ui.utils.ImageGetter
import com.unciv.ui.utils.disable
import com.unciv.ui.utils.setFontColor
import com.unciv.ui.utils.*
import com.unciv.ui.worldscreen.WorldScreen
class UnitActionsTable(val worldScreen: WorldScreen) : Table(){

View File

@ -4,9 +4,9 @@ import com.badlogic.gdx.scenes.scene2d.ui.Label
import com.badlogic.gdx.scenes.scene2d.ui.Table
import com.unciv.logic.map.MapUnit
import com.unciv.logic.map.TileInfo
import com.unciv.logic.map.UnitType
import com.unciv.ui.cityscreen.addClickListener
import com.unciv.models.gamebasics.unit.UnitType
import com.unciv.ui.utils.CameraStageBaseScreen
import com.unciv.ui.utils.addClickListener
import com.unciv.ui.worldscreen.WorldScreen
class UnitTable(val worldScreen: WorldScreen) : Table(){