#ifndef TECHCONFIG_H #define TECHCONFIG_H #include #include #include #include struct TechConfig { QString id; QString name; int scienceCost; QStringList prerequisites; int column; int row; QString iconPath; QString description; TechConfig() : id(""), name(""), scienceCost(1000), column(0), row(0), iconPath("images/resources/kennis.png"), description("") {} }; class TechTreeManager { public: TechTreeManager(); bool loadConfigFile(const QString &filePath); const TechConfig* getTech(const QString &id) const; const QMap& getAllTechs() const { return m_techs; } const std::vector& getOrderedTechIds() const { return m_orderedTechIds; } int getMaxColumn() const { return m_maxColumn; } int getMaxRow() const { return m_maxRow; } private: int computeTechDepth(const QString &techId, QMap &visited) const; QMap m_techs; std::vector m_orderedTechIds; int m_maxColumn; int m_maxRow; }; #endif // TECHCONFIG_H