stad
This commit is contained in:
@@ -0,0 +1,57 @@
|
||||
#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
|
||||
Reference in New Issue
Block a user