Implement technology tree, research queue by least remaining work, and unit/building tech availability & obsolescence
This commit is contained in:
@@ -14,6 +14,7 @@
|
||||
#include "terrain.h"
|
||||
#include "terrainyieldmanager.h"
|
||||
#include "actionneededmanager.h"
|
||||
#include "techconfig.h"
|
||||
|
||||
enum class ActionMode {
|
||||
None,
|
||||
@@ -48,13 +49,32 @@ public:
|
||||
void update(float deltaTime, Matrix2D<TerrainPoint> *mapPoints, int numPoints05);
|
||||
|
||||
PlayerManager& players() { return m_playerManager; }
|
||||
const PlayerManager& players() const { return m_playerManager; }
|
||||
UnitConfigManager& unitConfigs() { return m_unitConfigManager; }
|
||||
const UnitConfigManager& unitConfigs() const { return m_unitConfigManager; }
|
||||
BuildingConfigManager& buildingConfigs() { return m_buildingConfigManager; }
|
||||
const BuildingConfigManager& buildingConfigs() const { return m_buildingConfigManager; }
|
||||
RoadConfigManager& roadConfigs() { return m_roadConfigManager; }
|
||||
const RoadConfigManager& roadConfigs() const { return m_roadConfigManager; }
|
||||
ActionNeededManager& actionNeededManager() { return m_actionNeededManager; }
|
||||
const ActionNeededManager& actionNeededManager() const { return m_actionNeededManager; }
|
||||
TechTreeManager& techTree() { return m_techTreeManager; }
|
||||
const TechTreeManager& techTree() const { return m_techTreeManager; }
|
||||
|
||||
// Tech Tree View & Research System
|
||||
bool isTechTreeOpen() const { return m_isTechTreeOpen; }
|
||||
void openTechTree();
|
||||
void closeTechTree();
|
||||
void toggleTechTree();
|
||||
|
||||
int calculatePlayerSciencePerTick(int playerId, Matrix2D<TerrainPoint> *mapPoints, int numPoints05) const;
|
||||
int getTechRemainingScience(const Player &player, const QString &techId) const;
|
||||
bool selectTechForPlayer(int playerId, const QString &targetTechId, bool appendToQueue = false);
|
||||
void removeTechFromPlayerQueue(int playerId, const QString &techId);
|
||||
void clearPlayerResearchQueue(int playerId);
|
||||
void advancePlayerResearch(Player &player, int scienceGenerated);
|
||||
QStringList getTechUnlocks(const QString &techId) const;
|
||||
QStringList getTechObsoletes(const QString &techId) const;
|
||||
|
||||
const std::vector<std::shared_ptr<Unit>>& getUnits() const { return m_units; }
|
||||
const std::vector<City>& getCities() const { return m_cities; }
|
||||
@@ -149,6 +169,7 @@ private:
|
||||
BuildingConfigManager m_buildingConfigManager;
|
||||
RoadConfigManager m_roadConfigManager;
|
||||
ActionNeededManager m_actionNeededManager;
|
||||
TechTreeManager m_techTreeManager;
|
||||
std::vector<std::shared_ptr<Unit>> m_units;
|
||||
std::vector<City> m_cities;
|
||||
std::vector<FloatingText> m_floatingTexts;
|
||||
@@ -157,6 +178,7 @@ private:
|
||||
|
||||
int m_selectedUnitId;
|
||||
int m_activeCityViewId;
|
||||
bool m_isTechTreeOpen;
|
||||
ActionMode m_actionMode;
|
||||
|
||||
float m_movementTickDuration; // Default 30.0s
|
||||
|
||||
Reference in New Issue
Block a user