58 lines
1.5 KiB
C++
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
|