Added CivilizationPolicies, added great person pick when completing Liberty

This commit is contained in:
Yair Morgenstern 2018-01-11 22:50:59 +02:00
parent 546472b528
commit 85ffcc58ee
5 changed files with 54 additions and 41 deletions

View File

@ -79,7 +79,7 @@
},
{
name:"Liberty Complete",
description:"Free Great Person of choice near capital - TODO"
description:"Free Great Person of choice near capital"
}
]
},{

View File

@ -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.
}

View File

@ -34,7 +34,7 @@ public class CivilizationInfo {
public FullStats greatPersonPoints = new FullStats();
public CivilizationTech tech = new CivilizationTech();
public Linq<String> policies = new Linq<String>();
public CivilizationPolicies policies = new CivilizationPolicies();
public int freePolicies=0;
public int turns = 1;

View File

@ -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<String> {
public void adopt(Policy policy){
PolicyBranch branch = GameBasics.PolicyBranches.get(policy.branch);
int policiesCompleteInBranch = branch.policies.count(new Predicate<Policy>() {
@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());
}
}

View File

@ -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<Policy>() {
@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(""))