56 lines
1.5 KiB
C++
56 lines
1.5 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 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),
|
|
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
|