public static void UpdateForward(GameTime gameTime) { float seconds = gameTime.getSeconds(); secsSinceLastRetroPort += seconds; History history = new History(); foreach (IReversible reversible in registeredReversibles) { history.mementos[reversible] = reversible.GenerateMementoFromCurrentFrame(); } history.retroGameMemento = RetroGame.GenerateMementoFromCurrentFrame(); history.riotGuardWallMemento = RiotGuardWall.GenerateMementoFromCurrentFrame(); history.soundManagerMemento = SoundManager.GenerateMementoFromCurrentFrame(); histories.Enqueue(history); if (secsSinceLastRetroPort >= RETROPORT_BASE_SECS) { LastHistory = histories.Dequeue(); } else { LastHistory = null; } }