TimelineValidator.h header
#include <ew/app/TimelineValidator.h>
Namespace ew::app
TimelineConflict struct
struct ew::app::TimelineConflict
A continuity problem found in the timeline: a human-readable description and the events it involves, so a conflict panel can list it and jump the user to the offending events.
Members
QString ew::app::TimelineConflict::description
A human-readable explanation of the conflict.
std::vector<ew::core::ContentId> ew::app::TimelineConflict::eventIds
The events involved (one for a dangling reference, two for a clash), for jump-to-fix.
Functions
std::vector< TimelineConflict > ew::app::validateTimeline(const ew::core::Project &project)
Validates the project's timeline events for continuity, returning every conflict found:
- an entity that takes part in two time-overlapping events at different locations (it cannot be in two places at once);
- an entity in an event before its birth or after its death (per its lifespan);
- an entity whose consecutive events at different locations are closer together than the shortest map route between those locations allows at the map's travel speed (it could not travel between them in time); pairs with no known route are not flagged;
- an event whose participant or location references an object no longer in the project;
- a broken relative constraint (TL-12): an event that must be After / Before / During another but is not ("B must follow A", "C happens during the siege").
std::vector< TimelineConflict > ew::app::validateTimeline(const ew::core::Project &project, const MountedLibraries &libraries)
Like validateTimeline(), but resolves each event's participants and locations across project and every library mounted into it via libraries. A shared-library entity is therefore validated like a local one – its real name is shown, its lifespan is honored, and it is not misreported as a dangling reference merely because it lives in a mounted library rather than the project. Routes on library maps also contribute to the travel-time check.