#pragma once #include namespace warfactory { /** * @brief Interface for geological regions during world generation * * Represents discrete regions with specific properties like resource deposits, * volcanic activity, or tectonic formations. */ class IRegion { public: virtual ~IRegion() = default; // ======================================== // IDENTIFICATION // ======================================== virtual int getId() const = 0; virtual const std::string& getType() const = 0; // ======================================== // POSITION & SIZE // ======================================== virtual float getX() const = 0; virtual float getY() const = 0; virtual float getRadius() const = 0; virtual float getMass() const = 0; // ======================================== // LIFECYCLE // ======================================== virtual void update(float delta_time) = 0; virtual bool isActive() const = 0; // ======================================== // PROPERTIES // ======================================== virtual float getIntensity() const = 0; virtual void setIntensity(float intensity) = 0; virtual bool canFuseWith(const IRegion* other) const = 0; }; } // namespace warfactory