Files
Ascent-of-Man/terrainyieldmanager.h
T
2026-11-08 16:15:49 +01:00

58 lines
1.5 KiB
C++

#ifndef TERRAINYIELDMANAGER_H
#define TERRAINYIELDMANAGER_H
#include <QString>
#include <QMap>
#include <vector>
#include "terrain.h"
#include "matrix2d.h"
struct TerrainYieldConfig {
QString id;
QString name;
bool workable;
int defaultSlots;
QString primaryResource;
QMap<QString, int> yields; // "voedsel", "arbeid", "kennis", "cultuur", "geloof", "goud"
TerrainYieldConfig()
: id(""), name(""), workable(true), defaultSlots(1), primaryResource("voedsel") {}
int getYield(const QString &res) const {
return yields.value(res, 0);
}
};
struct CityConfig {
int initialInhabitants;
int inhabitantsPerPop;
int initialBorderRadius;
int maxWorkableRadius;
int defaultTileSlots;
CityConfig()
: initialInhabitants(1000), inhabitantsPerPop(100000),
initialBorderRadius(1), maxWorkableRadius(3), defaultTileSlots(1) {}
};
class TerrainYieldManager {
public:
static TerrainYieldManager& instance();
bool loadConfigs(const QString &baseDir);
QString getTerrainType(int tx, int ty, Matrix2D<TerrainPoint> *mapPoints, int numPoints05) const;
const TerrainYieldConfig* getYieldConfig(const QString &terrainType) const;
const CityConfig& getCityConfig() const { return m_cityConfig; }
private:
TerrainYieldManager();
~TerrainYieldManager() = default;
QMap<QString, TerrainYieldConfig> m_yieldConfigs;
CityConfig m_cityConfig;
bool m_loaded;
};
#endif // TERRAINYIELDMANAGER_H