Summary Files Commits Branches @commit @diff @stats
path: root / Year 1 / Object-oriented Programming / Exam 2 / ex2 / EventManager.cpp
diff options
context:
space:
mode:
Commita82a54f081ce561e6bc6e9f82869f8b40a47e660 (patch)
Author
 Syndamia <kamen.d.mladenov@protonmail.com>
2022-05-25 19:59:16 +0300
Committer
 Syndamia <kamen.d.mladenov@protonmail.com>
2022-05-25 19:59:16 +0300
Filesa0cf9fc2e5f954456bdec52db780e1778c9808e6 /Year 1/Object-oriented Programming/Exam 2/ex2/EventManager.cpp
uni-projects-a82a54f081ce561e6bc6e9f82869f8b40a47e660.tar
uni-projects-a82a54f081ce561e6bc6e9f82869f8b40a47e660.tar.gz
uni-projects-a82a54f081ce561e6bc6e9f82869f8b40a47e660.zip
Parent71c57cde42e99301aeb079be4ef368ff155f99c5 (diff)
Added my work from today's exam
1 files changed, 54 insertions, 0 deletions
-rw-r--r--Year 1/Object-oriented Programming/Exam 2/ex2/EventManager.cpp54
diff --git a/Year 1/Object-oriented Programming/Exam 2/ex2/EventManager.cpp b/Year 1/Object-oriented Programming/Exam 2/ex2/EventManager.cpp
new file mode 100644
index 0000000..cf96756
--- /dev/null
+++ b/Year 1/Object-oriented Programming/Exam 2/ex2/EventManager.cpp
@@ -0,0 +1,54 @@
+#include "EventManager.h"
+
+void EventManager::copyFrom(const EventManager& other) {
+ events = new Event*[other.maxCount];
+ for (unsigned i = 0; i < other.count; i++)
+ events[i] = other.events[i]->clone();
+ count = other.count;
+ maxCount = other.maxCount;
+}
+
+void EventManager::free() {
+ for (unsigned i = 0; i < count; i++)
+ delete events[i];
+ delete[] events;
+}
+
+EventManager::EventManager(unsigned maxCount) {
+ events = new Event*[maxCount];
+ this->maxCount = maxCount;
+ count = 0;
+}
+
+bool EventManager::addEvent(const Event* event) {
+ if (maxCount == count)
+ return false;
+
+ events[count++] = event->clone();
+ return true;
+}
+
+unsigned EventManager::ongoingEvents(unsigned time) {
+ unsigned ongoing = 0;
+ for (unsigned i = 0; i < count; i++)
+ ongoing += events[i]->isHappeningAt(time);
+ return ongoing;
+}
+
+EventManager::EventManager() : EventManager(1) {}
+
+EventManager::EventManager(const EventManager& other) {
+ copyFrom(other);
+}
+
+EventManager& EventManager::operator=(const EventManager& other) {
+ if (this != &other) {
+ free();
+ copyFrom(other);
+ }
+ return *this;
+}
+
+EventManager::~EventManager() {
+ free();
+}