diff --git a/android/assets/jsons/Buildings.json b/android/assets/jsons/Buildings.json index 27d649a694..0846c25907 100644 --- a/android/assets/jsons/Buildings.json +++ b/android/assets/jsons/Buildings.json @@ -174,6 +174,7 @@ maintainance:2, percentStatBonus:{science:33}, requiredBuilding:"Library", + unique:"JunglesProvideScience", requiredTech:"Metal Casting" }, { @@ -194,6 +195,99 @@ isWonder:true, unique:"NewTileCostReduction", requiredTech:"Education" - } + }, + { + name:"Ironworks", + description: "", + production:8, + culture:1, + isWonder:true, + requiredBuildingInAllCities:"Workshop", + requiredTech:"Machinery" + }, + { + name:"Observatory", + description: "City must be bordering a mountain", + maintainance:2, + percentStatBonus:{science:50}, + requiredBuilding:"Library", + requiredTech:"Metal Casting" + }, + { + name:"Opera House", + description: "", + culture:4, + requiredBuilding:"Temple", + maintainance:2, + requiredTech:"Acoustics" + }, + { + name:"Sistine Chapel", + description: "Culture in all cities increased by 25%", + culture:1, + isWonder:true, + unique:"CultureIncrease", + requiredTech:"Acoustics" + }, + { + name:"Bank", + description: "", + gold:2, + percentStatBonus:{gold:25}, + requiredBuilding:"Market", + requiredTech:"Banking" + }, + { + name:"Theatre", + description: "", + happiness:3, + maintainance:2, + requiredBuilding:"Colloseum", + requiredTech:"Banking" + }, + { + name:"Taj Mahal", + description: "Empire enters a golden age", + culture:1, + happiness:4, + isWonder:true, + unique:"EmpireEntersGoldenAge", + requiredTech:"Acoustics" + }, + { + name:"Windmill", + description: "", + production:2, + maintainance:2, + percentStatBonus:{production:10}, + requiredTech:"Economics" + }, + { + name:"Museum", + description: "", + culture:5, + requiredBuilding:"Opera House", + maintainance:3, + requiredTech:"Archaeology" + }, + { + name:"Hermitage", + description: "", + percentStatBonus:{culture:50}, + culture:5, + isWonder:true, + requiredBuildingInAllCities:"Opera House", + requiredTech:"Archaeology" + }, + { + name:"The Louvre", + description: "Free Great Artist appears near the city - TODO", + culture:1, + happiness:4, + isWonder:true, + unique:"FreeGreatArtistAppears", + requiredTech:"Archaeology" + }, + ] \ No newline at end of file diff --git a/android/assets/jsons/Techs.json b/android/assets/jsons/Techs.json index f0d2175784..958f99e2b5 100644 --- a/android/assets/jsons/Techs.json +++ b/android/assets/jsons/Techs.json @@ -32,7 +32,7 @@ name:"Sailing", row:1, prerequisites:["Pottery"], - description:"Allows access to sea resources by building work boats" + description:"Does nothing since we have no sea tiles - In theory, Allows access to sea resources by building work boats" }, { name:"Calendar", @@ -83,7 +83,7 @@ cost:95, row:1, prerequisites:["Sailing"], - description:"Allows construction of lighthouses, providing more food for sea tiles" + description:"Does nothing since we have no sea tiles - In theory, Allows construction of lighthouses, providing more food for sea tiles" }, { name:"Philosophy", @@ -127,7 +127,7 @@ name:"Theology", row:2, prerequisites:["Calendar","Philosophy"], - description:"???" + description:"Unclear what this does in Vanilla civ" }, { name:"Civil Service", @@ -166,7 +166,7 @@ row:1, cost:415, prerequisites:["Optics"], - description:"???" + description:"Does nothing since we have no sea tiles - In theory, allows construction of harbors" }, { name:"Education", @@ -184,19 +184,19 @@ name:"Machinery", row:8, prerequisites:["Engineering"], - description:"???" + description:"Speeds movement speed on roads and allows you to construct the Ironworks wonder, which gives a massive boost in production" }, { name:"Physics", row:9, prerequisites:["Engineering","Metal Casting"], - description:"???" + description:"Contributes only war-relatied things - on hold until AI is introduced" }, { name:"Steel", row:10, prerequisites:["Metal Casting"], - description:"???" + description:"Contributes only war-relatied things - on hold until AI is introduced" } ] }, @@ -210,31 +210,31 @@ name:"Astronomy", row:2, prerequisites:["Compass","Education"], - description:"This is a lie, change!!!" + description:"Enables construction of Observatories in cities near mountains" }, { name:"Acoustics", row:4, prerequisites:["Education","Chivalry"], - description:"This is a lie, change!!!" + description:"Enables construction of Opera Houses and the Sistine Chapel, providing culture" }, { name:"Banking", row:6, prerequisites:["Chivalry"], - description:"This is a lie, change!!!" + description:"Enables construction of banks, giving a serious boost in gold to your empire" }, { name:"Printing Press", row:8, prerequisites:["Machinery","Physics"], - description:"This is a lie, change!!!" + description:"Eables construction of the Theatre and Taj Mahal, increasing happiness" }, { name:"Gunpowder", row:10, prerequisites:["Physics","Steel"], - description:"This is a lie, change!!!" + description:"Contributes only war-relatied things - on hold until AI is introduced" } ] }, @@ -248,25 +248,25 @@ name:"Navigation", row:2, prerequisites:["Astronomy"], - description:"This is a lie, change!!!" + description:"Does nothing since we have no sea tiles - In theory, allows construction of Frigates and Seaports" }, { name:"Economics", row:6, prerequisites:["Banking","Printing Press"], - description:"This is a lie, change!!!" + description:"Camps and Trading Posts provide +1 gold, allows construction of Windmill" }, { name:"Chemistry", row:9, prerequisites:["Gunpowder"], - description:"This is a lie, change!!!" + description:"Mines and Quarries provide +1 production" }, { name:"Metallurgy", row:10, prerequisites:["Gunpowder"], - description:"This is a lie, change!!!" + description:"Contributes only war-relatied things - on hold until AI is introduced" } ] }, @@ -277,10 +277,10 @@ wonderCost:750, techs:[ { - name:"Archaology", + name:"Archaeology", row:2, prerequisites:["Navigation"], - description:"This is a lie, change!!!" + description:"Allows construction of Museums and the Hermitage and Louvre wonders, providing culture" }, { name:"Scientific Theory", @@ -292,19 +292,71 @@ name:"Military Science", row:6, prerequisites:["Economics","Chemistry"], - description:"This is a lie, change!!!" + description:"Contributes only war-relatied things - on hold until AI is introduced" }, { name:"Fertilizer", row:9, prerequisites:["Chemistry"], - description:"This is a lie, change!!!" + description:"+1 food from Farms, Plantations and Pastures" }, { name:"Rifling", row:10, prerequisites:["Metallurgy"], - description:"This is a lie, change!!!" + description:"Contributes only war-relatied things - on hold until AI is introduced" + } + ] + }, + { + columnNumber: 9, + techCost: 2585, + buildingCost:360, + wonderCost:920, + techs:[ + { + name:"Biology", + row:4, + prerequisites:["Archaeology","Scientific Theory"], + description:"Reveals oil and allows construction of oil wells - Todo" + }, + { + name:"Steam Power", + row:6, + prerequisites:["Scientific Theory","Military Science"], + description:"Enables construction of factories and - Todo" + }, + { + name:"Dynamite", + row:9, + prerequisites:["Military Science","Fertilizer","Rifling"], + description:"Contributes only war-relatied things - on hold until AI is introduced" + } + ] + }, + { + columnNumber: 10, + techCost: 3405, + buildingCost:500, + wonderCost:1060, + techs:[ + { + name:"Electricity", + row:4, + prerequisites:["Biology","Steam Power"], + description:"Reveals Aluminium on map and allows construction of stock exchange, providing gold - todo" + }, + { + name:"Replaceable Parts", + row:6, + prerequisites:["Steam Power"], + description:"Contributes only war-relatied things - on hold until AI is introduced - todo" + }, + { + name:"Railroad", + row:8, + prerequisites:["Steam Power","Dynamite"], + description:"Allows construction of railroads, providing fast transport and a 25% production boost to cities - todo" } ] } diff --git a/android/assets/jsons/Terrains.json b/android/assets/jsons/Terrains.json index 5ff09b6e31..a6a7a92584 100644 --- a/android/assets/jsons/Terrains.json +++ b/android/assets/jsons/Terrains.json @@ -52,8 +52,7 @@ movementCost:2, overrideStats:true, unbuildable:true, - occursOn:["Tundra","Plains","Grassland"], - removalTech: "Mining" + occursOn:["Tundra","Plains","Grassland"] }, { name:"Jungle", @@ -62,8 +61,7 @@ movementCost:2, overrideStats:true, unbuildable:true, - occursOn:["Plains","Grassland"], - removalTech: "Bronze Working" + occursOn:["Plains","Grassland"] }, { name:"Marsh", @@ -71,8 +69,7 @@ food:-1, movementCost:2, unbuildable:true, - occursOn:["Grassland"], - removalTech: "Masonry" + occursOn:["Grassland"] }, { name:"Oasis", diff --git a/android/assets/jsons/TileImprovements.json b/android/assets/jsons/TileImprovements.json index b841df2e03..af43817807 100644 --- a/android/assets/jsons/TileImprovements.json +++ b/android/assets/jsons/TileImprovements.json @@ -43,7 +43,8 @@ }, { name:"Oil well", - turnsToBuild:6 + turnsToBuild:6, + techRequired:"Biology", }, { name:"Pasture", @@ -76,5 +77,24 @@ name:"Railroad", turnsToBuild:12, techRequired:"Railroad" - } + }, + + { + name:"Remove Forest", + turnsToBuild:6, + terrainsCanBeBuiltOn:["Forest"], + techRequired:"Mining" + }, + { + name:"Remove Jungle", + turnsToBuild:6, + terrainsCanBeBuiltOn:["Jungle"], + techRequired:"Bronze Working" + }, + { + name:"Remove Marsh", + turnsToBuild:6, + terrainsCanBeBuiltOn:["Marsh"], + techRequired:"Masonry" + }, ] \ No newline at end of file diff --git a/core/src/com/unciv/civinfo/TileInfo.java b/core/src/com/unciv/civinfo/TileInfo.java index d7501e3154..2359559329 100644 --- a/core/src/com/unciv/civinfo/TileInfo.java +++ b/core/src/com/unciv/civinfo/TileInfo.java @@ -105,10 +105,10 @@ public class TileInfo return resource != null && getTileResource().improvement.equals(improvement.name); } - public void startWorkingOnImprovement(TileImprovement improvement) + public void startWorkingOnImprovement(String improvementName,int turnsToBuild) { - improvementInProgress = improvement.name; - turnsToImprovement = improvement.turnsToBuild; + improvementInProgress = improvementName; + turnsToImprovement = turnsToBuild; } public void stopWorkingOnImprovement() diff --git a/core/src/com/unciv/game/ImageGetter.java b/core/src/com/unciv/game/ImageGetter.java index 372069301d..d9290e0747 100644 --- a/core/src/com/unciv/game/ImageGetter.java +++ b/core/src/com/unciv/game/ImageGetter.java @@ -8,7 +8,7 @@ import com.badlogic.gdx.scenes.scene2d.ui.Image; import java.util.HashMap; public class ImageGetter { - static HashMap textureRegionByFileName = new HashMap(); + public static HashMap textureRegionByFileName = new HashMap(); public static Image getImageByFilename(String fileName) { if (!textureRegionByFileName.containsKey(fileName)) diff --git a/core/src/com/unciv/game/TileGroup.java b/core/src/com/unciv/game/TileGroup.java index 13cfb7a5b1..9dcee9bc77 100644 --- a/core/src/com/unciv/game/TileGroup.java +++ b/core/src/com/unciv/game/TileGroup.java @@ -6,6 +6,8 @@ import com.badlogic.gdx.scenes.scene2d.Group; import com.badlogic.gdx.scenes.scene2d.ui.Container; import com.badlogic.gdx.scenes.scene2d.ui.Image; import com.badlogic.gdx.scenes.scene2d.ui.TextButton; +import com.badlogic.gdx.scenes.scene2d.utils.Drawable; +import com.badlogic.gdx.scenes.scene2d.utils.TextureRegionDrawable; import com.unciv.civinfo.CivilizationInfo; import com.unciv.civinfo.RoadStatus; import com.unciv.civinfo.TileInfo; @@ -48,6 +50,9 @@ public class TileGroup extends Group { void update() { + String terrainFileName ="TerrainIcons/" + tileInfo.getLastTerrain().name.replace(' ','_') + "_(Civ5).png"; + terrainImage.setDrawable(new TextureRegionDrawable(ImageGetter.textureRegionByFileName.get(terrainFileName))); // In case we e.g. removed a jungle + if (tileInfo.hasViewableResource() && resourceImage == null) { // Need to add the resource image! String fileName = "ResourceIcons/" + tileInfo.resource + "_(Civ5).png"; Image image = ImageGetter.getImageByFilename(fileName); diff --git a/core/src/com/unciv/game/UnCivGame.java b/core/src/com/unciv/game/UnCivGame.java index 7d2b756b87..047d995631 100644 --- a/core/src/com/unciv/game/UnCivGame.java +++ b/core/src/com/unciv/game/UnCivGame.java @@ -82,8 +82,8 @@ public class UnCivGame extends Game { GameBasics.Technologies.put(tech.name,tech); } } - for(Building building : GameBasics.Buildings.values()){ - if(building.requiredTech == null) continue; + for(Building building : GameBasics.Buildings.values()) { + if (building.requiredTech == null) continue; TechColumn column = building.GetRequiredTech().column; building.cost = building.isWonder ? column.wonderCost : column.buildingCost; } diff --git a/core/src/com/unciv/game/WorldScreen.java b/core/src/com/unciv/game/WorldScreen.java index d06337ecef..1501f1d624 100644 --- a/core/src/com/unciv/game/WorldScreen.java +++ b/core/src/com/unciv/game/WorldScreen.java @@ -180,12 +180,12 @@ public class WorldScreen extends CameraStageBaseScreen { CivStats nextTurnStats = game.civInfo.getStatsForNextTurn(); - CivTable.add(new Label("gold: " + Math.round(currentStats.gold) + CivTable.add(new Label("Gold: " + Math.round(currentStats.gold) + "(" +(nextTurnStats.gold >0?"+":"") + Math.round(nextTurnStats.gold) +")", skin)); - CivTable.add(new Label("science: +" + Math.round(nextTurnStats.science), skin)); - CivTable.add(new Label("happiness: " + Math.round(nextTurnStats.happiness), skin)); - CivTable.add(new Label("culture: " + Math.round(currentStats.culture) + "(+" + Math.round(nextTurnStats.culture) +")", skin)); + CivTable.add(new Label("Science: +" + Math.round(nextTurnStats.science), skin)); + CivTable.add(new Label("Happiness: " + Math.round(nextTurnStats.happiness), skin)); + CivTable.add(new Label("Culture: " + Math.round(currentStats.culture) + "(+" + Math.round(nextTurnStats.culture) +")", skin)); CivTable.pack(); diff --git a/core/src/com/unciv/game/pickerscreens/ImprovementPickerScreen.java b/core/src/com/unciv/game/pickerscreens/ImprovementPickerScreen.java index 8b049a08b0..d3dfcba40b 100644 --- a/core/src/com/unciv/game/pickerscreens/ImprovementPickerScreen.java +++ b/core/src/com/unciv/game/pickerscreens/ImprovementPickerScreen.java @@ -6,12 +6,14 @@ import com.badlogic.gdx.scenes.scene2d.Touchable; import com.badlogic.gdx.scenes.scene2d.ui.TextButton; import com.badlogic.gdx.scenes.scene2d.ui.VerticalGroup; import com.badlogic.gdx.scenes.scene2d.utils.ClickListener; +import com.unciv.civinfo.CivilizationInfo; import com.unciv.game.UnCivGame; import com.unciv.models.gamebasics.GameBasics; import com.unciv.models.gamebasics.TileImprovement; public class ImprovementPickerScreen extends PickerScreen { - TileImprovement SelectedImprovement; + String SelectedImprovement; + int TurnsToImprovement; public ImprovementPickerScreen(final UnCivGame game, final com.unciv.civinfo.TileInfo tileInfo) { super(game); @@ -21,7 +23,7 @@ public class ImprovementPickerScreen extends PickerScreen { rightSideButton.addListener(new ClickListener(){ @Override public void clicked(InputEvent event, float x, float y) { - tileInfo.startWorkingOnImprovement(SelectedImprovement); + tileInfo.startWorkingOnImprovement(SelectedImprovement, TurnsToImprovement); game.setWorldScreen(); dispose(); } @@ -38,9 +40,10 @@ public class ImprovementPickerScreen extends PickerScreen { TB.addListener(new ClickListener(){ @Override public void clicked(InputEvent event, float x, float y) { - SelectedImprovement = improvement; + SelectedImprovement = improvement.name; + TurnsToImprovement = improvement.turnsToBuild; rightSideButton.setTouchable(Touchable.enabled); - rightSideButton.setText("Construct "+improvement.name); + rightSideButton.setText(improvement.name); rightSideButton.setColor(Color.WHITE); descriptionLabel.setText(improvement.getDescription()); } diff --git a/core/src/com/unciv/game/pickerscreens/TechPickerScreen.java b/core/src/com/unciv/game/pickerscreens/TechPickerScreen.java index e1ff9f0dec..181113f45e 100644 --- a/core/src/com/unciv/game/pickerscreens/TechPickerScreen.java +++ b/core/src/com/unciv/game/pickerscreens/TechPickerScreen.java @@ -100,14 +100,14 @@ public class TechPickerScreen extends PickerScreen { } for (Technology technology : GameBasics.Technologies.linqValues()) { - techMatrix[technology.column.columnNumber][technology.row - 1] = technology; + techMatrix[technology.column.columnNumber-1][technology.row - 1] = technology; } // Table topTable = new Table(); for (int i = 0; i < 10; i++) { topTable.row().pad(5); - for (int j = 0; j < 8; j++) { + for (int j = 0; j < 9; j++) { final Technology tech = techMatrix[j][i]; if (tech == null) topTable.add(); // empty cell else {