All text is now Roboto and much sharper!

Added lots of "Translatable" words
Organized City Screen a little bit
This commit is contained in:
Yair Morgenstern 2018-06-12 21:28:17 +03:00
parent 0c71c39bc2
commit 9e3772a58d
11 changed files with 64 additions and 56 deletions

View File

@ -7,6 +7,7 @@ import com.unciv.UnCivGame
import com.unciv.models.gamebasics.GameBasics
import com.unciv.ui.pickerscreens.PickerScreen
import com.unciv.ui.utils.addClickListener
import com.unciv.ui.utils.tr
class VictoryScreen : PickerScreen() {
@ -46,7 +47,7 @@ class VictoryScreen : PickerScreen() {
}
fun won(){
rightSideButton.setText("Start new game")
rightSideButton.setText("Start new game".tr())
rightSideButton.isVisible=true
closeButton.isVisible=false
rightSideButton.addClickListener { UnCivGame.Current.startNewGame(true) }

View File

@ -10,10 +10,7 @@ import com.unciv.logic.HexMath
import com.unciv.logic.city.CityInfo
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 com.unciv.ui.utils.*
import java.util.*
class CityScreen(internal val city: CityInfo) : CameraStageBaseScreen() {
@ -24,12 +21,10 @@ class CityScreen(internal val city: CityInfo) : CameraStageBaseScreen() {
private var cityStatsTable = CityStatsTable(this)
private var statExplainer = Table(skin)
private var cityPickerTable = Table()
private var goToWorldButton = TextButton("Exit city", CameraStageBaseScreen.skin)
private var goToWorldButton = TextButton("Exit city".tr(), CameraStageBaseScreen.skin)
private var tileGroups = ArrayList<CityTileGroup>()
init {
Label("", CameraStageBaseScreen.skin).style.font.data.setScale(1.5f)
addTiles()
stage.addActor(tileTable)
@ -119,7 +114,7 @@ class CityScreen(internal val city: CityInfo) : CameraStageBaseScreen() {
private fun updateCityPickerTable() {
cityPickerTable.clear()
cityPickerTable.row().pad(20f)
cityPickerTable.row()
val civInfo = city.civInfo
if (civInfo.cities.size > 1) {
@ -130,13 +125,19 @@ class CityScreen(internal val city: CityInfo) : CameraStageBaseScreen() {
game.screen = CityScreen(civInfo.cities[indexOfNextCity])
dispose()
}
cityPickerTable.add(prevCityButton)
cityPickerTable.add(prevCityButton).pad(20f)
}
if(city.isCapital()){
val starImage = Image(ImageGetter.getDrawable("OtherIcons/Star.png").tint(Color.LIGHT_GRAY))
cityPickerTable.add(starImage).size(20f).padRight(5f)
}
val currentCityLabel = Label(city.name+" ("+city.population.population+")", CameraStageBaseScreen.skin)
currentCityLabel.setFontScale(2f)
currentCityLabel.setFont(25)
cityPickerTable.add(currentCityLabel)
if (civInfo.cities.size > 1) {
val nextCityButton = TextButton(">", CameraStageBaseScreen.skin)
nextCityButton.addClickListener {
@ -145,20 +146,19 @@ class CityScreen(internal val city: CityInfo) : CameraStageBaseScreen() {
game.screen = CityScreen(civInfo.cities[indexOfNextCity])
dispose()
}
cityPickerTable.add(nextCityButton)
cityPickerTable.add(nextCityButton).pad(20f)
}
cityPickerTable.row()
if (civInfo.cities.size > 1) cityPickerTable.add()
if(!city.isBeingRazed) {
val razeCityButton = TextButton("Raze city", skin)
val razeCityButton = TextButton("Raze city".tr(), skin)
razeCityButton.addClickListener { city.isBeingRazed=true; update() }
cityPickerTable.add(razeCityButton)
cityPickerTable.add(razeCityButton).colspan(cityPickerTable.columns)
}
else{
val stopRazingCityButton = TextButton("Stop razing city", skin)
val stopRazingCityButton = TextButton("Stop razing city".tr(), skin)
stopRazingCityButton.addClickListener { city.isBeingRazed=false; update() }
cityPickerTable.add(stopRazingCityButton)
cityPickerTable.add(stopRazingCityButton).colspan(cityPickerTable.columns)
}
cityPickerTable.pack()
@ -174,8 +174,9 @@ class CityScreen(internal val city: CityInfo) : CameraStageBaseScreen() {
dispose()
}
goToWorldButton.pad(5f)
goToWorldButton.setSize(goToWorldButton.prefWidth, goToWorldButton.prefHeight)
goToWorldButton.setPosition(10f, stage.height - goToWorldButton.height - 5f)
goToWorldButton.setPosition(20f, stage.height - goToWorldButton.height - 20)
}
private fun addTiles() {
@ -248,7 +249,7 @@ class CityScreen(internal val city: CityInfo) : CameraStageBaseScreen() {
tileTable.columnDefaults(0).padRight(10f)
val cityStatsHeader = Label("Tile Stats", CameraStageBaseScreen.skin)
cityStatsHeader.setFontScale(2f)
cityStatsHeader.setFont(25)
tileTable.add(cityStatsHeader).colspan(2).pad(10f)
tileTable.row()

View File

@ -8,10 +8,7 @@ import com.unciv.UnCivGame
import com.unciv.logic.city.SpecialConstruction
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 com.unciv.ui.utils.*
import java.util.*
class CityStatsTable(val cityScreen: CityScreen) : Table(){
@ -25,7 +22,7 @@ class CityStatsTable(val cityScreen: CityScreen) : Table(){
val cityStatsHeader = Label("City Stats", CameraStageBaseScreen.skin)
cityStatsHeader.setFontScale(2f)
cityStatsHeader.setFont(15)
add(cityStatsHeader).colspan(2).pad(10f)
row()
@ -64,7 +61,7 @@ class CityStatsTable(val cityScreen: CityScreen) : Table(){
!(construction is Building && construction.isWonder)) {
row()
val buildingGoldCost = construction.getGoldCost(city.civInfo.policies.getAdoptedPolicies())
val buildingBuyButton = TextButton("Buy for \r\n$buildingGoldCost gold", CameraStageBaseScreen.skin)
val buildingBuyButton = TextButton("Buy for".tr()+"\r\n$buildingGoldCost gold", CameraStageBaseScreen.skin)
buildingBuyButton.addClickListener {
city.cityConstructions.purchaseBuilding(city.cityConstructions.currentConstruction)
update()

View File

@ -10,6 +10,7 @@ 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
import com.unciv.ui.utils.tr
class ImprovementPickerScreen(tileInfo: TileInfo) : PickerScreen() {
private var selectedImprovement: TileImprovement? = null
@ -35,7 +36,7 @@ class ImprovementPickerScreen(tileInfo: TileInfo) : PickerScreen() {
improvementButton.add(ImageGetter.getImage("OtherIcons/Stop.png")).size(30f).pad(10f)
else improvementButton.add(ImageGetter.getImprovementIcon(improvement.name)).size(30f).pad(10f)
improvementButton.add(Label(improvement.name + " - " + improvement.getTurnsToBuild(civInfo) + " turns",skin)
improvementButton.add(Label(improvement.name + " - " + improvement.getTurnsToBuild(civInfo) + " "+"turns".tr(),skin)
.setFontColor(Color.WHITE)).pad(10f)
improvementButton.addClickListener {

View File

@ -91,6 +91,9 @@ open class CameraStageBaseScreen : Screen {
companion object {
var skin = Skin(Gdx.files.internal("skin/flat-earth-ui.json"))
.apply {
get<TextButton.TextButtonStyle>(TextButton.TextButtonStyle::class.java).font = getFont(20)
get<Label.LabelStyle>(Label.LabelStyle::class.java).font = getFont(18) }
internal var batch: Batch = SpriteBatch()
}
@ -124,22 +127,30 @@ fun Label.setFontColor(color:Color): Label {style=Label.LabelStyle(style).apply
fun String.tr(): String {return GameBasics.Translations.get(this,UnCivGame.Current.settings.language)}
fun getFont(size: Int): BitmapFont {
// var screenScale = Gdx.graphics.width / 1000f // screen virtual width as defined in CameraStageBaseScreen
// if(screenScale<1) screenScale=1f
val generator = FreeTypeFontGenerator(Gdx.files.internal("skin/Roboto-Regular.ttf"))
val parameter = FreeTypeFontGenerator.FreeTypeFontParameter()
parameter.size = size
parameter.genMipMaps = true
parameter.minFilter = Texture.TextureFilter.MipMapLinearLinear
parameter.magFilter = Texture.TextureFilter.MipMapLinearLinear
// parameter.genMipMaps = true
parameter.minFilter = Texture.TextureFilter.Linear
parameter.magFilter = Texture.TextureFilter.Linear
parameter.characters = "ABCČĆDĐEFGHIJKLMNOPQRSŠTUVWXYZŽabcčćdđefghijklmnopqrsštuvwxyzžАБВГҐДЂЕЁЄЖЗЅИІЇЙЈКЛЉМНЊОПРСТЋУЎФХЦЧЏШЩЪЫЬЭЮЯабвгґдђеёєжзѕиіїйјклљмнњопрстћуўфхцчџшщъыьэюяΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩαβγδεζηθικλμνξοπρστυφχψωάΆέΈέΉίϊΐΊόΌύΰϋΎΫΏĂÂÊÔƠƯăâêôơư1234567890?’“!”(%)[#]{@}/&\\<-+÷×=>®©\$€£¥¢:;,.*|"
//generator.scaleForPixelHeight(size)
val font = generator.generateFont(parameter) // font size 12 pixels
// font.data.setScale(1f/screenScale)
generator.dispose() // don't forget to dispose to avoid memory leaks!
return font
}
fun Label.setFont(size:Int) {
fun Label.setFont(size:Int): Label {
style = Label.LabelStyle(style)
style.font = getFont(size)
style = style // because we need it to call the SetStyle function. Yuk, I know.
return this // for chaining
}
fun Actor.addClickListener(function: () -> Unit) {

View File

@ -5,10 +5,7 @@ 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.utils.CameraStageBaseScreen
import com.unciv.ui.utils.ImageGetter
import com.unciv.ui.utils.addClickListener
import com.unciv.ui.utils.setFontColor
import com.unciv.ui.utils.*
import kotlin.math.min
class NotificationsScroll(private val notifications: List<Notification>, internal val worldScreen: WorldScreen) : ScrollPane(null) {
@ -22,8 +19,7 @@ class NotificationsScroll(private val notifications: List<Notification>, interna
notificationsTable.clearChildren()
for (notification in notifications) {
val label = Label(notification.text, CameraStageBaseScreen.skin).setFontColor(Color.BLACK)
label.setFontScale(1.2f)
.setFont(14)
val minitable = Table()
minitable.add(ImageGetter.getImage("OtherIcons/Circle.png")

View File

@ -2,17 +2,13 @@ package com.unciv.ui.worldscreen
import com.badlogic.gdx.Gdx
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.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.utils.*
import com.unciv.ui.worldscreen.bottombar.WorldScreenBottomBar
import com.unciv.ui.worldscreen.unit.UnitActionsTable
@ -41,7 +37,6 @@ class WorldScreen : CameraStageBaseScreen() {
topBar.y - nextTurnButton.height - 10f)
notificationsScroll = NotificationsScroll(gameInfo.notifications, this)
notificationsScroll.width = stage.width/3
Label("", skin).style.font.data.setScale(1.5f)
minimap.setSize(stage.width/5,stage.height/5)
minimap.x = stage.width - minimap.width
@ -108,7 +103,7 @@ class WorldScreen : CameraStageBaseScreen() {
}
private fun createNextTurnButton(): TextButton {
val nextTurnButton = TextButton("Next turn", CameraStageBaseScreen.skin)
val nextTurnButton = TextButton("Next turn".tr(), CameraStageBaseScreen.skin)
nextTurnButton.addClickListener {
if (civInfo.tech.freeTechs != 0) {
game.screen = TechPickerScreen(true, civInfo)
@ -134,7 +129,7 @@ class WorldScreen : CameraStageBaseScreen() {
shouldUpdate=true
GameSaver().saveGame(game.gameInfo, "Autosave")
nextTurnButton.setText("Next turn")
nextTurnButton.setText("Next turn".tr())
nextTurnButton.enable()
Gdx.input.inputProcessor = stage
}

View File

@ -98,7 +98,8 @@ class BattleTable(val worldScreen: WorldScreen): Table() {
else if (damageToDefender>defender.getHealth()) damageToDefender=defender.getHealth()
if(attacker.isMelee() && (defender.getUnitType()==UnitType.Civilian || defender.getUnitType()==UnitType.City && defender.isDefeated())) {
if(attacker.isMelee() && (defender.getUnitType()==UnitType.Civilian
|| defender.getUnitType()==UnitType.City && defender.isDefeated())) {
add("")
add("Captured!")
}

View File

@ -8,6 +8,7 @@ import com.unciv.logic.GameSaver
import com.unciv.models.gamebasics.GameBasics
import com.unciv.ui.utils.CameraStageBaseScreen
import com.unciv.ui.utils.center
import com.unciv.ui.worldscreen.WorldScreen
class WorldScreenDisplayOptionsTable() : OptionsTable(){
init {
@ -35,6 +36,8 @@ class WorldScreenDisplayOptionsTable() : OptionsTable(){
override fun changed(event: ChangeEvent?, actor: Actor?) {
UnCivGame.Current.settings.language = languageSelectBox.selected;
GameSaver().setGeneralSettings(UnCivGame.Current.settings)
UnCivGame.Current.worldScreen = WorldScreen()
UnCivGame.Current.setWorldScreen()
}
})

View File

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

View File

@ -7,6 +7,7 @@ import com.unciv.logic.map.TileInfo
import com.unciv.models.gamebasics.unit.UnitType
import com.unciv.ui.utils.CameraStageBaseScreen
import com.unciv.ui.utils.addClickListener
import com.unciv.ui.utils.tr
import com.unciv.ui.worldscreen.WorldScreen
class UnitTable(val worldScreen: WorldScreen) : Table(){
@ -50,12 +51,12 @@ class UnitTable(val worldScreen: WorldScreen) : Table(){
if(unit.health<100) nameLabelText+=" ("+unit.health+")"
unitNameLabel.setText(nameLabelText)
var unitLabelText = "Movement: " + unit.getMovementString()
var unitLabelText = "Movement".tr()+": " + unit.getMovementString()
if (unit.getBaseUnit().unitType != UnitType.Civilian) {
unitLabelText += "\nStrength: " + unit.getBaseUnit().strength
unitLabelText += "\n"+"Strength".tr()+": " + unit.getBaseUnit().strength
}
if (unit.getBaseUnit().rangedStrength!=0)
unitLabelText += "\nRanged strength: "+unit.getBaseUnit().rangedStrength
unitLabelText += "\n"+"Ranged strength".tr()+": "+unit.getBaseUnit().rangedStrength
if(unit.isFortified() && unit.getFortificationTurns()>0)
unitLabelText+="\n+"+unit.getFortificationTurns()*20+"% fortification"