Files
Ascent-of-Man/buildingconfig.h
T

59 lines
1.6 KiB
C++

#ifndef BUILDINGCONFIG_H
#define BUILDINGCONFIG_H
#include <QString>
#include <QMap>
#include <vector>
struct BuildingConfig {
QString id;
QString name;
QString district; // e.g. "center"
int laborCost;
float foodModifier; // e.g. 0.50f for +50% food production
int foodBonus;
int laborBonus;
int cultureBonus;
int scienceBonus;
int faithBonus;
int goldBonus;
QString requiredTech;
QString obsoleteTech;
QString iconPath;
QString description;
BuildingConfig()
: id(""), name(""), district("center"), laborCost(1000),
foodModifier(0.0f), foodBonus(0), laborBonus(0), cultureBonus(0),
scienceBonus(0), faithBonus(0), goldBonus(0),
requiredTech(""), obsoleteTech(""),
iconPath(""), description("") {}
};
struct DistrictConfig {
QString id;
QString name;
int maxBuildings;
QString description;
DistrictConfig()
: id("center"), name("City Center"), maxBuildings(10), description("") {}
};
class BuildingConfigManager {
public:
BuildingConfigManager();
bool loadConfigFile(const QString &filePath);
const BuildingConfig* getBuilding(const QString &id) const;
const DistrictConfig* getDistrict(const QString &id) const;
const QMap<QString, BuildingConfig>& getAllBuildings() const { return m_buildings; }
const QMap<QString, DistrictConfig>& getAllDistricts() const { return m_districts; }
private:
QMap<QString, BuildingConfig> m_buildings;
QMap<QString, DistrictConfig> m_districts;
};
#endif // BUILDINGCONFIG_H