diff --git a/include/core/elements/Contact.h b/include/core/elements/Contact.h new file mode 100644 index 0000000..52dc4b4 --- /dev/null +++ b/include/core/elements/Contact.h @@ -0,0 +1,23 @@ +#pragma once + +#include "core/VirtualElement.h" +#include "core/engine/MemoryMap.h" + +#include + +enum class ContactType : int +{ + NO, + NC +}; + +class Contact : public VirtualElement +{ +public: + explicit Contact(std::string address, ContactType type); // jawny konstruktor przyjmujący typ styku - deklarować np. "Contact styk(NO);" + bool evaluate(bool powerFlow, MemoryMap& memory) override; + +private: + std::string address; // zmienna oznaczajaca adres styku + ContactType type; // zmienna oznaczajaca typ styku (NO lub NC) +}; \ No newline at end of file diff --git a/src/core/elements/Contact.cpp b/src/core/elements/Contact.cpp new file mode 100644 index 0000000..765209a --- /dev/null +++ b/src/core/elements/Contact.cpp @@ -0,0 +1,11 @@ +#include "core/elements/Contact.h" + +Contact::Contact(std::string a, ContactType t) + : address(std::move(a)), type(t) +{ +} + +bool Contact::evaluate(bool powerFlow, MemoryMap& memory) +{ + return powerFlow && (type == ContactType::NO ? memory.getBool(address) : !memory.getBool(address)); // zwraca true jeśli przepływ jest możliwy i styk jest zgodny z jego typem (NO - musi być true, NC - musi być false) +}