diff --git a/android/assets/jsons/Policies.json b/android/assets/jsons/Policies.json index 40069848aa..b762e503ce 100644 --- a/android/assets/jsons/Policies.json +++ b/android/assets/jsons/Policies.json @@ -79,7 +79,7 @@ }, { name:"Liberty Complete", - description:"Free Great Person of choice near capital - TODO" + description:"Free Great Person of choice near capital" } ] },{ diff --git a/core/src/com/unciv/logic/city/IConstruction.java b/core/src/com/unciv/logic/city/IConstruction.java index 38b14f91a9..b9b0727c33 100644 --- a/core/src/com/unciv/logic/city/IConstruction.java +++ b/core/src/com/unciv/logic/city/IConstruction.java @@ -3,8 +3,8 @@ package com.unciv.logic.city; import com.unciv.models.stats.INamed; public interface IConstruction extends INamed { - public int getProductionCost(); - public int getGoldCost(); - public boolean isBuildable(CityConstructions construction); - public void postBuildEvent(CityConstructions construction); // Yes I'm hilarious. + int getProductionCost(); + int getGoldCost(); + boolean isBuildable(CityConstructions construction); + void postBuildEvent(CityConstructions construction); // Yes I'm hilarious. } diff --git a/core/src/com/unciv/logic/civilization/CivilizationInfo.java b/core/src/com/unciv/logic/civilization/CivilizationInfo.java index 0b5f673ea8..2e8f4e9126 100644 --- a/core/src/com/unciv/logic/civilization/CivilizationInfo.java +++ b/core/src/com/unciv/logic/civilization/CivilizationInfo.java @@ -34,7 +34,7 @@ public class CivilizationInfo { public FullStats greatPersonPoints = new FullStats(); public CivilizationTech tech = new CivilizationTech(); - public Linq policies = new Linq(); + public CivilizationPolicies policies = new CivilizationPolicies(); public int freePolicies=0; public int turns = 1; diff --git a/core/src/com/unciv/logic/civilization/CivilizationPolicies.java b/core/src/com/unciv/logic/civilization/CivilizationPolicies.java index 92eba85223..89f1d09558 100644 --- a/core/src/com/unciv/logic/civilization/CivilizationPolicies.java +++ b/core/src/com/unciv/logic/civilization/CivilizationPolicies.java @@ -1,8 +1,51 @@ package com.unciv.logic.civilization; -/** - * Created by LENOVO on 1/11/2018. - */ +import com.badlogic.gdx.utils.Predicate; +import com.unciv.logic.city.CityInfo; +import com.unciv.models.gamebasics.GameBasics; +import com.unciv.models.gamebasics.Policy; +import com.unciv.models.gamebasics.PolicyBranch; +import com.unciv.models.linq.Linq; +import com.unciv.ui.UnCivGame; +import com.unciv.ui.pickerscreens.GreatPersonPickerScreen; -class CivilizationPolicies { + +public class CivilizationPolicies extends Linq { + + public void adopt(Policy policy){ + + PolicyBranch branch = GameBasics.PolicyBranches.get(policy.branch); + int policiesCompleteInBranch = branch.policies.count(new Predicate() { + @Override + public boolean evaluate(Policy arg0) { + return contains(arg0.name); + } + }); + + if (policiesCompleteInBranch == branch.policies.size() - 1) { // All done apart from branch completion + adopt(branch.policies.get(branch.policies.size() - 1)); // add branch completion! + } + if (policy.name.equals("Collective Rule")) + CivilizationInfo.current().tileMap. + placeUnitNearTile(CivilizationInfo.current().getCapital().cityLocation, "Settler"); + if (policy.name.equals("Citizenship")) + CivilizationInfo.current().tileMap. + placeUnitNearTile(CivilizationInfo.current().getCapital().cityLocation, "Worker"); + if (policy.name.equals("Representation") || policy.name.equals("Reformation")) + CivilizationInfo.current().enterGoldenAge(); + + if (policy.name.equals("Scientific Revolution")) + CivilizationInfo.current().tech.freeTechs+=2; + + if (policy.name.equals("Legalism")) + for (CityInfo city : CivilizationInfo.current().cities.subList(0,4)) + city.cityConstructions.addCultureBuilding(); + + if (policy.name.equals("Free Religion")) + CivilizationInfo.current().freePolicies++; + + if (policy.name.equals("Liberty Complete")) + UnCivGame.Current.setScreen(new GreatPersonPickerScreen()); + + } } diff --git a/core/src/com/unciv/ui/pickerscreens/PolicyPickerScreen.java b/core/src/com/unciv/ui/pickerscreens/PolicyPickerScreen.java index cecfff02a0..039a6bf01e 100644 --- a/core/src/com/unciv/ui/pickerscreens/PolicyPickerScreen.java +++ b/core/src/com/unciv/ui/pickerscreens/PolicyPickerScreen.java @@ -48,37 +48,7 @@ public class PolicyPickerScreen extends PickerScreen { public void clicked(InputEvent event, float x, float y) { if(game.civInfo.freePolicies>0) game.civInfo.freePolicies--; else game.civInfo.civStats.culture -= game.civInfo.getCultureNeededForNextPolicy(); - game.civInfo.policies.add(pickedPolicy.name); - - PolicyBranch branch = GameBasics.PolicyBranches.get(pickedPolicy.branch); - int policiesCompleteInBranch = branch.policies.count(new Predicate() { - @Override - public boolean evaluate(Policy arg0) { - return game.civInfo.policies.contains(arg0.name); - } - }); - - if (policiesCompleteInBranch == branch.policies.size() - 1) { // All done apart from branch completion - game.civInfo.policies.add(branch.policies.get(branch.policies.size() - 1).name); // add branch completion! - } - if (pickedPolicy.name.equals("Collective Rule")) - CivilizationInfo.current().tileMap. - placeUnitNearTile(CivilizationInfo.current().getCapital().cityLocation, "Settler"); - if (pickedPolicy.name.equals("Citizenship")) - CivilizationInfo.current().tileMap. - placeUnitNearTile(CivilizationInfo.current().getCapital().cityLocation, "Worker"); - if (pickedPolicy.name.equals("Representation") || pickedPolicy.name.equals("Reformation")) - CivilizationInfo.current().enterGoldenAge(); - - if (pickedPolicy.name.equals("Scientific Revolution")) - CivilizationInfo.current().tech.freeTechs+=2; - - if (pickedPolicy.name.equals("Legalism")) - for (CityInfo city : game.civInfo.cities.subList(0,4)) - city.cityConstructions.addCultureBuilding(); - - if (pickedPolicy.name.equals("Free Religion")) - CivilizationInfo.current().freePolicies++; + game.civInfo.policies.adopt(pickedPolicy); if (pickedPolicy.name.equals(""))