Camelcased json model field names

This commit is contained in:
Yair Morgenstern
2017-12-01 15:14:18 +02:00
parent 996204e7f5
commit f51923b1f6
32 changed files with 750 additions and 759 deletions

View File

@ -1,38 +1,38 @@
[ [
{ {
"Name":"City", name:"City",
"Description": "Your cities are the basis of your empire. Each city has a certain amount of population and many tiles, and can work as many tiles as it has population.\nThe center tile of a city is always worked and does not require population.\nNew Cities can be constructed by building a Settler.\nEach city your empire has removes 3 Happiness from the emmpire, and each population - another 1 Happiness, so plan carefully!" description: "Your cities are the basis of your empire. Each city has a certain amount of population and many tiles, and can work as many tiles as it has population.\nThe center tile of a city is always worked and does not require population.\nNew Cities can be constructed by building a Settler.\nEach city your empire has removes 3 Happiness from the emmpire, and each population - another 1 Happiness, so plan carefully!"
}, },
{ {
"Name":"Tile", name:"Tile",
"Description": "Tiles are areas where your population can work the land.\nEvery tile has a base terrain, such as Grassland, Tundra etc, and some have terrain overlays, like Hill, Forest etc.\nDepending on the terrain, tiles can hold tile resources.\nEach tile can have one improvement at anny given time." description: "Tiles are areas where your population can work the land.\nEvery tile has a base terrain, such as Grassland, Tundra etc, and some have terrain overlays, like Hill, Forest etc.\nDepending on the terrain, tiles can hold tile resources.\nEach tile can have one improvement at anny given time."
}, },
{ {
"Name":"Population", name:"Population",
"Description": "Represents the number of people in your city, who can work the city's tiles.\nPopulation grows by having enough surplus food, and will shrink if there isn't enough food to go around.\nEach Population consumes 2 Food per turn.\nWhen a new population is added, it will automatically work the tile producing the most food.\nYou can manually assign population to tiles by clicking the population icon on a tile - you'll have to remove a population from a tile to assign it somewhere else!" description: "Represents the number of people in your city, who can work the city's tiles.\nPopulation grows by having enough surplus food, and will shrink if there isn't enough food to go around.\nEach Population consumes 2 Food per turn.\nWhen a new population is added, it will automatically work the tile producing the most food.\nYou can manually assign population to tiles by clicking the population icon on a tile - you'll have to remove a population from a tile to assign it somewhere else!"
}, },
{ {
"Name":"Basic Resources", name:"Basic Resources",
"Description": "There are 6 basic resources in Civ: Food, Production, Gold, Science, Happiness and Culture.\rProduction and Food are per individual city, while the other resources are empire-wide.\rBasic resources are produced by working city tiles and by buildings." description: "There are 6 basic resources in Civ: Food, Production, Gold, Science, Happiness and Culture.\rProduction and Food are per individual city, while the other resources are empire-wide.\rBasic resources are produced by working city tiles and by buildings."
}, },
{ {
"Name":"Food", name:"Food",
"Description": "A basic resource. Each city can store surplus food.\nWhen the surplus food reaches a certain amount dependant on the population, it is consumed and the city gains another population.\nIf all the suplus food is depleted, and there is a food shortage, the city will lose a population." description: "A basic resource. Each city can store surplus food.\nWhen the surplus food reaches a certain amount dependant on the population, it is consumed and the city gains another population.\nIf all the suplus food is depleted, and there is a food shortage, the city will lose a population."
}, },
{ {
"Name":"Production", name:"Production",
"Description": "A basic resource. Production is used to build buildings and units in the city.\r\nEach idle population (not working a tile) produces 1 production." description: "A basic resource. Production is used to build buildings and units in the city.\r\nEach idle population (not working a tile) produces 1 production."
}, },
{ {
"Name":"Science", name:"Science",
"Description": "A basic resource. Represents the scientific advancement of your empire.\nEach Technology requires a certain amount of Science, which increases as the technologies become more advanced.\nEach Population produces 1 Science." description: "A basic resource. Represents the scientific advancement of your empire.\nEach Technology requires a certain amount of Science, which increases as the technologies become more advanced.\nEach Population produces 1 Science."
}, },
{ {
"Name":"Gold", name:"Gold",
"Description": "A basic resource. Represents the wealth of your empire.\nMost buildings have mainainance costs, which require Gold per turn.\nEvery turn you are in a gold deficit, you will lose science points equal to your debt, which can halt your scientific advancement entirely!." description: "A basic resource. Represents the wealth of your empire.\nMost buildings have mainainance costs, which require Gold per turn.\nEvery turn you are in a gold deficit, you will lose science points equal to your debt, which can halt your scientific advancement entirely!."
}, },
{ {
"Name":"Happiness", name:"Happiness",
"Description": "A basic resource.\nEach city decreases your empire's happiness by 3, and each population by 1.\nYou can increase your happiness by buildings, or by working Luxury resources.\nWhen in an unhappy state, your surplus food added is reduced to 1/4, dramatically slowing your city growth.\nWhen enough Happiness is accrued, your empire will enter a Golden Age!" description: "A basic resource.\nEach city decreases your empire's happiness by 3, and each population by 1.\nYou can increase your happiness by buildings, or by working Luxury resources.\nWhen in an unhappy state, your surplus food added is reduced to 1/4, dramatically slowing your city growth.\nWhen enough Happiness is accrued, your empire will enter a Golden Age!"
} }
] ]

View File

@ -1,194 +1,194 @@
[ [
{ {
"Name":"Worker", name:"Worker",
"Description": "Can build improvements on tiles", description: "Can build improvements on tiles",
"Cost":60 cost:60
}, },
{ {
"Name":"Settler", name:"Settler",
"Description": "Founds a new city", description: "Founds a new city",
"Cost":106 cost:106
}, },
{ {
"Name":"Palace", name:"Palace",
"Description": "Indicates that this city is the capital", description: "Indicates that this city is the capital",
"IsWonder":true, isWonder:true,
"Production":3, production:3,
"Science":3, science:3,
"Gold":3, gold:3,
"Culture":1, culture:1,
"Cost":1 cost:1
}, },
{ {
"Name":"Monument", name:"Monument",
"Description": "Produces culture, enabling border growth", description: "Produces culture, enabling border growth",
"Culture":2, culture:2,
"Cost":40, cost:40,
"Maintainance":1 maintainance:1
}, },
{ {
"Name":"Granary", name:"Granary",
"Description": "Wheat, bananas and deer produce +1 food.", description: "Wheat, bananas and deer produce +1 food.",
"Food":2, food:2,
"ResourceBonusStats":{"Food":1}, resourceBonusStats:{food:1},
"Maintainance":1, maintainance:1,
"RequiredTech":"Pottery" requiredTech:"Pottery"
}, },
{ {
"Name":"Library", name:"Library",
"Description": "Adds 1 science for each 2 population in the city.", description: "Adds 1 science for each 2 population in the city.",
"Maintainance":1, maintainance:1,
"RequiredTech":"Writing" requiredTech:"Writing"
}, },
{ {
"Name":"Great Library", name:"Great Library",
"Description": "Provides a free technology, and a library in the city it is built in", description: "Provides a free technology, and a library in the city it is built in",
"Science":3, science:3,
"Culture":1, culture:1,
"IsWonder":true, isWonder:true,
"ProvidesFreeBuilding": "Library", providesFreeBuilding: "Library",
"FreeTechs":1, freeTechs:1,
"RequiredTech":"Writing" requiredTech:"Writing"
}, },
{ {
"Name":"Temple", name:"Temple",
"Description": "", description: "",
"Culture":3, culture:3,
"RequiredBuilding":"Monument", requiredBuilding:"Monument",
"Maintainance":2, maintainance:2,
"RequiredTech":"Philosophy" requiredTech:"Philosophy"
}, },
{ {
"Name":"Oracle", name:"Oracle",
"Description": "Provides a free social policy - todo", description: "Provides a free social policy - todo",
"Culture":3, culture:3,
"IsWonder":true, isWonder:true,
"RequiredTech":"Philosophy" requiredTech:"Philosophy"
}, },
{ {
"Name":"National College", name:"National College",
"Description": "+50% science from this city", description: "+50% science from this city",
"Science":3, science:3,
"Culture":1, culture:1,
"IsWonder":true, isWonder:true,
"RequiredBuildingInAllCities":"Library", requiredBuildingInAllCities:"Library",
"RequiredTech":"Philosophy" requiredTech:"Philosophy"
}, },
{ {
"Name":"Stable", name:"Stable",
"Description": "Cattle, sheep and horses produce +1 production.", description: "Cattle, sheep and horses produce +1 production.",
"Maintainance":1, maintainance:1,
"ResourceRequired":true, resourceRequired:true,
"ResourceBonusStats":{"Production":1}, resourceBonusStats:{production:1},
"RequiredTech":"Horseback Riding" requiredTech:"Horseback Riding"
}, },
{ {
"Name":"Circus Maximus", name:"Circus Maximus",
"Description": "", description: "",
"Happiness":5, happiness:5,
"Culture":1, culture:1,
"IsWonder":true, isWonder:true,
"RequiredBuildingInAllCities":"Colloseum", requiredBuildingInAllCities:"Colloseum",
"RequiredTech":"Philosophy" requiredTech:"Philosophy"
}, },
{ {
"Name":"Hanging Gardens", name:"Hanging Gardens",
"Description": "", description: "",
"Food":10, food:10,
"Culture":1, culture:1,
"IsWonder":true, isWonder:true,
"RequiredTech":"Mathematics" requiredTech:"Mathematics"
}, },
{ {
"Name":"Colloseum", name:"Colloseum",
"Description": "", description: "",
"Maintainance":1, maintainance:1,
"Happiness":2, happiness:2,
"RequiredTech":"Construction" requiredTech:"Construction"
}, },
{ {
"Name":"Market", name:"Market",
"Description": "", description: "",
"Gold":2, gold:2,
"PercentStatBonus":{"Gold":25}, percentStatBonus:{gold:25},
"RequiredTech":"Currency" requiredTech:"Currency"
}, },
{ {
"Name":"Chichen Itza", name:"Chichen Itza",
"Description": "Length of golden ages increased +50%", description: "Length of golden ages increased +50%",
"Gold":5, gold:5,
"Culture":1, culture:1,
"IsWonder":true, isWonder:true,
"RequiredTech":"Currency" requiredTech:"Currency"
}, },
{ {
"Name":"Mint", name:"Mint",
"Description": "", description: "",
"Maintainance":0, maintainance:0,
"ResourceRequired":true, resourceRequired:true,
"ResourceBonusStats":{"Gold":2}, resourceBonusStats:{gold:2},
"RequiredTech":"Currency" requiredTech:"Currency"
}, },
{ {
"Name":"Machu Pichu", name:"Machu Pichu",
"Description": "Gold from all trade routes +25%. Can only be built on cities with mountain in range of 2 tiles - todo", description: "Gold from all trade routes +25%. Can only be built on cities with mountain in range of 2 tiles - todo",
"Gold":5, gold:5,
"Culture":1, culture:1,
"IsWonder":true, isWonder:true,
"RequiredTech":"Currency" requiredTech:"Currency"
}, },
{ {
"Name":"Aqueduct", name:"Aqueduct",
"Description": "40% of food is carried over after a new citizen is born - TODO", description: "40% of food is carried over after a new citizen is born - TODO",
"Maintainance":1, maintainance:1,
"Food":2, food:2,
"RequiredTech":"Engineering" requiredTech:"Engineering"
}, },
{ {
"Name":"Workshop", name:"Workshop",
"Description": "", description: "",
"Maintainance":2, maintainance:2,
"Production":2, production:2,
"PercentStatBonus":{"Production":15}, percentStatBonus:{production:15},
"RequiredTech":"Metal Casting" requiredTech:"Metal Casting"
}, },
{ {
"Name":"Forge", name:"Forge",
"Description": "Iron provides +1 production", description: "Iron provides +1 production",
"Maintainance":1, maintainance:1,
"ResourceRequired":true, resourceRequired:true,
"ResourceBonusStats":{"Production":1}, resourceBonusStats:{production:1},
"RequiredTech":"Metal Casting" requiredTech:"Metal Casting"
}, },
{ {
"Name":"University", name:"University",
"Description": "Jungles provide +2 science", description: "Jungles provide +2 science",
"Maintainance":2, maintainance:2,
"PercentStatBonus":{"Science":33}, percentStatBonus:{science:33},
"RequiredBuilding":"Library", requiredBuilding:"Library",
"RequiredTech":"Metal Casting" requiredTech:"Metal Casting"
}, },
{ {
"Name":"Oxford University", name:"Oxford University",
"Description": "+50% science from this city", description: "+50% science from this city",
"Science":3, science:3,
"Culture":1, culture:1,
"FreeTechs":1, freeTechs:1,
"IsWonder":true, isWonder:true,
"RequiredBuildingInAllCities":"University", requiredBuildingInAllCities:"University",
"RequiredTech":"Education" requiredTech:"Education"
}, },
{ {
"Name":"Angkor Wat", name:"Angkor Wat",
"Description": "Cost of aquiring new tiles reduced by 25% - TODO", description: "Cost of aquiring new tiles reduced by 25% - TODO",
"Culture":1, culture:1,
"IsWonder":true, isWonder:true,
"NewTileCostReduction":25, newTileCostReduction:25,
"RequiredTech":"Education" requiredTech:"Education"
} }
] ]

View File

@ -1,216 +1,216 @@
[ [
{ {
"ColumnNumber": 1, columnNumber: 1,
"TechCost": 35, techCost: 35,
"BuildingCost":60, buildingCost:60,
"Techs":[ techs:[
{ {
"Name":"Pottery", name:"Pottery",
"Row":2, row:2,
"Description":"Allows your cities to construct a granary, which provides food." description:"Allows your cities to construct a granary, which provides food."
}, },
{ {
"Name":"Animal Husbandry", name:"Animal Husbandry",
"Row":5, row:5,
"Description":"Reveals horses, and allows workers to build pastures, which improve various animal resources." description:"Reveals horses, and allows workers to build pastures, which improve various animal resources."
}, },
{ {
"Name":"Mining", name:"Mining",
"Row":9, row:9,
"Description":"Allows workers to build mines, which grant access to several strategic and luxury resources and increases production. Also allows workers to clear forests." description:"Allows workers to build mines, which grant access to several strategic and luxury resources and increases production. Also allows workers to clear forests."
} }
] ]
}, },
{ {
"ColumnNumber": 2, columnNumber: 2,
"TechCost": 55, techCost: 55,
"BuildingCost":75, buildingCost:75,
"WonderCost":185, wonderCost:185,
"Techs":[ techs:[
{ {
"Name":"Sailing", name:"Sailing",
"Row":1, row:1,
"Prerequisites":["Pottery"], prerequisites:["Pottery"],
"Description":"Allows access to sea resources by building work boats" description:"Allows access to sea resources by building work boats"
}, },
{ {
"Name":"Calendar", name:"Calendar",
"Row":2, row:2,
"Prerequisites":["Pottery"], prerequisites:["Pottery"],
"Description":"Allows your workers to build Plantations, which grant access to several luxury resources" description:"Allows your workers to build Plantations, which grant access to several luxury resources"
}, },
{ {
"Name":"Writing", name:"Writing",
"Row":3, row:3,
"Prerequisites":["Pottery"], prerequisites:["Pottery"],
"Description":"Allows your cities to construct libraries, which increases science produced. Also enables construction of the Great Library wonder." description:"Allows your cities to construct libraries, which increases science produced. Also enables construction of the Great Library wonder."
}, },
{ {
"Name":"Trapping", name:"Trapping",
"Row":5, row:5,
"Prerequisites":["Animal Husbandry"], prerequisites:["Animal Husbandry"],
"Description":"Allows your workers to build Camps and Trading Posts, which increase gold produced and grant access to several luxury resources" description:"Allows your workers to build Camps and Trading Posts, which increase gold produced and grant access to several luxury resources"
}, },
{ {
"Name":"The Wheel", name:"The Wheel",
"Row":6, row:6,
"Prerequisites":["Animal Husbandry"], prerequisites:["Animal Husbandry"],
"Description":"Allows construction or roads to your capilat city, providing gold from trade" description:"Allows construction or roads to your capilat city, providing gold from trade"
}, },
{ {
"Name":"Masonry", name:"Masonry",
"Row":9, row:9,
"Prerequisites":["Mining"], prerequisites:["Mining"],
"Description":"Allows workers to build quarries, granting access to stone and marble resources, and clear marshes. Also enables construction of the Pyramids wonder." description:"Allows workers to build quarries, granting access to stone and marble resources, and clear marshes. Also enables construction of the Pyramids wonder."
}, },
{ {
"Name":"Bronze Working", name:"Bronze Working",
"Row":10, row:10,
"Prerequisites":["Mining"], prerequisites:["Mining"],
"Description":"Allows workers to remove jungles" description:"Allows workers to remove jungles"
} }
] ]
}, },
{ {
"ColumnNumber": 3, columnNumber: 3,
"TechCost": 115, techCost: 115,
"BuildingCost":100, buildingCost:100,
"WonderCost":250, wonderCost:250,
"Techs":[ techs:[
{ {
"Name":"Optics", name:"Optics",
"Cost":95, cost:95,
"Row":1, row:1,
"Prerequisites":["Sailing"], prerequisites:["Sailing"],
"Description":"Allows construction of lighthouses, providing more food for sea tiles" description:"Allows construction of lighthouses, providing more food for sea tiles"
}, },
{ {
"Name":"Philosophy", name:"Philosophy",
"Row":3, row:3,
"Prerequisites":["Writing"], prerequisites:["Writing"],
"Description":"Allows construction of temples, which generate culture, and the Oracle and National College wonders" description:"Allows construction of temples, which generate culture, and the Oracle and National College wonders"
}, },
{ {
"Name":"Horseback Riding", name:"Horseback Riding",
"Row":5, row:5,
"Prerequisites":["The Wheel"], prerequisites:["The Wheel"],
"Description":"Allows construction of stables, which increase production on cattle, sheep and horses" description:"Allows construction of stables, which increase production on cattle, sheep and horses"
}, },
{ {
"Name":"Mathematics", name:"Mathematics",
"Row":7, row:7,
"Prerequisites":["The Wheel"], prerequisites:["The Wheel"],
"Description": "Enables construction of the Hanging Gardens wonder." description: "Enables construction of the Hanging Gardens wonder."
}, },
{ {
"Name":"Construction", name:"Construction",
"Row":9, row:9,
"Prerequisites":["Masonry"], prerequisites:["Masonry"],
"Description":"Allows construction of colloseums, which generate happiness, and building lumber mills on forests, providing production" description:"Allows construction of colloseums, which generate happiness, and building lumber mills on forests, providing production"
}, },
{ {
"Name":"Iron Working", name:"Iron Working",
"Row":10, row:10,
"Prerequisites":["Bronze Working"], prerequisites:["Bronze Working"],
"Description":"Reveals Iron on map" description:"Reveals Iron on map"
} }
] ]
}, },
{ {
"ColumnNumber": 4, columnNumber: 4,
"TechCost": 305, techCost: 305,
"BuildingCost":120, buildingCost:120,
"WonderCost":300, wonderCost:300,
"Techs":[ techs:[
{ {
"Name":"Theology", name:"Theology",
"Row":2, row:2,
"Prerequisites":["Calendar","Philosophy"], prerequisites:["Calendar","Philosophy"],
"Description":"???" description:"???"
}, },
{ {
"Name":"Civil Service", name:"Civil Service",
"Row":4, row:4,
"Prerequisites":["Trapping","Philosophy"], prerequisites:["Trapping","Philosophy"],
"Description":"Enables the Chichen Itza wonder, which increases the length of golden ages" description:"Enables the Chichen Itza wonder, which increases the length of golden ages"
}, },
{ {
"Name":"Currency", name:"Currency",
"Row":7, row:7,
"Prerequisites":["Mathematics"], prerequisites:["Mathematics"],
"Description":"Enables construction of Markets and Mints, which increase gold. Also enables the Machu Pichu wonder." description:"Enables construction of Markets and Mints, which increase gold. Also enables the Machu Pichu wonder."
}, },
{ {
"Name":"Engineering", name:"Engineering",
"Row":8, row:8,
"Prerequisites":["Mathematics","Construction"], prerequisites:["Mathematics","Construction"],
"Description":"Enables construction of aqueducts, which speed up city growth" description:"Enables construction of aqueducts, which speed up city growth"
}, },
{ {
"Name":"Metal Casting", name:"Metal Casting",
"Row":10, row:10,
"Prerequisites":["Construction","Iron Working"], prerequisites:["Construction","Iron Working"],
"Description":"Enables constrution of Forges and Workshops, increasing production" description:"Enables constrution of Forges and Workshops, increasing production"
} }
] ]
}, },
{ {
"ColumnNumber": 5, columnNumber: 5,
"TechCost": 535, techCost: 535,
"BuildingCost":160, buildingCost:160,
"WonderCost":400, wonderCost:400,
"Techs":[ techs:[
{ {
"Name":"Compass", name:"Compass",
"Row":1, row:1,
"Cost":415, cost:415,
"Prerequisites":["Optics"], prerequisites:["Optics"],
"Description":"???" description:"???"
}, },
{ {
"Name":"Education", name:"Education",
"Row":3, row:3,
"Prerequisites":["Theology","Civil Service"], prerequisites:["Theology","Civil Service"],
"Description":"Allows cities to convert production to science, construction of Universities which provide science, and construction of the Angkor Wat wonder" description:"Allows cities to convert production to science, construction of Universities which provide science, and construction of the Angkor Wat wonder"
}, },
{ {
"Name":"Chivalry", name:"Chivalry",
"Row":5, row:5,
"Prerequisites":["Horseback Riding","Civil Service","Currency"], prerequisites:["Horseback Riding","Civil Service","Currency"],
"Description":"???" description:"???"
}, },
{ {
"Name":"Machinery", name:"Machinery",
"Row":8, row:8,
"Prerequisites":["Engineering"], prerequisites:["Engineering"],
"Description":"???" description:"???"
}, },
{ {
"Name":"Physics", name:"Physics",
"Row":9, row:9,
"Prerequisites":["Engineering","Metal Casting"], prerequisites:["Engineering","Metal Casting"],
"Description":"???" description:"???"
}, },
{ {
"Name":"Steel", name:"Steel",
"Row":10, row:10,
"Prerequisites":["Metal Casting"], prerequisites:["Metal Casting"],
"Description":"???" description:"???"
} }
] ]
}, },
{ {
"ColumnNumber": 6, columnNumber: 6,
"TechCost": 1265, techCost: 1265,
"BuildingCost":250, buildingCost:250,
"WonderCost":625, wonderCost:625,
"Techs":[ techs:[
{ {
"Name":"Economics", name:"Economics",
"Row":1, row:1,
"Prerequisites":["Chivalry"], prerequisites:["Chivalry"],
"Description":"This is a lie, change!!!" description:"This is a lie, change!!!"
} }
] ]
} }

View File

@ -1,82 +1,82 @@
[ [
{ {
"Name":"Grassland", name:"Grassland",
"Type":"BaseTerrain", type:"BaseTerrain",
"Food":2, food:2,
"RGB":"0,255,0" rgb:"0,255,0"
}, },
{ {
"Name":"Plains", name:"Plains",
"Type":"BaseTerrain", type:"BaseTerrain",
"Food":1, food:1,
"Production":1, production:1,
"RGB":"240,180,135" rgb:"240,180,135"
}, },
{ {
"Name":"Tundra", name:"Tundra",
"Type":"BaseTerrain", type:"BaseTerrain",
"Food":1, food:1,
"RGB":"130,137,121" rgb:"130,137,121"
}, },
{ {
"Name":"Desert", name:"Desert",
"Type":"BaseTerrain", type:"BaseTerrain",
"RGB":"237,201,175" rgb:"237,201,175"
}, },
{ {
"Name":"Lakes", name:"Lakes",
"Type":"BaseTerrain", type:"BaseTerrain",
"Food":1, food:1,
"Gold":1, gold:1,
"RGB":"104,120,201", rgb:"104,120,201",
"CanHaveOverlay":false canHaveOverlay:false
}, },
{ {
"Name":"Hill", name:"Hill",
"Type":"BaseTerrain", type:"BaseTerrain",
"Production":2, production:2,
"RGB":"116,88,62" rgb:"116,88,62"
}, },
{ {
"Name":"Forest", name:"Forest",
"Type":"TerrainFeature", type:"TerrainFeature",
"Production":1, production:1,
"Food":1, food:1,
"OverrideStats":true, overrideStats:true,
"Unbuildable":true, unbuildable:true,
"OccursOn":["Tundra","Plains","Grassland"], occursOn:["Tundra","Plains","Grassland"],
"RemovalTech": "Mining" removalTech: "Mining"
}, },
{ {
"Name":"Jungle", name:"Jungle",
"Type":"TerrainFeature", type:"TerrainFeature",
"Food":2, food:2,
"OverrideStats":true, overrideStats:true,
"Unbuildable":true, unbuildable:true,
"OccursOn":["Plains","Grassland"], occursOn:["Plains","Grassland"],
"RemovalTech": "Bronze Working" removalTech: "Bronze Working"
}, },
{ {
"Name":"Marsh", name:"Marsh",
"Type":"TerrainFeature", type:"TerrainFeature",
"Food":-1, food:-1,
"Unbuildable":true, unbuildable:true,
"OccursOn":["Grassland"], occursOn:["Grassland"],
"RemovalTech": "Masonry" removalTech: "Masonry"
}, },
{ {
"Name":"Oasis", name:"Oasis",
"Type":"TerrainFeature", type:"TerrainFeature",
"Food":3, food:3,
"Unbuildable":true, unbuildable:true,
"OccursOn":["Desert"] occursOn:["Desert"]
}, },
{ {
"Name":"Flood plains", name:"Flood plains",
"Type":"TerrainFeature", type:"TerrainFeature",
"Food":2, food:2,
"OccursOn":["Desert"] occursOn:["Desert"]
} }
] ]

View File

@ -1,81 +1,81 @@
[ [
{ {
"Name":"Farm", name:"Farm",
"TerrainsCanBeBuiltOn":["Plains","Grassland","Desert","Food plains"], terrainsCanBeBuiltOn:["Plains","Grassland","Desert","Food plains"],
"Food":1, food:1,
"TurnsToBuild":6, turnsToBuild:6,
"ImprovingTech":"Fertilizer", improvingTech:"Fertilizer",
"ImprovingTechStats":{"Food":1} improvingTechStats:{food:1}
}, },
{ {
"Name":"Lumber mill", name:"Lumber mill",
"TerrainsCanBeBuiltOn":["Forest"], terrainsCanBeBuiltOn:["Forest"],
"Production":1, production:1,
"TurnsToBuild":6, turnsToBuild:6,
"TechRequired":"Construction", techRequired:"Construction",
"ImprovingTech":"Scientific Theory", improvingTech:"Scientific Theory",
"ImprovingTechStats":{"Production":1} improvingTechStats:{production:1}
}, },
{ {
"Name":"Mine", name:"Mine",
"TerrainsCanBeBuiltOn":["Hill"], terrainsCanBeBuiltOn:["Hill"],
"Production":1, production:1,
"TurnsToBuild":6, turnsToBuild:6,
"TechRequired":"Mining", techRequired:"Mining",
"ImprovingTech":"Chemistry", improvingTech:"Chemistry",
"ImprovingTechStats":{"Production":1} improvingTechStats:{production:1}
}, },
{ {
"Name":"Trading post", name:"Trading post",
"TerrainsCanBeBuiltOn":["Plains","Grassland","Desert","Hill","Tundra","Forest","Jungle","Food plains"], terrainsCanBeBuiltOn:["Plains","Grassland","Desert","Hill","Tundra","Forest","Jungle","Food plains"],
"Gold":1, gold:1,
"TurnsToBuild":6, turnsToBuild:6,
"TechRequired":"Trapping", techRequired:"Trapping",
"ImprovingTech":"Economics", improvingTech:"Economics",
"ImprovingTechStats": {"Gold":1} improvingTechStats: {gold:1}
}, },
{ {
"Name":"Camp", name:"Camp",
"TurnsToBuild":6, turnsToBuild:6,
"TechRequired":"Trapping", techRequired:"Trapping",
"ImprovingTech":"Economics", improvingTech:"Economics",
"ImprovingTechStats":{"Gold":1} improvingTechStats:{gold:1}
}, },
{ {
"Name":"Oil well", name:"Oil well",
"Production":3, production:3,
"TurnsToBuild":6 turnsToBuild:6
}, },
{ {
"Name":"Pasture", name:"Pasture",
"TurnsToBuild":6, turnsToBuild:6,
"TechRequired":"Animal Husbandry", techRequired:"Animal Husbandry",
"ImprovingTech":"Fertilizer", improvingTech:"Fertilizer",
"ImprovingTechStats":{"Food":1} improvingTechStats:{food:1}
}, },
{ {
"Name":"Plantation", name:"Plantation",
"TurnsToBuild":6, turnsToBuild:6,
"Gold":1, gold:1,
"TechRequired":"Calendar", techRequired:"Calendar",
"ImprovingTech":"Fertilizer", improvingTech:"Fertilizer",
"ImprovingTechStats":{"Food":1} improvingTechStats:{food:1}
}, },
{ {
"Name":"Quarry", name:"Quarry",
"TurnsToBuild":6, turnsToBuild:6,
"TechRequired":"Masonry", techRequired:"Masonry",
"ImprovingTech":"Chemistry", improvingTech:"Chemistry",
"ImprovingTechStats":{"Production":1} improvingTechStats:{production:1}
}, },
{ {
"Name":"Road", name:"Road",
"TurnsToBuild":6, turnsToBuild:6,
"TechRequired":"The Wheel" techRequired:"The Wheel"
}, },
{ {
"Name":"Railroad", name:"Railroad",
"TurnsToBuild":12, turnsToBuild:12,
"TechRequired":"Railroad" techRequired:"Railroad"
} }
] ]

View File

@ -1,157 +1,157 @@
[ [
{ {
"Name":"Cattle", name:"Cattle",
"ResourceType":"Bonus", resourceType:"Bonus",
"TerrainsCanBeFoundOn":["Grassland"], terrainsCanBeFoundOn:["Grassland"],
"Food":1, food:1,
"Improvement":"Pasture", improvement:"Pasture",
"ImprovementStats":{"Production":1}, improvementStats:{production:1},
"Building":"Stable" building:"Stable"
}, },
{ {
"Name":"Sheep", name:"Sheep",
"ResourceType":"Bonus", resourceType:"Bonus",
"TerrainsCanBeFoundOn":["Plains","Hill"], terrainsCanBeFoundOn:["Plains","Hill"],
"Food":1, food:1,
"Improvement":"Pasture", improvement:"Pasture",
"ImprovementStats":{"Food":1}, improvementStats:{food:1},
"Building":"Stable" building:"Stable"
}, },
{ {
"Name":"Deer", name:"Deer",
"ResourceType":"Bonus", resourceType:"Bonus",
"TerrainsCanBeFoundOn":["Forest","Tundra"], terrainsCanBeFoundOn:["Forest","Tundra"],
"Food":1, food:1,
"Improvement":"Camp", improvement:"Camp",
"ImprovementStats":{"Production":1}, improvementStats:{production:1},
"Building":"Granary" building:"Granary"
}, },
{ {
"Name":"Bananas", name:"Bananas",
"ResourceType":"Bonus", resourceType:"Bonus",
"TerrainsCanBeFoundOn":["Jungle"], terrainsCanBeFoundOn:["Jungle"],
"Food":1, food:1,
"Improvement":"Plantation", improvement:"Plantation",
"ImprovementStats":{"Food":2,"Production":-1}, improvementStats:{food:2,production:-1},
"Building":"Granary" building:"Granary"
}, },
{ {
"Name":"Wheat", name:"Wheat",
"ResourceType":"Bonus", resourceType:"Bonus",
"TerrainsCanBeFoundOn":["Plains","Flood plains","Desert"], terrainsCanBeFoundOn:["Plains","Flood plains","Desert"],
"Food":1, food:1,
"Improvement":"Farm", improvement:"Farm",
"ImprovementStats":{"Food":1}, improvementStats:{food:1},
"Building":"Granary" building:"Granary"
}, },
{ {
"Name":"Stone", name:"Stone",
"ResourceType":"Bonus", resourceType:"Bonus",
"TerrainsCanBeFoundOn":["Plains","Desert"], terrainsCanBeFoundOn:["Plains","Desert"],
"Production":1, production:1,
"Improvement":"Quarry", improvement:"Quarry",
"ImprovementStats":{"Production":1}, improvementStats:{production:1},
"Building":"Stone Works" building:"Stone Works"
}, },
{ {
"Name":"Horses", name:"Horses",
"ResourceType":"Strategic", resourceType:"Strategic",
"RevealedBy":"Animal Husbandry", revealedBy:"Animal Husbandry",
"TerrainsCanBeFoundOn":["Plains","Desert"], terrainsCanBeFoundOn:["Plains","Desert"],
"Production":1, production:1,
"Improvement":"Pasture", improvement:"Pasture",
"ImprovementStats":{"Production":1}, improvementStats:{production:1},
"Building":"Stable" building:"Stable"
}, },
{ {
"Name":"Iron", name:"Iron",
"ResourceType":"Strategic", resourceType:"Strategic",
"RevealedBy":"Iron Working", revealedBy:"Iron Working",
"TerrainsCanBeFoundOn":["Grassland","Plains","Desert","Tundra","Snow","Hill"], terrainsCanBeFoundOn:["Grassland","Plains","Desert","Tundra","Snow","Hill"],
"Production":1, production:1,
"Improvement":"Mine", improvement:"Mine",
"ImprovementStats":{"Production":1}, improvementStats:{production:1},
"Building":"Forge" building:"Forge"
}, },
{ {
"Name":"Coal", name:"Coal",
"ResourceType":"Strategic", resourceType:"Strategic",
"RevealedBy":"Industrialization", revealedBy:"Industrialization",
"TerrainsCanBeFoundOn":["Grassland","Plains","Hill"], terrainsCanBeFoundOn:["Grassland","Plains","Hill"],
"Production":1, production:1,
"Improvement":"Mine", improvement:"Mine",
"ImprovementStats":{"Production":2} improvementStats:{production:2}
}, },
{ {
"Name":"Oil", name:"Oil",
"ResourceType":"Strategic", resourceType:"Strategic",
"RevealedBy":"Biology", revealedBy:"Biology",
"TerrainsCanBeFoundOn":["Desert","Coast","Tundra","Snow","Marsh"], terrainsCanBeFoundOn:["Desert","Coast","Tundra","Snow","Marsh"],
"Production":1, production:1,
"Improvement":"Oil well", improvement:"Oil well",
"ImprovementStats":{"Production":3} improvementStats:{production:3}
}, },
{ {
"Name":"Aluminum", name:"Aluminum",
"ResourceType":"Strategic", resourceType:"Strategic",
"RevealedBy":"Electricity", revealedBy:"Electricity",
"TerrainsCanBeFoundOn":["Plains","Desert","Tundra","Hill"], terrainsCanBeFoundOn:["Plains","Desert","Tundra","Hill"],
"Production":1, production:1,
"Improvement":"Mine", improvement:"Mine",
"ImprovementStats":{"Production":2} improvementStats:{production:2}
}, },
{ {
"Name":"Uranium", name:"Uranium",
"ResourceType":"Strategic", resourceType:"Strategic",
"RevealedBy":"Atomic Theory", revealedBy:"Atomic Theory",
"TerrainsCanBeFoundOn":["Plains","Desert","Tundra","Hill","Snow"], terrainsCanBeFoundOn:["Plains","Desert","Tundra","Hill","Snow"],
"Production":1, production:1,
"Improvement":"Mine", improvement:"Mine",
"ImprovementStats":{"Production":2} improvementStats:{production:2}
}, },
{ {
"Name":"Furs", name:"Furs",
"ResourceType":"Luxury", resourceType:"Luxury",
"TerrainsCanBeFoundOn":["Forest","Tundra"], terrainsCanBeFoundOn:["Forest","Tundra"],
"Gold":2, gold:2,
"Improvement":"Camp", improvement:"Camp",
"ImprovementStats":{"Gold":1} improvementStats:{gold:1}
}, },
{ {
"Name":"Cotton", name:"Cotton",
"ResourceType":"Luxury", resourceType:"Luxury",
"TerrainsCanBeFoundOn":["Grassland","Plains","Desert"], terrainsCanBeFoundOn:["Grassland","Plains","Desert"],
"Gold":2, gold:2,
"Improvement":"Plantation", improvement:"Plantation",
"ImprovementStats":{"Gold":1} improvementStats:{gold:1}
}, },
{ {
"Name":"Spices", name:"Spices",
"ResourceType":"Luxury", resourceType:"Luxury",
"TerrainsCanBeFoundOn":["Jungle","Forest"], terrainsCanBeFoundOn:["Jungle","Forest"],
"Gold":2, gold:2,
"Improvement":"Plantation", improvement:"Plantation",
"ImprovementStats":{"Gold":1} improvementStats:{gold:1}
}, },
{ {
"Name":"Sugar", name:"Sugar",
"ResourceType":"Luxury", resourceType:"Luxury",
"TerrainsCanBeFoundOn":["Plains","Flood plains","Grassland","Marsh"], terrainsCanBeFoundOn:["Plains","Flood plains","Grassland","Marsh"],
"Gold":2, gold:2,
"Improvement":"Plantation", improvement:"Plantation",
"ImprovementStats":{"Gold":1} improvementStats:{gold:1}
}, },
{ {
"Name":"Marble", name:"Marble",
"ResourceType":"Luxury", resourceType:"Luxury",
"TerrainsCanBeFoundOn":["Desert","Plains","Tundra","Hill","Grassland"], terrainsCanBeFoundOn:["Desert","Plains","Tundra","Hill","Grassland"],
"Gold":2, gold:2,
"Improvement":"Quarry", improvement:"Quarry",
"ImprovementStats":{"Gold":1,"Production":1}, improvementStats:{gold:1,production:1},
"Building":"Stone Works" building:"Stone Works"
} }
] ]

View File

@ -47,7 +47,7 @@ public class CityBuildings
if (!InProgressBuildings.containsKey(CurrentBuilding)) InProgressBuildings.put(CurrentBuilding, 0); if (!InProgressBuildings.containsKey(CurrentBuilding)) InProgressBuildings.put(CurrentBuilding, 0);
InProgressBuildings.put(CurrentBuilding, InProgressBuildings.get(CurrentBuilding) + ProductionProduced); InProgressBuildings.put(CurrentBuilding, InProgressBuildings.get(CurrentBuilding) + ProductionProduced);
if (InProgressBuildings.get(CurrentBuilding) >= GetGameBuilding(CurrentBuilding).Cost) if (InProgressBuildings.get(CurrentBuilding) >= GetGameBuilding(CurrentBuilding).cost)
{ {
if (CurrentBuilding.equals(Worker) || CurrentBuilding.equals(Settler)) if (CurrentBuilding.equals(Worker) || CurrentBuilding.equals(Settler))
UnCivGame.Current.civInfo.tileMap.get(cityLocation).unit = new Unit(CurrentBuilding,2); UnCivGame.Current.civInfo.tileMap.get(cityLocation).unit = new Unit(CurrentBuilding,2);
@ -56,9 +56,9 @@ public class CityBuildings
{ {
BuiltBuildings.add(CurrentBuilding); BuiltBuildings.add(CurrentBuilding);
Building gameBuilding = GetGameBuilding(CurrentBuilding); Building gameBuilding = GetGameBuilding(CurrentBuilding);
if (gameBuilding.ProvidesFreeBuilding != null && !BuiltBuildings.contains(gameBuilding.ProvidesFreeBuilding)) if (gameBuilding.providesFreeBuilding != null && !BuiltBuildings.contains(gameBuilding.providesFreeBuilding))
BuiltBuildings.add(gameBuilding.ProvidesFreeBuilding); BuiltBuildings.add(gameBuilding.providesFreeBuilding);
if (gameBuilding.FreeTechs != 0) UnCivGame.Current.civInfo.tech.FreeTechs += gameBuilding.FreeTechs; if (gameBuilding.freeTechs != 0) UnCivGame.Current.civInfo.tech.FreeTechs += gameBuilding.freeTechs;
} }
InProgressBuildings.remove(CurrentBuilding); InProgressBuildings.remove(CurrentBuilding);
@ -79,36 +79,36 @@ public class CityBuildings
public boolean CanBuild(final Building building) public boolean CanBuild(final Building building)
{ {
CivilizationInfo civInfo = UnCivGame.Current.civInfo; CivilizationInfo civInfo = UnCivGame.Current.civInfo;
if(IsBuilt(building.Name)) return false; if(IsBuilt(building.name)) return false;
// if (building.name.equals("Worker") || building.name.equals("Settler")) return false; // if (building.name.equals("Worker") || building.name.equals("Settler")) return false;
if(building.ResourceRequired) { if(building.resourceRequired) {
boolean containsResourceWithImprovement = GetCity().getTilesInRange() boolean containsResourceWithImprovement = GetCity().getTilesInRange()
.any(new Predicate<TileInfo>() { .any(new Predicate<TileInfo>() {
@Override @Override
public boolean evaluate(TileInfo tile) { public boolean evaluate(TileInfo tile) {
return tile.resource != null return tile.resource != null
&& building.Name.equals(tile.getTileResource().Building) && building.name.equals(tile.getTileResource().building)
&& tile.getTileResource().Improvement.equals(tile.improvement); && tile.getTileResource().improvement.equals(tile.improvement);
} }
}); });
if(!containsResourceWithImprovement) return false; if(!containsResourceWithImprovement) return false;
} }
if (building.RequiredTech != null && !civInfo.tech.IsResearched(building.RequiredTech)) return false; if (building.requiredTech != null && !civInfo.tech.IsResearched(building.requiredTech)) return false;
if (building.IsWonder && civInfo.cities if (building.isWonder && civInfo.cities
.any(new Predicate<CityInfo>() { .any(new Predicate<CityInfo>() {
@Override @Override
public boolean evaluate(CityInfo arg0) { public boolean evaluate(CityInfo arg0) {
CityBuildings CB = arg0.cityBuildings; CityBuildings CB = arg0.cityBuildings;
return CB.IsBuilding(building.Name) || CB.IsBuilt(building.Name); return CB.IsBuilding(building.name) || CB.IsBuilt(building.name);
} }
}) ) return false; }) ) return false;
if (building.RequiredBuilding != null && !IsBuilt(building.RequiredBuilding)) return false; if (building.requiredBuilding != null && !IsBuilt(building.requiredBuilding)) return false;
if (building.RequiredBuildingInAllCities != null || if (building.requiredBuildingInAllCities != null ||
civInfo.cities.any(new Predicate<CityInfo>() { civInfo.cities.any(new Predicate<CityInfo>() {
@Override @Override
public boolean evaluate(CityInfo arg0) { public boolean evaluate(CityInfo arg0) {
return arg0.cityBuildings.IsBuilt(building.RequiredBuildingInAllCities); return arg0.cityBuildings.IsBuilt(building.requiredBuildingInAllCities);
} }
}) ) return false; }) ) return false;
@ -125,7 +125,7 @@ public class CityBuildings
.select(new com.unciv.models.LinqCollection.Func<Building, String>() { .select(new com.unciv.models.LinqCollection.Func<Building, String>() {
@Override @Override
public String GetBy(Building arg0) { public String GetBy(Building arg0) {
return arg0.Name; return arg0.name;
} }
}); });
} }
@ -138,7 +138,7 @@ public class CityBuildings
Building gameBuilding = GetGameBuilding(building); Building gameBuilding = GetGameBuilding(building);
stats.add(gameBuilding); stats.add(gameBuilding);
//if (gameBuilding.GetFlatBonusStats != null) stats.add(gameBuilding.GetFlatBonusStats(cityInfo)); //if (gameBuilding.GetFlatBonusStats != null) stats.add(gameBuilding.GetFlatBonusStats(cityInfo));
stats.Gold -= gameBuilding.Maintainance; stats.gold -= gameBuilding.maintainance;
} }
return stats; return stats;
} }
@ -147,11 +147,11 @@ public class CityBuildings
{ {
int workDone = 0; int workDone = 0;
if (InProgressBuildings.containsKey(buildingName)) workDone = InProgressBuildings.get(buildingName); if (InProgressBuildings.containsKey(buildingName)) workDone = InProgressBuildings.get(buildingName);
float workLeft = GetGameBuilding(buildingName).Cost - workDone; // needs to be float so that we get the cieling properly ;) float workLeft = GetGameBuilding(buildingName).cost - workDone; // needs to be float so that we get the cieling properly ;)
FullStats cityStats = GetCity().getCityStats(); FullStats cityStats = GetCity().getCityStats();
int production = cityStats.Production; int production = cityStats.production;
if (buildingName.equals(Settler)) production += cityStats.Food; if (buildingName.equals(Settler)) production += cityStats.food;
return (int) Math.ceil(workLeft / production); return (int) Math.ceil(workLeft / production);
} }

View File

@ -66,7 +66,7 @@ public class CityInfo {
ArrayList<String> LuxuryResources = new ArrayList<String>(); ArrayList<String> LuxuryResources = new ArrayList<String>();
for (TileInfo tileInfo : getTilesInRange()) { for (TileInfo tileInfo : getTilesInRange()) {
TileResource resource = tileInfo.getTileResource(); TileResource resource = tileInfo.getTileResource();
if (resource != null && resource.ResourceType == ResourceType.Luxury && resource.Improvement.equals(tileInfo.improvement)) if (resource != null && resource.resourceType == ResourceType.Luxury && resource.improvement.equals(tileInfo.improvement))
LuxuryResources.add(tileInfo.resource); LuxuryResources.add(tileInfo.resource);
} }
return LuxuryResources; return LuxuryResources;
@ -92,10 +92,10 @@ public class CityInfo {
public FullStats getCityStats() { public FullStats getCityStats() {
FullStats stats = new FullStats() {{ FullStats stats = new FullStats() {{
Happiness = -3 - cityPopulation.Population; // -3 happiness per city and -3 per population happiness = -3 - cityPopulation.Population; // -3 happiness per city and -3 per population
}}; }};
stats.Science += cityPopulation.Population; stats.science += cityPopulation.Population;
// Working ppl // Working ppl
for (TileInfo cell : getTilesInRange()) for (TileInfo cell : getTilesInRange())
@ -103,8 +103,8 @@ public class CityInfo {
stats.add(cell.getTileStats()); stats.add(cell.getTileStats());
//idle ppl //idle ppl
stats.Production += getFreePopulation(); stats.production += getFreePopulation();
stats.Food -= cityPopulation.Population * 2; stats.food -= cityPopulation.Population * 2;
stats.add(cityBuildings.GetStats()); stats.add(cityBuildings.GetStats());
@ -114,16 +114,16 @@ public class CityInfo {
void nextTurn() { void nextTurn() {
FullStats stats = getCityStats(); FullStats stats = getCityStats();
if (cityBuildings.CurrentBuilding.equals(CityBuildings.Settler) && stats.Food > 0) { if (cityBuildings.CurrentBuilding.equals(CityBuildings.Settler) && stats.food > 0) {
stats.Production += stats.Food; stats.production += stats.food;
stats.Food = 0; stats.food = 0;
} }
if (cityPopulation.NextTurn(stats.Food)) autoAssignWorker(); if (cityPopulation.NextTurn(stats.food)) autoAssignWorker();
cityBuildings.NextTurn(stats.Production); cityBuildings.NextTurn(stats.production);
cultureStored+=stats.Culture; cultureStored+=stats.culture;
if(cultureStored>=getCultureToNextTile()){ if(cultureStored>=getCultureToNextTile()){
addNewTile(); addNewTile();
} }
@ -165,7 +165,7 @@ public class CityInfo {
if (tileInfo.workingCity !=null) continue; if (tileInfo.workingCity !=null) continue;
FullStats stats = tileInfo.getTileStats(); FullStats stats = tileInfo.getTileStats();
double value = stats.Food + stats.Production * 0.5; double value = stats.food + stats.production * 0.5;
if (value > maxValue) { if (value > maxValue) {
maxValue = value; maxValue = value;
toWork = tileInfo; toWork = tileInfo;
@ -177,12 +177,12 @@ public class CityInfo {
private double rankTile(TileInfo tile){ private double rankTile(TileInfo tile){
FullStats stats = tile.getTileStats(); FullStats stats = tile.getTileStats();
double rank=0; double rank=0;
if(stats.Food<2) rank+=stats.Food; if(stats.food <2) rank+=stats.food;
else rank += 2 + (stats.Food-2)/2; // 1 point for each food up to 2, from there on half a point else rank += 2 + (stats.food -2)/2; // 1 point for each food up to 2, from there on half a point
rank+=stats.Gold/2; rank+=stats.gold /2;
rank+=stats.Production; rank+=stats.production;
rank+=stats.Science; rank+=stats.science;
rank+=stats.Culture; rank+=stats.culture;
if(tile.improvement ==null) rank+=0.5; // improvement potential! if(tile.improvement ==null) rank+=0.5; // improvement potential!
return rank; return rank;
} }

View File

@ -34,8 +34,8 @@ public class CivilizationInfo {
public CityInfo getCurrentCity() { return cities.get(currentCity); } public CityInfo getCurrentCity() { return cities.get(currentCity); }
public int turnsToTech(String TechName) { public int turnsToTech(String TechName) {
return (int) Math.ceil((float)(GameBasics.Technologies.get(TechName).Cost - tech.ResearchOfTech(TechName)) return (int) Math.ceil((float)(GameBasics.Technologies.get(TechName).cost - tech.ResearchOfTech(TechName))
/ getStatsForNextTurn().Science); / getStatsForNextTurn().science);
} }
public void addCity(Vector2 location){ public void addCity(Vector2 location){
@ -47,7 +47,7 @@ public class CivilizationInfo {
{ {
CivStats nextTurnStats = getStatsForNextTurn(); CivStats nextTurnStats = getStatsForNextTurn();
civStats.add(nextTurnStats); civStats.add(nextTurnStats);
if(cities.size() > 0) tech.NextTurn(nextTurnStats.Science); if(cities.size() > 0) tech.NextTurn(nextTurnStats.science);
for (CityInfo city : cities) city.nextTurn(); for (CityInfo city : cities) city.nextTurn();
@ -58,14 +58,14 @@ public class CivilizationInfo {
public CivStats getStatsForNextTurn() { public CivStats getStatsForNextTurn() {
CivStats statsForTurn = new CivStats() {{ CivStats statsForTurn = new CivStats() {{
Happiness = baseHappiness; happiness = baseHappiness;
}}; }};
HashSet<String> LuxuryResources = new HashSet<String>(); HashSet<String> LuxuryResources = new HashSet<String>();
for (CityInfo city : cities) { for (CityInfo city : cities) {
statsForTurn.add(city.getCityStats()); statsForTurn.add(city.getCityStats());
LuxuryResources.addAll(city.getLuxuryResources()); LuxuryResources.addAll(city.getLuxuryResources());
} }
statsForTurn.Happiness += LuxuryResources.size() * 5; // 5 happiness for each unique luxury in civ statsForTurn.happiness += LuxuryResources.size() * 5; // 5 happiness for each unique luxury in civ
return statsForTurn; return statsForTurn;
} }

View File

@ -32,7 +32,7 @@ public class CivilizationTech{
} }
public boolean CanBeResearched(String TechName) { public boolean CanBeResearched(String TechName) {
for (String prerequisiteTech : GameBasics.Technologies.get(TechName).Prerequisites) for (String prerequisiteTech : GameBasics.Technologies.get(TechName).prerequisites)
if (!IsResearched(prerequisiteTech)) return false; if (!IsResearched(prerequisiteTech)) return false;
return true; return true;
} }
@ -44,7 +44,7 @@ public class CivilizationTech{
if (!TechsInProgress.containsKey(CurrentTechnology)) if (!TechsInProgress.containsKey(CurrentTechnology))
TechsInProgress.put(CurrentTechnology, 0); TechsInProgress.put(CurrentTechnology, 0);
TechsInProgress.put(CurrentTechnology, TechsInProgress.get(CurrentTechnology) + scienceForNewTurn); TechsInProgress.put(CurrentTechnology, TechsInProgress.get(CurrentTechnology) + scienceForNewTurn);
if (TechsInProgress.get(CurrentTechnology) >= GetCurrentTechnology().Cost) // We finished it! if (TechsInProgress.get(CurrentTechnology) >= GetCurrentTechnology().cost) // We finished it!
{ {
TechsInProgress.remove(CurrentTechnology); TechsInProgress.remove(CurrentTechnology);
TechsResearched.add(CurrentTechnology); TechsResearched.add(CurrentTechnology);

View File

@ -60,7 +60,7 @@ public class TileInfo
if(terrainFeature !=null){ if(terrainFeature !=null){
Terrain terrainFeature = getTerrainFeature(); Terrain terrainFeature = getTerrainFeature();
if(terrainFeature.OverrideStats) stats = new FullStats(terrainFeature); if(terrainFeature.overrideStats) stats = new FullStats(terrainFeature);
else stats.add(terrainFeature); else stats.add(terrainFeature);
} }
@ -70,43 +70,43 @@ public class TileInfo
if (hasViewableResource()) if (hasViewableResource())
{ {
stats.add(resource); stats.add(resource);
if(resource.Building!=null && City!=null && City.cityBuildings.IsBuilt(resource.Building)) if(resource.building !=null && City!=null && City.cityBuildings.IsBuilt(resource.building))
{ {
stats.add(resource.GetBuilding().ResourceBonusStats); stats.add(resource.GetBuilding().resourceBonusStats);
} }
} }
TileImprovement improvement = getTileImprovement(); TileImprovement improvement = getTileImprovement();
if (improvement != null) if (improvement != null)
{ {
if (resource != null && resource.Improvement.equals(improvement.Name)) if (resource != null && resource.improvement.equals(improvement.name))
stats.add(resource.ImprovementStats); stats.add(resource.improvementStats);
else stats.add(improvement); else stats.add(improvement);
if (isResearched(improvement.ImprovingTech)) stats.add(improvement.ImprovingTechStats); if (isResearched(improvement.improvingTech)) stats.add(improvement.improvingTechStats);
} }
if (City != null && City.cityLocation.equals(position)) { if (City != null && City.cityLocation.equals(position)) {
if (stats.Food < 2) stats.Food = 2; if (stats.food < 2) stats.food = 2;
if (stats.Production < 1) stats.Production = 1; if (stats.production < 1) stats.production = 1;
} }
if (stats.Production < 0) stats.Production = 0; if (stats.production < 0) stats.production = 0;
return stats; return stats;
} }
public boolean canBuildImprovement(TileImprovement improvement) public boolean canBuildImprovement(TileImprovement improvement)
{ {
Terrain topTerrain = terrainFeature ==null ? getBaseTerrain() : getTerrainFeature(); Terrain topTerrain = terrainFeature ==null ? getBaseTerrain() : getTerrainFeature();
if (improvement.TechRequired != null && !isResearched(improvement.TechRequired)) return false; if (improvement.techRequired != null && !isResearched(improvement.techRequired)) return false;
if (improvement.TerrainsCanBeBuiltOn.contains(topTerrain.Name)) return true; if (improvement.terrainsCanBeBuiltOn.contains(topTerrain.name)) return true;
if (topTerrain.Unbuildable) return false; if (topTerrain.unbuildable) return false;
return resource != null && getTileResource().Improvement.equals(improvement.Name); return resource != null && getTileResource().improvement.equals(improvement.name);
} }
public void startWorkingOnImprovement(TileImprovement improvement) public void startWorkingOnImprovement(TileImprovement improvement)
{ {
improvementInProgress = improvement.Name; improvementInProgress = improvement.name;
turnsToImprovement = improvement.TurnsToBuild; turnsToImprovement = improvement.turnsToBuild;
} }
public void stopWorkingOnImprovement() public void stopWorkingOnImprovement()
@ -142,7 +142,7 @@ public class TileInfo
} }
public boolean hasViewableResource() { public boolean hasViewableResource() {
return resource != null && (getTileResource().RevealedBy==null || isResearched(getTileResource().RevealedBy)); return resource != null && (getTileResource().revealedBy ==null || isResearched(getTileResource().revealedBy));
} }
} }

View File

@ -8,6 +8,7 @@ import com.unciv.models.LinqHashMap;
import com.unciv.models.gamebasics.GameBasics; import com.unciv.models.gamebasics.GameBasics;
import com.unciv.models.gamebasics.ResourceType; import com.unciv.models.gamebasics.ResourceType;
import com.unciv.models.gamebasics.Terrain; import com.unciv.models.gamebasics.Terrain;
import com.unciv.models.gamebasics.TerrainType;
import com.unciv.models.gamebasics.TileResource; import com.unciv.models.gamebasics.TileResource;
public class TileMap{ public class TileMap{
@ -29,30 +30,30 @@ public class TileMap{
final Terrain baseTerrain = Terrains.where(new Predicate<Terrain>() { final Terrain baseTerrain = Terrains.where(new Predicate<Terrain>() {
@Override @Override
public boolean evaluate(Terrain arg0) { public boolean evaluate(Terrain arg0) {
return arg0.Type.equals("baseTerrain") && !arg0.Name.equals("Lakes"); return arg0.type == TerrainType.BaseTerrain && !arg0.name.equals("Lakes");
} }
}).getRandom(); }).getRandom();
tileInfo.baseTerrain = baseTerrain.Name; tileInfo.baseTerrain = baseTerrain.name;
if (baseTerrain.CanHaveOverlay) { if (baseTerrain.canHaveOverlay) {
if (Math.random() > 0.7f) { if (Math.random() > 0.7f) {
Terrain SecondaryTerrain = Terrains.where(new Predicate<Terrain>() { Terrain SecondaryTerrain = Terrains.where(new Predicate<Terrain>() {
@Override @Override
public boolean evaluate(Terrain arg0) { public boolean evaluate(Terrain arg0) {
return arg0.Type.equals("terrainFeature") && arg0.OccursOn.contains(baseTerrain.Name); return arg0.type == TerrainType.TerrainFeature && arg0.occursOn.contains(baseTerrain.name);
} }
}).getRandom(); }).getRandom();
if (SecondaryTerrain != null) tileInfo.terrainFeature = SecondaryTerrain.Name; if (SecondaryTerrain != null) tileInfo.terrainFeature = SecondaryTerrain.name;
} }
} }
LinqCollection<TileResource> TileResources = GameBasics.TileResources.linqValues(); LinqCollection<TileResource> TileResources = GameBasics.TileResources.linqValues();
// Resources are placed according to terrainFeature, if exists, otherwise according to BaseLayer. // Resources are placed according to TerrainFeature, if exists, otherwise according to BaseLayer.
TileResources = TileResources.where(new Predicate<TileResource>() { TileResources = TileResources.where(new Predicate<TileResource>() {
@Override @Override
public boolean evaluate(TileResource arg0) { public boolean evaluate(TileResource arg0) {
return arg0.TerrainsCanBeFoundOn.contains(tileInfo.getLastTerrain().Name); return arg0.terrainsCanBeFoundOn.contains(tileInfo.getLastTerrain().name);
} }
}); });
@ -64,7 +65,7 @@ public class TileMap{
} else if (Math.random() < 1 / 10f) { } else if (Math.random() < 1 / 10f) {
resource = GetRandomResource(TileResources, ResourceType.Luxury); resource = GetRandomResource(TileResources, ResourceType.Luxury);
} }
if (resource != null) tileInfo.resource = resource.Name; if (resource != null) tileInfo.resource = resource.name;
tiles.put(position.toString(),tileInfo); tiles.put(position.toString(),tileInfo);
} }
@ -89,7 +90,7 @@ public class TileMap{
return resources.where(new Predicate<TileResource>() { return resources.where(new Predicate<TileResource>() {
@Override @Override
public boolean evaluate(TileResource arg0) { public boolean evaluate(TileResource arg0) {
return arg0.ResourceType.equals(resourceType); return arg0.resourceType.equals(resourceType);
} }
}).getRandom(); }).getRandom();
} }

View File

@ -198,11 +198,11 @@ public class CityScreen extends CameraStageBaseScreen {
CityStatsTable.row(); CityStatsTable.row();
HashMap<String,String> CityStatsValues = new LinkedHashMap<String, String>(); HashMap<String,String> CityStatsValues = new LinkedHashMap<String, String>();
CityStatsValues.put("Production",stats.Production+""); CityStatsValues.put("production",stats.production +"");
CityStatsValues.put("Food",stats.Food+" ("+cityInfo.cityPopulation.FoodStored+"/"+cityInfo.cityPopulation.FoodToNextPopulation()+")"); CityStatsValues.put("food",stats.food +" ("+cityInfo.cityPopulation.FoodStored+"/"+cityInfo.cityPopulation.FoodToNextPopulation()+")");
CityStatsValues.put("Gold",stats.Gold+""); CityStatsValues.put("gold",stats.gold +"");
CityStatsValues.put("Science",stats.Science+""); CityStatsValues.put("science",stats.science +"");
CityStatsValues.put("Culture",stats.Culture+" ("+cityInfo.cultureStored+"/"+cityInfo.getCultureToNextTile()+")"); CityStatsValues.put("culture",stats.culture +" ("+cityInfo.cultureStored+"/"+cityInfo.getCultureToNextTile()+")");
CityStatsValues.put("Population",cityInfo.getFreePopulation()+"/"+cityInfo.cityPopulation.Population); CityStatsValues.put("Population",cityInfo.getFreePopulation()+"/"+cityInfo.cityPopulation.Population);
for(String key : CityStatsValues.keySet()){ for(String key : CityStatsValues.keySet()){
@ -250,11 +250,11 @@ public class CityScreen extends CameraStageBaseScreen {
TileTable.row(); TileTable.row();
HashMap<String,String> TileStatsValues = new HashMap<String, String>(); HashMap<String,String> TileStatsValues = new HashMap<String, String>();
TileStatsValues.put("Production",stats.Production+""); TileStatsValues.put("production",stats.production +"");
TileStatsValues.put("Food",stats.Food+""); TileStatsValues.put("food",stats.food +"");
TileStatsValues.put("Gold",stats.Gold+""); TileStatsValues.put("gold",stats.gold +"");
TileStatsValues.put("Science",stats.Science+""); TileStatsValues.put("science",stats.science +"");
TileStatsValues.put("Culture",stats.Culture+""); TileStatsValues.put("culture",stats.culture +"");
for(String key : TileStatsValues.keySet()){ for(String key : TileStatsValues.keySet()){
if(TileStatsValues.get(key).equals("0")) continue; // this tile gives nothing of this stat, so why even display it? if(TileStatsValues.get(key).equals("0")) continue; // this tile gives nothing of this stat, so why even display it?

View File

@ -62,7 +62,7 @@ public class CivilopediaScreen extends CameraStageBaseScreen {
public void clicked(InputEvent event, float x, float y) { public void clicked(InputEvent event, float x, float y) {
ICivilopedia building = nameList.getSelected(); ICivilopedia building = nameList.getSelected();
if (building == null) return; if (building == null) return;
label.setText(building.GetDescription()); label.setText(building.getDescription());
super.clicked(event, x, y); super.clicked(event, x, y);
} }
}; };

View File

@ -21,7 +21,7 @@ public class TileGroup extends Group {
TileGroup(TileInfo tileInfo){ TileGroup(TileInfo tileInfo){
this.tileInfo = tileInfo; this.tileInfo = tileInfo;
String terrainFileName = "TerrainIcons/" + tileInfo.getLastTerrain().Name.replace(' ','_') + "_(Civ5).png"; String terrainFileName = "TerrainIcons/" + tileInfo.getLastTerrain().name.replace(' ','_') + "_(Civ5).png";
terrainImage = ImageGetter.getImageByFilename(terrainFileName); terrainImage = ImageGetter.getImageByFilename(terrainFileName);
terrainImage.setSize(50,50); terrainImage.setSize(50,50);
addActor(terrainImage); addActor(terrainImage);

View File

@ -73,16 +73,16 @@ public class UnCivGame extends Game {
TechColumn[] TechColumns = GetFromJson(TechColumn[].class, "Techs"); TechColumn[] TechColumns = GetFromJson(TechColumn[].class, "Techs");
GameBasics.Technologies = new LinqHashMap<String, Technology>(); GameBasics.Technologies = new LinqHashMap<String, Technology>();
for(TechColumn techColumn : TechColumns){ for(TechColumn techColumn : TechColumns){
for(com.unciv.models.gamebasics.Technology tech : techColumn.Techs){ for(com.unciv.models.gamebasics.Technology tech : techColumn.techs){
tech.Cost = techColumn.TechCost; tech.cost = techColumn.techCost;
tech.Column = techColumn; tech.column = techColumn;
GameBasics.Technologies.put(tech.Name,tech); GameBasics.Technologies.put(tech.name,tech);
} }
} }
for(com.unciv.models.gamebasics.Building building : GameBasics.Buildings.values()){ for(com.unciv.models.gamebasics.Building building : GameBasics.Buildings.values()){
if(building.RequiredTech == null) continue; if(building.requiredTech == null) continue;
TechColumn column = building.GetRequiredTech().Column; TechColumn column = building.GetRequiredTech().column;
building.Cost = building.IsWonder ? column.WonderCost : column.BuildingCost; building.cost = building.isWonder ? column.wonderCost : column.buildingCost;
} }
} }

View File

@ -162,11 +162,11 @@ public class WorldScreen extends CameraStageBaseScreen {
CivStats nextTurnStats = game.civInfo.getStatsForNextTurn(); CivStats nextTurnStats = game.civInfo.getStatsForNextTurn();
CivTable.add(new Label("Gold: " + currentStats.Gold + "(" +(nextTurnStats.Gold>0?"+":"") + nextTurnStats.Gold+")", skin)); CivTable.add(new Label("gold: " + currentStats.gold + "(" +(nextTurnStats.gold >0?"+":"") + nextTurnStats.gold +")", skin));
CivTable.add(new Label("Science: +" + nextTurnStats.Science, skin)); CivTable.add(new Label("science: +" + nextTurnStats.science, skin));
CivTable.add(new Label("Happiness: " + nextTurnStats.Happiness, skin)); CivTable.add(new Label("happiness: " + nextTurnStats.happiness, skin));
CivTable.add(new Label("Culture: " + currentStats.Culture + "(+" + nextTurnStats.Culture+")", skin)); CivTable.add(new Label("culture: " + currentStats.culture + "(+" + nextTurnStats.culture +")", skin));
CivTable.pack(); CivTable.pack();
@ -291,11 +291,11 @@ public class WorldScreen extends CameraStageBaseScreen {
TileTable.row(); TileTable.row();
HashMap<String,String> TileStatsValues = new HashMap<String, String>(); HashMap<String,String> TileStatsValues = new HashMap<String, String>();
TileStatsValues.put("Production",stats.Production+""); TileStatsValues.put("production",stats.production +"");
TileStatsValues.put("Food",stats.Food+""); TileStatsValues.put("food",stats.food +"");
TileStatsValues.put("Gold",stats.Gold+""); TileStatsValues.put("gold",stats.gold +"");
TileStatsValues.put("Science",stats.Science+""); TileStatsValues.put("science",stats.science +"");
TileStatsValues.put("Culture",stats.Culture+""); TileStatsValues.put("culture",stats.culture +"");
for(String key : TileStatsValues.keySet()){ for(String key : TileStatsValues.keySet()){
if(TileStatsValues.get(key).equals("0")) continue; // this tile gives nothing of this stat, so why even display it? if(TileStatsValues.get(key).equals("0")) continue; // this tile gives nothing of this stat, so why even display it?

View File

@ -30,7 +30,7 @@ public class BuildingPickerScreen extends PickerScreen {
rightSideButton.addListener(new ClickListener(){ rightSideButton.addListener(new ClickListener(){
@Override @Override
public void clicked(InputEvent event, float x, float y) { public void clicked(InputEvent event, float x, float y) {
game.civInfo.getCurrentCity().cityBuildings.CurrentBuilding = selectedBuilding.Name; game.civInfo.getCurrentCity().cityBuildings.CurrentBuilding = selectedBuilding.name;
game.setScreen(new CityScreen(game)); game.setScreen(new CityScreen(game));
dispose(); dispose();
} }
@ -41,15 +41,15 @@ public class BuildingPickerScreen extends PickerScreen {
CityBuildings cityBuildings = game.civInfo.getCurrentCity().cityBuildings; CityBuildings cityBuildings = game.civInfo.getCurrentCity().cityBuildings;
for(final Building building : GameBasics.Buildings.values()) { for(final Building building : GameBasics.Buildings.values()) {
if(!cityBuildings.CanBuild(building)) continue; if(!cityBuildings.CanBuild(building)) continue;
TextButton TB = new TextButton(building.Name+"\r\n"+cityBuildings.TurnsToBuilding(building.Name)+" turns", skin); TextButton TB = new TextButton(building.name +"\r\n"+cityBuildings.TurnsToBuilding(building.name)+" turns", skin);
TB.addListener(new ClickListener(){ TB.addListener(new ClickListener(){
@Override @Override
public void clicked(InputEvent event, float x, float y) { public void clicked(InputEvent event, float x, float y) {
selectedBuilding = building; selectedBuilding = building;
rightSideButton.setTouchable(Touchable.enabled); rightSideButton.setTouchable(Touchable.enabled);
rightSideButton.setText("Build "+building.Name); rightSideButton.setText("Build "+building.name);
rightSideButton.setColor(Color.WHITE); rightSideButton.setColor(Color.WHITE);
descriptionLabel.setText(building.GetDescription()); descriptionLabel.setText(building.getDescription());
} }
}); });
topTable.add(TB).pad(10); topTable.add(TB).pad(10);

View File

@ -1,7 +1,6 @@
package com.unciv.game.pickerscreens; package com.unciv.game.pickerscreens;
import com.badlogic.gdx.graphics.Color; import com.badlogic.gdx.graphics.Color;
import com.badlogic.gdx.scenes.scene2d.Actor;
import com.badlogic.gdx.scenes.scene2d.InputEvent; import com.badlogic.gdx.scenes.scene2d.InputEvent;
import com.badlogic.gdx.scenes.scene2d.Touchable; import com.badlogic.gdx.scenes.scene2d.Touchable;
import com.badlogic.gdx.scenes.scene2d.ui.TextButton; import com.badlogic.gdx.scenes.scene2d.ui.TextButton;
@ -34,16 +33,16 @@ public class ImprovementPickerScreen extends PickerScreen {
VerticalGroup regularImprovements = new VerticalGroup(); VerticalGroup regularImprovements = new VerticalGroup();
regularImprovements.space(10); regularImprovements.space(10);
for(final TileImprovement improvement : GameBasics.TileImprovements.values()) { for(final TileImprovement improvement : GameBasics.TileImprovements.values()) {
if(!tileInfo.canBuildImprovement(improvement) || improvement.Name.equals(tileInfo.improvement)) continue; if(!tileInfo.canBuildImprovement(improvement) || improvement.name.equals(tileInfo.improvement)) continue;
TextButton TB = new TextButton(improvement.Name+"\r\n"+improvement.TurnsToBuild+" turns", skin); TextButton TB = new TextButton(improvement.name +"\r\n"+improvement.turnsToBuild +" turns", skin);
TB.addListener(new ClickListener(){ TB.addListener(new ClickListener(){
@Override @Override
public void clicked(InputEvent event, float x, float y) { public void clicked(InputEvent event, float x, float y) {
SelectedImprovement = improvement; SelectedImprovement = improvement;
rightSideButton.setTouchable(Touchable.enabled); rightSideButton.setTouchable(Touchable.enabled);
rightSideButton.setText("Construct "+improvement.Name); rightSideButton.setText("Construct "+improvement.name);
rightSideButton.setColor(Color.WHITE); rightSideButton.setColor(Color.WHITE);
descriptionLabel.setText(improvement.GetDescription()); descriptionLabel.setText(improvement.getDescription());
} }
}); });
regularImprovements.addActor(TB); regularImprovements.addActor(TB);

View File

@ -36,13 +36,13 @@ public class TechPickerScreen extends PickerScreen {
if (SelectedTech != null) { if (SelectedTech != null) {
Technology thisTech = GameBasics.Technologies.get(techName); Technology thisTech = GameBasics.Technologies.get(techName);
if (techName.equals(SelectedTech.Name)) { if (techName.equals(SelectedTech.name)) {
TB.setChecked(true); TB.setChecked(true);
TB.setColor(TB.getColor().lerp(Color.LIGHT_GRAY, 0.5f)); TB.setColor(TB.getColor().lerp(Color.LIGHT_GRAY, 0.5f));
} }
if (thisTech.Prerequisites.contains(SelectedTech.Name)) TB.setText("*" + techName); if (thisTech.prerequisites.contains(SelectedTech.name)) TB.setText("*" + techName);
else if (SelectedTech.Prerequisites.contains(techName)) TB.setText(techName + "*"); else if (SelectedTech.prerequisites.contains(techName)) TB.setText(techName + "*");
} }
if (TechsToResearch.contains(techName)) { if (TechsToResearch.contains(techName)) {
TB.setText(TB.getText() + " (" + TechsToResearch.indexOf(techName) + ")"); TB.setText(TB.getText() + " (" + TechsToResearch.indexOf(techName) + ")");
@ -54,9 +54,9 @@ public class TechPickerScreen extends PickerScreen {
public void selectTechnology(Technology tech) { public void selectTechnology(Technology tech) {
SelectedTech = tech; SelectedTech = tech;
descriptionLabel.setText(tech.Description); descriptionLabel.setText(tech.description);
if (civTech.IsResearched(tech.Name)) { if (civTech.IsResearched(tech.name)) {
rightSideButton.setText("Research"); rightSideButton.setText("Research");
rightSideButton.setTouchable(Touchable.disabled); rightSideButton.setTouchable(Touchable.disabled);
rightSideButton.setColor(Color.GRAY); rightSideButton.setColor(Color.GRAY);
@ -67,19 +67,19 @@ public class TechPickerScreen extends PickerScreen {
rightSideButton.setTouchable(Touchable.enabled); rightSideButton.setTouchable(Touchable.enabled);
rightSideButton.setColor(Color.WHITE); rightSideButton.setColor(Color.WHITE);
if (civTech.CanBeResearched(tech.Name)) { if (civTech.CanBeResearched(tech.name)) {
TechsToResearch.clear(); TechsToResearch.clear();
TechsToResearch.add(tech.Name); TechsToResearch.add(tech.name);
} else { } else {
Stack<String> Prerequisites = new Stack<String>(); Stack<String> Prerequisites = new Stack<String>();
ArrayDeque<String> CheckPrerequisites = new ArrayDeque<String>(); ArrayDeque<String> CheckPrerequisites = new ArrayDeque<String>();
CheckPrerequisites.add(tech.Name); CheckPrerequisites.add(tech.name);
while (!CheckPrerequisites.isEmpty()) { while (!CheckPrerequisites.isEmpty()) {
String techNameToCheck = CheckPrerequisites.pop(); String techNameToCheck = CheckPrerequisites.pop();
if (civTech.IsResearched(techNameToCheck)) if (civTech.IsResearched(techNameToCheck))
continue; //no need to add or check prerequisites continue; //no need to add or check prerequisites
Technology techToCheck = GameBasics.Technologies.get(techNameToCheck); Technology techToCheck = GameBasics.Technologies.get(techNameToCheck);
for (String str : techToCheck.Prerequisites) for (String str : techToCheck.prerequisites)
if (!CheckPrerequisites.contains(str)) CheckPrerequisites.add(str); if (!CheckPrerequisites.contains(str)) CheckPrerequisites.add(str);
Prerequisites.add(techNameToCheck); Prerequisites.add(techNameToCheck);
} }
@ -100,7 +100,7 @@ public class TechPickerScreen extends PickerScreen {
} }
for (Technology technology : GameBasics.Technologies.linqValues()) { for (Technology technology : GameBasics.Technologies.linqValues()) {
techMatrix[technology.Column.ColumnNumber][technology.Row - 1] = technology; techMatrix[technology.column.columnNumber][technology.row - 1] = technology;
} }
// Table topTable = new Table(); // Table topTable = new Table();
@ -112,7 +112,7 @@ public class TechPickerScreen extends PickerScreen {
if (tech == null) topTable.add(); // empty cell if (tech == null) topTable.add(); // empty cell
else { else {
final TextButton TB = new TextButton("", skin); final TextButton TB = new TextButton("", skin);
techNameToButton.put(tech.Name, TB); techNameToButton.put(tech.name, TB);
TB.addListener(new ClickListener() { TB.addListener(new ClickListener() {
@Override @Override
public void clicked(InputEvent event, float x, float y) { public void clicked(InputEvent event, float x, float y) {

View File

@ -3,10 +3,10 @@ package com.unciv.models.gamebasics;
import com.unciv.models.stats.NamedStats; import com.unciv.models.stats.NamedStats;
public class BasicHelp extends NamedStats implements ICivilopedia { public class BasicHelp extends NamedStats implements ICivilopedia {
public String Description; public String description;
@Override @Override
public String GetDescription() { public String getDescription() {
return Description; return description;
} }
} }

View File

@ -1,37 +1,34 @@
package com.unciv.models.gamebasics; package com.unciv.models.gamebasics;
import com.unciv.models.LinqHashMap;
import com.unciv.models.stats.FullStats; import com.unciv.models.stats.FullStats;
import com.unciv.models.stats.NamedStats; import com.unciv.models.stats.NamedStats;
import java.util.Dictionary;
public class Building extends NamedStats implements ICivilopedia { public class Building extends NamedStats implements ICivilopedia {
public String Description; public String description;
public String RequiredTech; public String requiredTech;
public Technology GetRequiredTech(){return GameBasics.Technologies.get(RequiredTech);} public Technology GetRequiredTech(){return GameBasics.Technologies.get(requiredTech);}
public int Cost; public int cost;
public int Maintainance = 0; public int maintainance = 0;
public FullStats PercentStatBonus = new FullStats(); public FullStats percentStatBonus = new FullStats();
//public Func<CityInfo,FullStats> GetFlatBonusStats; //public Func<CityInfo,FullStats> GetFlatBonusStats;
public boolean IsWonder = false; public boolean isWonder = false;
public boolean ResourceRequired = false; public boolean resourceRequired = false;
public String RequiredBuilding; public String requiredBuilding;
public String RequiredBuildingInAllCities; public String requiredBuildingInAllCities;
// Uniques // Uniques
public String ProvidesFreeBuilding; public String providesFreeBuilding;
public int FreeTechs; public int freeTechs;
public int NewTileCostReduction; public int newTileCostReduction;
/** The bonus stats that a resource gets when this building is built */ /** The bonus stats that a resource gets when this building is built */
public FullStats ResourceBonusStats; public FullStats resourceBonusStats;
public String GetDescription() { public String getDescription() {
FullStats stats = new FullStats(this); FullStats stats = new FullStats(this);
StringBuilder stringBuilder = new StringBuilder(); StringBuilder stringBuilder = new StringBuilder();
if(IsWonder) stringBuilder.append("Wonder\r\n"); if(isWonder) stringBuilder.append("Wonder\r\n");
stringBuilder.append(Description + "\r\n" + stats); stringBuilder.append(description + "\r\n" + stats);
return stringBuilder.toString(); return stringBuilder.toString();
} }
} }

View File

@ -5,5 +5,5 @@ package com.unciv.models.gamebasics;
*/ */
public interface ICivilopedia { public interface ICivilopedia {
public String GetDescription(); public String getDescription();
} }

View File

@ -4,10 +4,10 @@ import java.util.ArrayList;
public class TechColumn public class TechColumn
{ {
public int ColumnNumber; public int columnNumber;
public GameBasics gameBasics; public GameBasics gameBasics;
public ArrayList<Technology> Techs = new ArrayList<Technology>(); public ArrayList<Technology> techs = new ArrayList<Technology>();
public int TechCost; public int techCost;
public int BuildingCost; public int buildingCost;
public int WonderCost; public int wonderCost;
} }

View File

@ -4,12 +4,12 @@ import java.util.ArrayList;
public class Technology public class Technology
{ {
public String Name; public String name;
public String Description; public String description;
public int Cost; public int cost;
public ArrayList<String> Prerequisites = new ArrayList<String>(); public ArrayList<String> prerequisites = new ArrayList<String>();
public TechColumn Column; // The column that this tech is in the tech tree public TechColumn column; // The column that this tech is in the tech tree
public int Row; public int row;
} }

View File

@ -6,47 +6,35 @@ import com.unciv.models.stats.NamedStats;
import java.util.Collection; import java.util.Collection;
public class Terrain extends NamedStats implements ICivilopedia { public class Terrain extends NamedStats implements ICivilopedia {
public String Type; // baseTerrain or terrainFeature public TerrainType type; // BaseTerrain or TerrainFeature
/// <summary> public boolean overrideStats = false;
/// For base terrain - comma-delimited 256 RGB values, e.g. "116,88,62"
/// </summary>
public String RGB;
//
//public Color Color
// {
// get
// {
// var rgbStringValues = RGB.Split(',');
// var rgbs = rgbStringValues.Select(x => int.Parse(x)).ToArray();
// return Extensions.ColorFrom256RGB(rgbs[0], rgbs[1], rgbs[2]);
// }
// }
public boolean OverrideStats = false; /***
* If true, other terrain layers can come over this one. For mountains, lakes etc. this is false
*/
/// <summary> public boolean canHaveOverlay = true;
/// If true, other terrain layers can come over this one. For mountains, lakes etc. this is false
/// </summary>
public boolean CanHaveOverlay = true;
/// <summary> /***
/// If true, nothing can be built here - not even resource improvements *If true, nothing can be built here - not even resource improvements
/// </summary> */
public boolean Unbuildable = false; public boolean unbuildable = false;
/// <summary> /***
/// For terrain features * For terrain features
/// </summary> */
public Collection<String> OccursOn; public Collection<String> occursOn;
/// <summary> /***
/// For terrain features - which technology alllows removal of this feature *For terrain features - which technology alllows removal of this feature
/// </summary> */
public String RemovalTech; public String removalTech;
public String rgb;
@Override @Override
public String GetDescription() { public String getDescription() {
return ""+new FullStats(this); return ""+new FullStats(this);
} }
} }

View File

@ -0,0 +1,6 @@
package com.unciv.models.gamebasics;
public enum TerrainType{
BaseTerrain,
TerrainFeature
}

View File

@ -8,33 +8,33 @@ import java.util.Collection;
import java.util.HashMap; import java.util.HashMap;
public class TileImprovement extends NamedStats implements ICivilopedia { public class TileImprovement extends NamedStats implements ICivilopedia {
public Collection<String> TerrainsCanBeBuiltOn = new ArrayList<String>(); public Collection<String> terrainsCanBeBuiltOn = new ArrayList<String>();
public String TechRequired; public String techRequired;
public String ImprovingTech; public String improvingTech;
public FullStats ImprovingTechStats; public FullStats improvingTechStats;
public int TurnsToBuild; public int turnsToBuild;
@Override @Override
public String GetDescription() { public String getDescription() {
StringBuilder stringBuilder = new StringBuilder(); StringBuilder stringBuilder = new StringBuilder();
if(!new FullStats(this).toString().isEmpty()) stringBuilder.append(new FullStats(this)+"\r\n"); if(!new FullStats(this).toString().isEmpty()) stringBuilder.append(new FullStats(this)+"\r\n");
if(!TerrainsCanBeBuiltOn.isEmpty()) stringBuilder.append("Can be built on " + StringUtils.join(", ", TerrainsCanBeBuiltOn)); if(!terrainsCanBeBuiltOn.isEmpty()) stringBuilder.append("Can be built on " + StringUtils.join(", ", terrainsCanBeBuiltOn));
HashMap<String,ArrayList<String>> statsToResourceNames = new HashMap<String, ArrayList<String>>(); HashMap<String,ArrayList<String>> statsToResourceNames = new HashMap<String, ArrayList<String>>();
for(TileResource tr : GameBasics.TileResources.values()){ for(TileResource tr : GameBasics.TileResources.values()){
if(!tr.Improvement.equals(Name)) continue; if(!tr.improvement.equals(name)) continue;
String statsString = tr.ImprovementStats.toString(); String statsString = tr.improvementStats.toString();
if(!statsToResourceNames.containsKey(statsString)) if(!statsToResourceNames.containsKey(statsString))
statsToResourceNames.put(statsString,new ArrayList<String>()); statsToResourceNames.put(statsString,new ArrayList<String>());
statsToResourceNames.get(statsString).add(tr.Name); statsToResourceNames.get(statsString).add(tr.name);
} }
for(String statsString : statsToResourceNames.keySet()){ for(String statsString : statsToResourceNames.keySet()){
stringBuilder.append("\r\n"+statsString+" for "+ StringUtils.join(", ",statsToResourceNames.get(statsString))); stringBuilder.append("\r\n"+statsString+" for "+ StringUtils.join(", ",statsToResourceNames.get(statsString)));
} }
if(TechRequired!=null) stringBuilder.append("\r\ntech required: "+TechRequired); if(techRequired !=null) stringBuilder.append("\r\ntech required: "+ techRequired);
return stringBuilder.toString(); return stringBuilder.toString();
} }

View File

@ -6,26 +6,26 @@ import com.unciv.models.stats.FullStats;
import java.util.Collection; import java.util.Collection;
public class TileResource extends NamedStats implements ICivilopedia { public class TileResource extends NamedStats implements ICivilopedia {
public ResourceType ResourceType; public ResourceType resourceType;
public Collection<String> TerrainsCanBeFoundOn; public Collection<String> terrainsCanBeFoundOn;
public String Improvement; public String improvement;
public FullStats ImprovementStats; public FullStats improvementStats;
/// <summary> /// <summary>
/// The building that improves this resource, if any. E.G.: Granary for wheat, Stable for cattle. /// The building that improves this resource, if any. E.G.: Granary for wheat, Stable for cattle.
/// </summary> /// </summary>
public String Building; public String building;
public com.unciv.models.gamebasics.Building GetBuilding(){return Building==null ? null : GameBasics.Buildings.get(Building);} public Building GetBuilding(){return building ==null ? null : GameBasics.Buildings.get(building);}
public String RevealedBy; public String revealedBy;
@Override @Override
public String GetDescription() { public String getDescription() {
StringBuilder stringBuilder = new StringBuilder(); StringBuilder stringBuilder = new StringBuilder();
stringBuilder.append(new FullStats(this)+"\r\n"); stringBuilder.append(new FullStats(this)+"\r\n");
stringBuilder.append("Can be found on " + com.unciv.models.gamebasics.StringUtils.join(", ",TerrainsCanBeFoundOn)); stringBuilder.append("Can be found on " + com.unciv.models.gamebasics.StringUtils.join(", ", terrainsCanBeFoundOn));
stringBuilder.append("\r\n\r\nImproved by "+Improvement+"\r\n"); stringBuilder.append("\r\n\r\nImproved by "+ improvement +"\r\n");
stringBuilder.append("\r\nBonus stats for improvement: "+ImprovementStats+"\r\n"); stringBuilder.append("\r\nBonus stats for improvement: "+ improvementStats +"\r\n");
return stringBuilder.toString(); return stringBuilder.toString();
} }
} }

View File

@ -1,15 +1,15 @@
package com.unciv.models.stats; package com.unciv.models.stats;
public class CivStats { public class CivStats {
public int Gold = 0; public int gold = 0;
public int Science = 0; public int science = 0;
public int Culture = 0; public int culture = 0;
public int Happiness = 0; public int happiness = 0;
public void add(CivStats other) { public void add(CivStats other) {
Gold += other.Gold; gold += other.gold;
Science += other.Science; science += other.science;
Happiness += other.Happiness; happiness += other.happiness;
Culture += other.Culture; culture += other.culture;
} }
} }

View File

@ -2,8 +2,8 @@ package com.unciv.models.stats;
public class FullStats extends CivStats // also used for hex stats, since it's basically the same public class FullStats extends CivStats // also used for hex stats, since it's basically the same
{ {
public int Production = 0; public int production = 0;
public int Food = 0; public int food = 0;
public FullStats() { public FullStats() {
} }
@ -13,12 +13,12 @@ public class FullStats extends CivStats // also used for hex stats, since it's b
} }
public void add(FullStats other){ public void add(FullStats other){
Gold+=other.Gold; gold +=other.gold;
Science+=other.Science; science +=other.science;
Happiness+=other.Happiness; happiness +=other.happiness;
Culture+=other.Culture; culture +=other.culture;
Food+=other.Food; food +=other.food;
Production+=other.Production; production +=other.production;
} }
public String display(int value, String name){ public String display(int value, String name){
@ -27,12 +27,12 @@ public class FullStats extends CivStats // also used for hex stats, since it's b
public String toString() { public String toString() {
StringBuilder valuableParts = new StringBuilder(); StringBuilder valuableParts = new StringBuilder();
if (Production != 0) valuableParts.append(display(Production,"Production")); if (production != 0) valuableParts.append(display(production,"production"));
if (Food != 0) valuableParts.append(display(Food,"Food")); if (food != 0) valuableParts.append(display(food,"food"));
if (Gold != 0) valuableParts.append(display(Gold,"Gold")); if (gold != 0) valuableParts.append(display(gold,"gold"));
if (Science != 0) valuableParts.append(display(Science,"Science")); if (science != 0) valuableParts.append(display(science,"science"));
if (Happiness != 0) valuableParts.append(display(Happiness,"Happpiness")); if (happiness != 0) valuableParts.append(display(happiness,"Happpiness"));
if (Culture != 0) valuableParts.append(display(Culture,"Culture")); if (culture != 0) valuableParts.append(display(culture,"culture"));
if (valuableParts.length() == 0) return ""; if (valuableParts.length() == 0) return "";
valuableParts.delete(0,1); valuableParts.delete(0,1);
return valuableParts.toString(); return valuableParts.toString();

View File

@ -1,13 +1,13 @@
package com.unciv.models.stats; package com.unciv.models.stats;
public class NamedStats extends FullStats { public class NamedStats extends FullStats {
public String Name; public String name;
public String GetName() { public String GetName() {
return Name; return name;
} }
public String toString() { public String toString() {
return Name; return name;
} }
} }