mirror of
https://github.com/yairm210/Unciv.git
synced 2025-02-09 10:29:02 +07:00
Reorganized the class tree
This commit is contained in:
parent
95bdcf8dcb
commit
4b7ec5303a
@ -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()
|
||||
|
@ -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 {
|
||||
|
||||
|
@ -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()
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
}
|
||||
}
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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 {
|
||||
|
@ -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)
|
||||
}
|
||||
|
@ -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() {
|
||||
|
@ -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 {
|
||||
|
@ -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
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
package com.unciv.models.gamebasics
|
||||
package com.unciv.models.gamebasics.tile
|
||||
|
||||
enum class ResourceType {
|
||||
Luxury,
|
@ -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 {
|
@ -1,4 +1,4 @@
|
||||
package com.unciv.models.gamebasics
|
||||
package com.unciv.models.gamebasics.tile
|
||||
|
||||
enum class TerrainType {
|
||||
BaseTerrain,
|
@ -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.*
|
@ -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
|
||||
|
@ -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 {
|
@ -1,4 +1,4 @@
|
||||
package com.unciv.logic.map
|
||||
package com.unciv.models.gamebasics.unit
|
||||
|
||||
enum class UnitType{
|
||||
City,
|
@ -1,3 +0,0 @@
|
||||
package com.unciv.models.stats
|
||||
|
||||
|
10
core/src/com/unciv/models/stats/Stat.kt
Normal file
10
core/src/com/unciv/models/stats/Stat.kt
Normal file
@ -0,0 +1,10 @@
|
||||
package com.unciv.models.stats
|
||||
|
||||
enum class Stat{
|
||||
Production,
|
||||
Food,
|
||||
Gold,
|
||||
Science,
|
||||
Culture,
|
||||
Happiness
|
||||
}
|
@ -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
|
||||
|
@ -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() {
|
||||
|
@ -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.*
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
@ -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() {
|
||||
|
||||
|
@ -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()
|
||||
}
|
||||
} )
|
||||
}
|
||||
}
|
@ -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.*
|
||||
|
||||
|
@ -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.*
|
||||
|
||||
|
@ -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
|
||||
|
@ -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() {
|
||||
|
@ -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() {
|
||||
|
@ -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() {
|
||||
|
@ -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)
|
||||
}
|
||||
|
||||
|
@ -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.*
|
||||
|
||||
|
@ -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)
|
||||
|
@ -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()
|
||||
}
|
||||
} )
|
||||
}
|
||||
|
@ -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)
|
||||
|
@ -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
|
||||
|
||||
|
@ -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))
|
||||
}
|
||||
}
|
||||
|
@ -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() {
|
||||
|
@ -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
|
||||
|
||||
|
@ -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() {
|
@ -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{
|
@ -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(){
|
@ -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()
|
||||
}
|
||||
}
|
@ -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()
|
@ -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)
|
||||
}
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -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)
|
||||
}
|
||||
|
@ -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(){
|
||||
|
@ -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(){
|
||||
|
Loading…
Reference in New Issue
Block a user