From 17d28d377451a4f4d6bbfa9b5175ac929ffa344a Mon Sep 17 00:00:00 2001 From: Anna Date: Thu, 22 Sep 2022 14:13:35 -0400 Subject: [PATCH] feat: include which occurence of a group a file is from --- src/ttmp_extractor.rs | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/ttmp_extractor.rs b/src/ttmp_extractor.rs index 38bba24..79e6757 100644 --- a/src/ttmp_extractor.rs +++ b/src/ttmp_extractor.rs @@ -1,4 +1,5 @@ use std::cell::RefCell; +use std::collections::HashMap; use std::io::{Cursor, Read, Seek, SeekFrom, Write}; use flate2::read::DeflateDecoder; @@ -90,13 +91,18 @@ impl TtmpExtractor { pub fn all_files_sorted(&self) -> Vec { let mut all_files = Vec::new(); + let mut seen_groups: HashMap<&str, usize> = HashMap::new(); if let Some(pages) = &self.manifest.mod_pack_pages { for page in pages { for group in &page.mod_groups { + let seen = seen_groups.entry(&group.group_name).or_default(); + *seen += 1; + for option in &group.option_list { for file in &option.mods_jsons { all_files.push(ModFile { group: Some(&*option.group_name), + group_occurence: *seen, option: Some(&*option.name), file, }); @@ -109,6 +115,7 @@ impl TtmpExtractor { if let Some(list) = &self.manifest.simple_mods_list { all_files.extend(list.iter().map(|file| ModFile { group: None, + group_occurence: 0, option: None, file, })); @@ -414,6 +421,7 @@ impl TtmpExtractor { #[derive(Debug)] pub struct ModFile<'a> { pub group: Option<&'a str>, + pub group_occurence: usize, pub option: Option<&'a str>, pub file: &'a SimpleMod, }