Refactor farm building speed to builder unit action_speeds and enable infinite charges

This commit is contained in:
bart
2026-11-08 17:01:26 +01:00
parent 55e4276025
commit 17901ce25c
10 changed files with 847 additions and 121 deletions
+47 -1
View File
@@ -29,10 +29,52 @@ struct CityConfig {
int initialBorderRadius;
int maxWorkableRadius;
int defaultTileSlots;
float cityViewZoom;
int baseResourceYieldPerTick;
int tileCultureCost;
float foodToInhabitantsRatio;
QMap<QString, int> baseYields;
QMap<QString, int> initialNationalResources;
CityConfig()
: initialInhabitants(1000), inhabitantsPerPop(100000),
initialBorderRadius(1), maxWorkableRadius(3), defaultTileSlots(1) {}
initialBorderRadius(1), maxWorkableRadius(3), defaultTileSlots(1),
cityViewZoom(4.8f),
baseResourceYieldPerTick(500), tileCultureCost(10000),
foodToInhabitantsRatio(1.0f)
{
baseYields["voedsel"] = 500;
baseYields["arbeid"] = 500;
baseYields["kennis"] = 500;
baseYields["cultuur"] = 500;
baseYields["geloof"] = 500;
baseYields["goud"] = 500;
initialNationalResources["cultuur"] = 10000;
initialNationalResources["kennis"] = 0;
initialNationalResources["geloof"] = 0;
initialNationalResources["goud"] = 0;
}
int getBaseYield(const QString &res) const {
return baseYields.value(res, baseResourceYieldPerTick);
}
};
struct ImprovementConfig {
QString id;
QString name;
QString action;
QString texturePath;
float textureScale;
QString textureMapping; // "world" or "hex"
QStringList validTerrains;
QMap<QString, int> yieldBonus; // e.g. "voedsel": 1000
ImprovementConfig()
: id(""), name(""), action(""), texturePath("images/farm.jpeg"), textureScale(0.6f), textureMapping("world") {}
};
class TerrainYieldManager {
@@ -45,11 +87,15 @@ public:
const TerrainYieldConfig* getYieldConfig(const QString &terrainType) const;
const CityConfig& getCityConfig() const { return m_cityConfig; }
const ImprovementConfig* getImprovementConfig(const QString &id) const;
const QMap<QString, ImprovementConfig>& getAllImprovementConfigs() const { return m_improvementConfigs; }
private:
TerrainYieldManager();
~TerrainYieldManager() = default;
QMap<QString, TerrainYieldConfig> m_yieldConfigs;
QMap<QString, ImprovementConfig> m_improvementConfigs;
CityConfig m_cityConfig;
bool m_loaded;
};