Skip to main content

modde_games/oblivion_remastered/
saves.rs

1//! Save detection for Oblivion Remastered.
2
3use std::path::Path;
4
5use anyhow::Result;
6use smallvec::SmallVec;
7
8use crate::save_patterns::{CaptureSummary, PatternSaveTracker};
9use crate::traits::{DetectedSave, SaveTracker};
10
11/// [`SaveTracker`] for Oblivion Remastered save directories.
12pub struct OblivionRemasteredSaveTracker;
13
14pub static OBLIVION_REMASTERED_SAVE_TRACKER: OblivionRemasteredSaveTracker =
15    OblivionRemasteredSaveTracker;
16
17const TRACKER: PatternSaveTracker = PatternSaveTracker {
18    prefix_rules: &[],
19    file_extensions: &["ess", "sav"],
20    default_category: "manual",
21    recursive: false,
22    exclude_patterns: &["*.bak"],
23    label_extractor: |_, rel| Some(rel.to_string()),
24    summary: CaptureSummary::ByCategory,
25};
26
27impl SaveTracker for OblivionRemasteredSaveTracker {
28    fn save_patterns(&self) -> SmallVec<[String; 2]> {
29        TRACKER.save_patterns()
30    }
31
32    fn detect_saves(&self, save_dir: &Path) -> Result<Vec<DetectedSave>> {
33        TRACKER.detect_saves(save_dir)
34    }
35
36    fn exclude_patterns(&self) -> SmallVec<[String; 2]> {
37        TRACKER.exclude_patterns()
38    }
39
40    fn describe_capture(&self, saves: &[DetectedSave]) -> String {
41        TRACKER.describe_capture(saves)
42    }
43}