#pragma once #include #include #include #include namespace Warfactory { namespace Logistic { class Convoy; class Route; class SupplyChain; /** * Autonomous Logistic Engine * Handles transport and supply chains */ class LogisticEngine { public: LogisticEngine(); ~LogisticEngine(); bool initialize(); void run(); void shutdown(); // Supply chain management void createSupplyChain(const std::string& chainId, const std::vector& sites); void updateRoute(const std::string& routeId, const std::vector>& waypoints); // Convoy management void dispatchConvoy(const std::string& convoyId, const std::string& routeId); void trackConvoyProgress(const std::string& convoyId); // Infrastructure (routes visible on map, attackable) void markInfrastructureVulnerable(const std::string& routeId, bool vulnerable); bool isRouteSecure(const std::string& routeId) const; private: void engineLoop(); void updateConvoys(); void optimizeRoutes(); std::unordered_map> supplyChains_; std::unordered_map> routes_; std::unordered_map> convoys_; std::thread engineThread_; bool running_; void sendLogisticData(); void receiveTransportRequests(); }; } // namespace Logistic } // namespace Warfactory