Civilopedia now displays Basic Help per-language

Fixed problems with Italian translation files
Fixed a couple of errors moving to the next turn with the current construction method
This commit is contained in:
Yair Morgenstern 2019-02-24 10:27:43 +02:00
parent 849b150440
commit 47dbd69c96
8 changed files with 37 additions and 17 deletions

View File

@ -1,7 +1,7 @@
[ [
{ {
name:"Città", name:"Città",
description: "Le città sono le basi di un impero. Ogni città possiede un certo numero di abitanti e caselle, e può sfruttare una casella ad ogni abitante.\nLa casella centrale di una città è sempre sfruttata e non richiede abitanti.\È possibile fondare nuove città con i Coloni.\nOgni città nel tuo impero rimuove 3 punti Felicità dall'impero, e ogni abitante un punto felicità, quindi pianifica con cautela!" description: "Le città sono le basi di un impero. Ogni città possiede un certo numero di abitanti e caselle, e può sfruttare una casella ad ogni abitante.\nLa casella centrale di una città è sempre sfruttata e non richiede abitanti.\nÈ possibile fondare nuove città con i Coloni.\nOgni città nel tuo impero rimuove 3 punti Felicità dall'impero, e ogni abitante un punto felicità, quindi pianifica con cautela!"
}, },
{ {
name:"Caselle", name:"Caselle",

View File

@ -6258,7 +6258,7 @@
// Social policies // Social policies
"Requires":{ "Requires":{
Italian:"Politiche sociali"//is some kind of mistake, seems to translate "social policies" Italian:"Richiede"
Russian:"Требует" Russian:"Требует"
French:"Requiert" French:"Requiert"
Romanian:"necesită" Romanian:"necesită"
@ -6267,6 +6267,7 @@
Portuguese:"Requer" Portuguese:"Requer"
German:"Benötigt" German:"Benötigt"
} }
"Adopt policy":{ "Adopt policy":{
Italian:"Adotta politica" Italian:"Adotta politica"
Russian:"Принять общественный институт" Russian:"Принять общественный институт"
@ -7457,6 +7458,13 @@
} }
// Unit Promotions // Unit Promotions
"Pick promotion":{
}
" OR ":{ // as in "Requires Accuracy I OR Barrage I
}
"Accuracy I":{ "Accuracy I":{
Italian:"Precisione I" Italian:"Precisione I"
} }

View File

@ -221,7 +221,7 @@
"Hai ottenuto la tua prima risorsa strategica!", "Hai ottenuto la tua prima risorsa strategica!",
"Le risorse strategiche ti permettono di addestrare unità e costruire edifici", "Le risorse strategiche ti permettono di addestrare unità e costruire edifici",
" che richiedono tali risorse specifiche (ad esempio, lo Spadaccino richiede Ferro)." " che richiedono tali risorse specifiche (ad esempio, lo Spadaccino richiede Ferro)."
"Ogni unità "consuma" una copia di quella risorsa, ma se quell'unità muore recuperi quella "copia" della risorsa, ", "Ogni unità 'consuma' una copia di quella risorsa, ma se quell'unità muore recuperi quella 'copia' della risorsa, ",
" e puoi quindi costruire una nuova unità con quella risorsa ora non utilizzata.", " e puoi quindi costruire una nuova unità con quella risorsa ora non utilizzata.",
"La barra superiore tiene conto di quante risorse strategiche non usate possiedi." "La barra superiore tiene conto di quante risorse strategiche non usate possiedi."
] ]

View File

@ -122,8 +122,11 @@ class CityConstructions {
fun constructIfEnough(){ fun constructIfEnough(){
val construction = getConstruction(currentConstruction) val construction = getConstruction(currentConstruction)
if(construction is SpecialConstruction) return
val productionCost = construction.getProductionCost(cityInfo.civInfo.policies.adoptedPolicies) val productionCost = construction.getProductionCost(cityInfo.civInfo.policies.adoptedPolicies)
if (inProgressConstructions[currentConstruction]!! >= productionCost) { if (inProgressConstructions.containsKey(currentConstruction)
&& inProgressConstructions[currentConstruction]!! >= productionCost) {
constructionComplete(construction) constructionComplete(construction)
} }
} }

View File

@ -18,7 +18,6 @@ object GameBasics {
val TileResources = LinkedHashMap<String, TileResource>() val TileResources = LinkedHashMap<String, TileResource>()
val TileImprovements = LinkedHashMap<String, TileImprovement>() val TileImprovements = LinkedHashMap<String, TileImprovement>()
val Technologies = LinkedHashMap<String, Technology>() val Technologies = LinkedHashMap<String, Technology>()
val Helps = LinkedHashMap<String, BasicHelp>()
val Units = LinkedHashMap<String, BaseUnit>() val Units = LinkedHashMap<String, BaseUnit>()
val UnitPromotions = LinkedHashMap<String, Promotion>() val UnitPromotions = LinkedHashMap<String, Promotion>()
val Nations = LinkedHashMap<String, Nation>() val Nations = LinkedHashMap<String, Nation>()
@ -31,7 +30,7 @@ object GameBasics {
return Json().apply { ignoreUnknownFields=true }.fromJson(tClass, jsonText) return Json().apply { ignoreUnknownFields=true }.fromJson(tClass, jsonText)
} }
private fun <T : INamed> createHashmap(items: Array<T>): LinkedHashMap<String, T> { fun <T : INamed> createHashmap(items: Array<T>): LinkedHashMap<String, T> {
val hashMap = LinkedHashMap<String, T>() val hashMap = LinkedHashMap<String, T>()
for (item in items) for (item in items)
hashMap[item.name] = item hashMap[item.name] = item
@ -43,7 +42,6 @@ object GameBasics {
Terrains += createHashmap(getFromJson(Array<Terrain>::class.java, "Terrains")) Terrains += createHashmap(getFromJson(Array<Terrain>::class.java, "Terrains"))
TileResources += createHashmap(getFromJson(Array<TileResource>::class.java, "TileResources")) TileResources += createHashmap(getFromJson(Array<TileResource>::class.java, "TileResources"))
TileImprovements += createHashmap(getFromJson(Array<TileImprovement>::class.java, "TileImprovements")) TileImprovements += createHashmap(getFromJson(Array<TileImprovement>::class.java, "TileImprovements"))
Helps += createHashmap(getFromJson(Array<BasicHelp>::class.java, "BasicHelp"))
Units += createHashmap(getFromJson(Array<BaseUnit>::class.java, "Units")) Units += createHashmap(getFromJson(Array<BaseUnit>::class.java, "Units"))
UnitPromotions += createHashmap(getFromJson(Array<Promotion>::class.java, "UnitPromotions")) UnitPromotions += createHashmap(getFromJson(Array<Promotion>::class.java, "UnitPromotions"))
PolicyBranches += createHashmap(getFromJson(Array<PolicyBranch>::class.java, "Policies")) PolicyBranches += createHashmap(getFromJson(Array<PolicyBranch>::class.java, "Policies"))

View File

@ -1,10 +1,12 @@
package com.unciv.ui package com.unciv.ui
import com.badlogic.gdx.Gdx
import com.badlogic.gdx.graphics.Color import com.badlogic.gdx.graphics.Color
import com.badlogic.gdx.scenes.scene2d.ui.* import com.badlogic.gdx.scenes.scene2d.ui.*
import com.badlogic.gdx.scenes.scene2d.ui.List import com.badlogic.gdx.scenes.scene2d.ui.List
import com.badlogic.gdx.utils.Array import com.badlogic.gdx.utils.Array
import com.unciv.UnCivGame import com.unciv.UnCivGame
import com.unciv.models.gamebasics.BasicHelp
import com.unciv.models.gamebasics.GameBasics import com.unciv.models.gamebasics.GameBasics
import com.unciv.models.gamebasics.ICivilopedia import com.unciv.models.gamebasics.ICivilopedia
import com.unciv.ui.utils.CameraStageBaseScreen import com.unciv.ui.utils.CameraStageBaseScreen
@ -36,7 +38,11 @@ class CivilopediaScreen : CameraStageBaseScreen() {
val map = LinkedHashMap<String, Collection<ICivilopedia>>() val map = LinkedHashMap<String, Collection<ICivilopedia>>()
map["Basics"] = GameBasics.Helps.values val language = UnCivGame.Current.settings.language
val basicHelpFileName = if(Gdx.files.internal("jsons/BasicHelp_$language.json").exists())"BasicHelp_$language"
else "BasicHelp"
map["Basics"] = GameBasics.getFromJson(kotlin.Array<BasicHelp>::class.java, basicHelpFileName).toList()
map["Buildings"] = GameBasics.Buildings.values map["Buildings"] = GameBasics.Buildings.values
map["Resources"] = GameBasics.TileResources.values map["Resources"] = GameBasics.TileResources.values
map["Terrains"] = GameBasics.Terrains.values map["Terrains"] = GameBasics.Terrains.values

View File

@ -87,7 +87,7 @@ class PolicyPickerScreen(internal val civInfo: CivilizationInfo) : PickerScreen(
if(policy.requires!!.isNotEmpty()) if(policy.requires!!.isNotEmpty())
policyText += "{Requires} ".tr() + policy.requires!!.joinToString { it.tr() } policyText += "{Requires} ".tr() + policy.requires!!.joinToString { it.tr() }
else else
policyText += "{Unlocked at} ".tr()+(policy.getBranch().era.toString()+" era").tr() policyText += ("{Unlocked at} {"+policy.getBranch().era.toString()+" era}").tr()
} }
descriptionLabel.setText(policyText) descriptionLabel.setText(policyText)
} }

View File

@ -6,6 +6,8 @@ import com.badlogic.gdx.scenes.scene2d.ui.VerticalGroup
import com.unciv.UnCivGame import com.unciv.UnCivGame
import com.unciv.logic.map.MapUnit import com.unciv.logic.map.MapUnit
import com.unciv.models.gamebasics.GameBasics import com.unciv.models.gamebasics.GameBasics
import com.unciv.models.gamebasics.Translations
import com.unciv.models.gamebasics.tr
import com.unciv.models.gamebasics.unit.Promotion import com.unciv.models.gamebasics.unit.Promotion
import com.unciv.ui.utils.* import com.unciv.ui.utils.*
@ -16,7 +18,7 @@ class PromotionPickerScreen(mapUnit: MapUnit) : PickerScreen() {
init { init {
onBackButtonClicked { UnCivGame.Current.setWorldScreen(); dispose() } onBackButtonClicked { UnCivGame.Current.setWorldScreen(); dispose() }
setDefaultCloseAction() setDefaultCloseAction()
rightSideButton.setText("Pick promotion") rightSideButton.setText("Pick promotion".tr())
rightSideButton.onClick("promote") { rightSideButton.onClick("promote") {
mapUnit.promotions.addPromotion(selectedPromotion!!.name) mapUnit.promotions.addPromotion(selectedPromotion!!.name)
if(mapUnit.promotions.canBePromoted()) game.screen = PromotionPickerScreen(mapUnit) if(mapUnit.promotions.canBePromoted()) game.screen = PromotionPickerScreen(mapUnit)
@ -42,13 +44,16 @@ class PromotionPickerScreen(mapUnit: MapUnit) : PickerScreen() {
promotionButton.onClick { promotionButton.onClick {
selectedPromotion = promotion selectedPromotion = promotion
rightSideButton.setText(promotion.name) rightSideButton.setText(promotion.name.tr())
if(isPromotionAvailable && !unitHasPromotion) rightSideButton.enable() if(isPromotionAvailable && !unitHasPromotion) rightSideButton.enable()
else rightSideButton.disable() else rightSideButton.disable()
var descriptionText = promotion.effect
if(promotion.prerequisites.isNotEmpty()) descriptionText +="\nRequires: "+ // we translate it before it goes in to get uniques like "vs units in rough terrain" and after to get "vs city
var descriptionText = Translations.translateBonusOrPenalty(promotion.effect.tr())
if(promotion.prerequisites.isNotEmpty()) descriptionText +="\n{Requires}: ".tr()+
promotion.prerequisites.filter { promotionsForUnitType.any { promotion -> promotion.name==it } } promotion.prerequisites.filter { promotionsForUnitType.any { promotion -> promotion.name==it } }
.joinToString(" OR ") .joinToString(" OR ".tr())
descriptionLabel.setText(descriptionText) descriptionLabel.setText(descriptionText)
} }
availablePromotionsGroup.addActor(promotionButton) availablePromotionsGroup.addActor(promotionButton)