#pragma once
#include "SparObject.h"

class CurrentWorld;

/**
 * @brief Base class for technologies, which are either upgrades, researches, units or buildings.
 */
class TechObject : public SparObject
{
public:
  TechObject(const std::string& name, planning::PrimitiveType* type);
  bool isAcquired() const
  {
    return m_isAcquired;
  }
protected:
  friend class CurrentWorld;
  virtual void initialize();
  virtual void releaseMembers();
  void setTechAcquired();
  bool m_isAcquired;
};
