Display time as 'ahead' when rewind state frame is ahead of current state

pull/3590/head
mariobob 1 week ago
parent 6a8251d62a
commit 8574e24e22

@ -1645,15 +1645,28 @@ void ImGuiManager::RenderRewindSelector()
// Display state info for current selection
const auto& current_state = states[current_index];
const u32 current_frame = System::Internal::GetRewindSelectorCurrentFrame();
const u32 frame_diff = (states.empty() || current_state.frame_number >= current_frame) ?
0 : (current_frame - current_state.frame_number);
const float seconds_ago = frame_diff / System::GetVideoFrameRate();
ImGui::Text("Frame: %u", current_state.frame_number);
if (frame_diff > 0)
ImGui::Text("Time: %.2f seconds ago (%.0f frames)", seconds_ago, static_cast<float>(frame_diff));
if (current_state.frame_number < current_frame)
{
// State is in the past
const u32 frame_diff = current_frame - current_state.frame_number;
const float seconds_ago = frame_diff / System::GetVideoFrameRate();
ImGui::Text("Time: %.2f seconds (%.0f frames) ago", seconds_ago, static_cast<float>(frame_diff));
}
else if (current_state.frame_number > current_frame)
{
// State is in the future (can happen after manual load state)
const u32 frame_diff = current_state.frame_number - current_frame;
const float seconds_ahead = frame_diff / System::GetVideoFrameRate();
ImGui::Text("Time: %.2f seconds (%.0f frames) ahead", seconds_ahead, static_cast<float>(frame_diff));
}
else
{
// State is exactly at current frame
ImGui::Text("Time: Current frame");
}
ImGui::Spacing();
ImGui::Separator();

Loading…
Cancel
Save