#pragma once #include #include #include namespace Warfactory { namespace Event { class GameEvent; class BreakthroughSystem; class EventQueue; /** * Autonomous Event Engine * Handles breakthrough system and global events */ class EventEngine { public: EventEngine(); ~EventEngine(); bool initialize(); void run(); void shutdown(); // Event management void scheduleEvent(std::unique_ptr event, double delaySeconds); void triggerImmediateEvent(std::unique_ptr event); // Breakthrough system (event-driven with scrap analysis) void analyzeScrapForBreakthrough(const std::string& scrapData); void triggerBreakthrough(const std::string& technologyDomain); // Global events (geopolitical, natural disasters, etc.) void generateRandomEvent(); void processScheduledEvents(); private: void engineLoop(); void updateEventQueue(); void dispatchEvents(); std::unique_ptr eventQueue_; std::unique_ptr breakthroughSystem_; std::thread engineThread_; bool running_; void sendEvents(); void receiveEventTriggers(); }; } // namespace Event } // namespace Warfactory