#ifndef ICOSTCOMPONENT_H #define ICOSTCOMPONENT_H #include #include "../model/Community.h" #include "../Config.h" class ICostComponent { protected: enum NET_LEVEL { NetLevel1, NetLevel2, NetLevel3, NetLevel4, NetLevel5, NetLevel6, NetLevel7mp, NetLevel7op, NetLevel7unt }; enum MEASUREMENT_TYPE { NIEDER_WANDLERZAEHLER, MITTLE_WANDLERZAEHLER, DREHSTROM_ZEAHLUNG }; public: std::bitset applicableConditions; template explicit ICostComponent(Conditions... conditions) { } virtual ~ICostComponent() = default; virtual void apply(std::unique_ptr &building, std::unique_ptr &community) = 0; }; #endif //ICOSTCOMPONENT_H