#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(); }