#pragma once #include "Snapshot.h" #include #include struct SnapshotDelta { template struct Diff { Item oldItem, newItem; }; template struct Hunk { int offset; std::vector> diffs; }; template struct SingleDiff { bool valid = false; Diff diff; }; template struct HalfHunk { int offset; std::vector items; }; template using HunkVector = std::vector>; template struct HalfHunkVectorPair { std::vector> oldHunks, newHunks; }; HunkVector AirPressure; HunkVector AirVelocityX; HunkVector AirVelocityY; HunkVector AmbientHeat; HunkVector commonParticles; std::vector extraPartsOld, extraPartsNew; HunkVector GravVelocityX; HunkVector GravVelocityY; HunkVector GravValue; HunkVector GravMap; HunkVector BlockMap; HunkVector ElecMap; HunkVector FanVelocityX; HunkVector FanVelocityY; HunkVector PortalParticles; HunkVector WirelessData; HunkVector stickmen; SingleDiff> signs; SingleDiff Authors; static std::unique_ptr FromSnapshots(const Snapshot &oldSnap, const Snapshot &newSnap); std::unique_ptr Forward(const Snapshot &oldSnap); std::unique_ptr Restore(const Snapshot &newSnap); };